BASIC was supposed to be the first language every programmer learned. Some platforms, like OpenVMS gave this language unprecedented power. Then Microsoft got a hold of the language and really ran it into the ground. You can’t even run Visual Basic code across multiple MS operating systems. Nice Job guys.
After learning some hard lessons with Visual BASIC, MS came out with DOT NOT. This was supposed to lock the entire Web into using only MS products since it only worked with MS products. So much for that idea. The release of Windows Vista has proven once and for all that MS has no idea what it is doing and companies are abandoning the MS platform in droves.
Remember how Java was going to be the Utopia of portable languages. People laughed when I told them “just give it time to fail”. They aren’t laughing anymore. Broken Java implementations are strewn across the planet. Only the simplest of applications work when compiled on a 32-bit JVM then run on a 64-bit JVM and vice versa. Now there are enough different flavors of Java out there to bring havoc upon the land. You can’t even use the old “Least Common Denominator” trick when writing code. For those of you who don’t know what the LCD trick is, it means you use the oldest, most widely supported version. Just try running code written for Java 1.0 with a new JVM and see how far you get. So much has been obsoleted that only the simplest of programs will run.
Today I encountered the final nail in the Java coffin.
static final long serialVersionUID = 1;
Yes, the creators of Java finally had to admit it was a write once and run a few places language. Serialized Java objects now need to keep track of their versions because if you load the object into an environment which has a newer version of the object, it pretty much won’t run. Of course, stuffing a static final data value into the object class really broke some tried and true Java tricks. People who once created container classes for things like error objects can no longer do this since each of the contained objects will have one of these definitions and the compiler cannot allow multiples.