In 1898 William Jennings Bryant delivered a speech at the 1896 Democratic National Convention. It so moved the audience that he was nominated as their presidential candidate. And he would be the Democrats candidate for two more runs for the White House (obviously all attempts were unsuccessful). He was a “Hard Core Progressive” but in contrast to today’s progressive he was quite a bible thumper. He is more widely known as a prominent anti-Darwinist who was the prosecutor at the Scopes Monkey trial. But I digress…. In the speech he declared:
“Having behind us the producing masses of this nation and the world, supported by the commercial interests, the laboring interests and the toilers everywhere, we will answer their demand for a gold standard by saying to them: You shall not press down upon the brow of labor this crown of thorns, you shall not crucify mankind upon a cross of gold”
So what does this have to do with programing? Well, having seen a lot of programing trends in my day (my first program was written in FORTRAN on punch cards in high school). I have learned a few things. When Java came out, it held a great promise “write once, run anywhere”and while this promise is not 100% true, it is fairly close (write most, run anywhere with tweaks). It could achieve such success largely by the tight control Sun held over the language. Microsoft released its own implementation in the 90’s and was met with a law suit which concluded in January of 2001 and it bared Microsoft from ever making another Java compiler and libraries. Strangely enough history is repeating itself as Oracle goes after Google for doing the same thing (albeit Google is using an open source project, but it is Google that has the potential to knock Sun/Oracle out of the standard-bearer’s role for Java with its support of its chosen flavor of Java). Will Harmony die on the vine so to speak and OpenJDK become the “standard”. Who knows? There could be years left in this battle.
So where am I going with this article and blog for that matter? There are many parallels to the “gold standard” issue at the turn of the century and the “open source/proprietary” camps of today’s technology stacks. With plenty of history under my belt I can say languages come and go and the Java platform is “challenged” on several fronts one of which is it is not as “Open” as everyone claims it to be. That when push comes to shove the champions of Java are no worse than the evil empire with is drones they call programmers. The ugly truth is the Java community needs a “standard bearer” and a “standard” they can trust. The ugly truth is Java has a performance problem. I never ran a Java program that wasn’t a pig when it came to performance (and I have run quite a few). It’s why Microsoft tried to tweak it to their advantage. It is why Google is not using OpenJDK and is driving the Harmony train. The fact of the matter is when you want absolute performance, hardware matters and the Java community is going to have to fess up to that fact and find a champion who will embrace it (Hint: Oracle ain’t that champion).
So if I haven’t already got you heading for a flame thrower yet, let me kick it up a notch…All in all the CLR is a better engineered approach. C# is a better base language. The .Net libraries are more well thought out and provide much more performance at their base than Java counter parts. The CLR does not suffer from internal strife that arises from the entitlement aspect of open source contributors. Please don’t rant in reply about all the “Microsoft hasn’t innovated and only duplicates” scenarios. This statement is not about innovation, it is about execution and optimization. Sure…all pioneers get arrows in the back as they boldly go where no one else has gone before. Microsoft has profited greatly from the “wait and see approach” and they have taken advantage of all the bodies found along the trail. The question the Java folks need to address is “WHY DIDN’T WE TAKE ADVANTAGE OF THE MISTAKES TOO?” Why does the Java community continue to embrace “5 ways to get to sunday” a decade after the issue “comes” to “consensus” and no one is man enough to step up and clean the configuration. Who can stand up in the community and be “THE” champion…the preverbail “Judge Judy”. It is at the heart of the issue between Google and Oracle. The only reason Google is working with Harmony is they want performance in the stacks they use (Android, Apache) just like Microsoft wanted performance thirteen years ago in the windows stack and the problem is the “blessed” org for correcting those problems is unresponsive at best (well they may get more responsive now that the problem is being articulated by one of the “in-crowd” and not the evil empire from Redmond)
Word to IBM you are not only a dinosaur you’re a dinosaur pussy…you got bullied by Microsoft in the early eighties and your going to get bullied by Oracle. In both cases you didn’t/can’t see it coming and I will go as far as to say you won’t realize it till it is way too late…in the end you [IBM] will pay for the resolution of Java performance improvements. The question is how much will you pay and who is going to help you? I have ten bucks saying that Larry and his crew leaves you crying at the altar after they convince you to go into a joint partnership to sponsor yet another Java SE project that addresses performance and other issues…I even have a name for it…how about jOS/2)