Sun about to Supernova? Too much caffeine?
Sunday, August 26th, 2007No, I’m not talking about the star at center of our planetary nebula. I’m talking about the public company with the NASDAQ stock symbol of SUNW — Sun Microsystems. Well, it was SUNW until this month — someone at Sun seems to think that the ersatz ticker JAVA would be a great way to capture the new and improved Sun.
What could possess a company to change their stock symbol to one of their products? A free product. An aging product. A bloated and slow product. Wow… that’s some great name association. Even if you think Java is the best paradigm to ever roll across the computing landscape, Java is more a sign of the successes of the past than any vision of the future. Either way, it gives me a reason to blog about Java, something I’ve wanted to do for some time – WARNING – short novella ahead.
Listen, I was a full-bore Java developer for about 7 years. I went to three JavaOne conferences, passed my Sun Certified Java Developer certification, started and ran a fairly large Java users group, and lived the Java dream. I was a fan. Big-time.
Java is a great software development language. A wonderful blend of object-oriented characteristics with the C/C++ syntax we all know and love(?). But beyond the language, Java would have died a horrible death in it’s infancy if it wasn’t for it finding it’s niche in the server-side web world. Java in the browser sucked (it still does). Java as a fat-client sucked (it still does). Cross-platform is still a nightmarish pipe-dream that never attained it’s hype. At Java inception, the browser and cross-platform were the mantras of the Sun marketing machine. We were going to all live the “Network is the Machine” fantasy. Yet, if it wasn’t for the mighty servlet, Java probably would have never survived those heady dot com days.
Java’s success was the relatively simple and easy way developers could build web applications. Our only other tools our disposal were C/C++ CGI apps and Perl CGI scripts. Servlets and JDBC rocked (and still do)! I could build database-enabled web applications with two simple frameworks in a powerful object-oriented language. More on the fall from web application grace in a moment…
So where are we now? Sun never gave up on Java on the client (well, really, they did, even though the marketing machine hasn’t). While the VM has gotten faster, garbage-collection is less annoying than it used to be, and the abysmal AWT has been superceded with the slightly less abysmal Swing, the desktop is still pretty much hands off. Java’s UI is still too slow and unresponsive while providing a horrible user experience compared to native APIs for building full-blown fat client applications. Sun always said that faster hardware would solve the problem of performance… it didn’t. People like native-feeling, responsive fat-client apps. The handful which have found some success are generally development tools – such as Eclipse and database tools.
To be honest, I think Eclipse sucks – and that’s even with them throwing out the cross-platform Java UI layer and using a proprietary / native replacement. I haven’t found any honest developer who admits to liking it except for those with some vested monetary gain from it’s success. I couldn’t imagine ever choosing Eclipse over Visual Studio, Xcode or even a powerful text editor like TextMate. The only reason Eclipse exists is that it’s pretty much the only Java IDE left in existence and it’s backed by the corporate establishment (IBM, Bea, etc). The same establishment sees Eclipse as a platform for building a bunch of mediocre enterprise business applications. If I was to do Java development, I’d choose TextMate in a heartbeat. Database tools have found success primarily due to JDBC and the proliferation of datbase drivers for pretty much every database. JDBC really is good – I’m a fan.
In the browser, the once hyped applet can barely be found – it’s only success found in the backstreet bars and hangouts of the casual gamer – even there, usually as the old, ugly sister of the Flash game. Fresh and exciting technologies like Air and Silverlight are on the horizon, so even this small cranny will be rooted out shortly.
If the desktop is dead to Java, did Java find any other markets? Sun came up with the idea of fracturing Java into three schizophrenic personalities – J2EE (Enterprise – aka, server-side), J2SE (the standard, core language and libraries), and J2ME (the mobile edition). I already mentioned the server-side and what was to to become J2EE, which I’ll speak more to in a moment. Sun found a small star in the burgeoning mobile phone space (and set-top boxes) and J2ME. The somewhat heterogenous hardware used in the mobile market along with the need for a simple, ubiquitous development platform created an opening for Java. Sun has definitely made some headway here. Unfortunately, the same negatives that apply to the desktop generally apply to the mobile space, except compounded by the limited computing resources. As a user, I would much prefer a native application – be it C/C++/Brew or native development on Palm, Symbian, etc.
Desktop – dead. Mobile – dying. Where does that leave Java? The saving grace of Java – the back-end, right? From the amazing servlet was born Java’s saving grace. Well, the servlet, along with a great language and JDBC. As I mentioned before, JDBC still rocks. Oh how I wish something like JDBC existed for the Mac & Obj-C/Cocoa development. ODBC need not apply. Sun, seeing the potential of the server-side web market immediately put it’s best minds together to build light-weight, powerful, easy-to-use frameworks and libraries to empower the developers of the world to build amazing web applications, right? Uh, no. Sun formed big committees to build the most cumbersome and complex frameworks and libraries known to man. The abomination known as the EJB was invented. Knee-jerk reactions to VB and ASP’s bore forth the unmaintainable JSP. Lack of vision and good frameworks led to an unending line of complex frameworks to make web development “easier”, like Struts. Bloat. Ugliness. Complexity. Design by committee.
What does complexity and bloat demand? Complexity and bloat require huge, expensive tools and expensive appication server software running on expensive hardware. What do expensive tools, expensive application server software require? Expensive consulting services. The waters were chummed with the blood of the developers – in come the sharks – IBM, Bea and the mentally-challenged cousin, Sun. I can’t put it any more succintly than this: The death of Java can and will be traced to the lack of vision by Sun which caused the bastard J2EE specification, which begat the greed-induced IBM (and Bea) to further push J2EE down this self-serving path of destruction to the tune of millions of dollars in software, servers, and consulting services. While Sun can be blamed with it’s inception, I think IBM really is most to blame. Everyone thought IBM was the friendly, open-source steward – the friend of Java developers of everywhere. No, they were the giant mosquito, sucking the life-blood from the software developer. The IBM marketing machine sold it’s products and services to the easily influenced middle-management and executives of big corporations, and the developers suffered. A book could be written on this performance. I don’t have the stamina. It’s too frustrating. I spent my years in an IBM shop as the the executives were wined, dined (and sent on golf boondoggles) – bringing back their mandates of expensive applications application servers, messaging middleware, security products, workflow, and the unending list of tack-ons that were supposed to make the Java developer’s life better. When they didn’t, IBM was sitting at the ready to send in their expert $200/hr services staff in to pick up the pieces. All the time, the developers in the trenches being labeled by IBM marketing as incompetent for not being able to piece to together the staggering array of half-baked technologies. Don’t you just want outsource your entire development organization to IBM? You might as well outsource your security and infrastructure departments as well, because they’re about as screwed as the developers are.
Ok, so I’m bitter. A couple deep breaths and I’ll be ok.
Where does that leave Java? Java is becoming today’s Cobol – a once powerful, useful, heavily used, and very mature product — reaching it’s twilight years. The biggest difference is that Java doesn’t make you’re eyes bleed like Cobol does (although the J2EE specification and the vendor greedware does).
Due to some fast-footedness over the last couple years in the complete overhaul of J2EE and more community (developer) involvment, Java has probably been yanked from the precipice of utter and complete developer rebellion that was inevitable with it’s prior direction. Even still, I can’t think of anyone who would want to start a Java project these days except for the slow, bureaucratic enterprise shops filled with a cadre of Java engineers (or offshore developers) and a bunch of IBM management/executive whores (sorry). Not many developers would choose to be subjected to the machine of IBM and the sludge of even the improved J2EE. While Java may still be the most “employable” language currently and will likely remain there for a long time, notice that Cobol is still in the top 20 as well. Plus, many of the best minds have already jumped ship and those who haven’t have been reduced to being the slaves of the corporate establishment. When scripting languages such as Ruby and Python are considered the best thing since sliced bread (and the answer to the J2EE greedware hegemony), you know the ship has sailed. (NOTE: I have nothing against Python and Ruby (or even PHP) – I think they’re cool – but they are still high-level scripting languages with the consequences that they entail. It’s proponents excuse these shortcomings in much the way Sun excused Java’s shortcomings in it’s infancy. Shortcomings for which it hasn’t overcome. Someday we’ll make the transition to a higher level language, just as we evolved from assembly to C/C++/etc, I just don’t think we’re there yet. That doesn’t reduce the usefulness of these scripting languages – they just can’t be the near-ubiquitous replacement language such as C, C++ or even Java).
So, I think there is some maximum blog length I need to be aware of. I still love Java the language. Personally, I would rather use Java (the language) than practically any other. If I could use it with native UI frameworks (i.e. Cocoa), compile to binary executables with a limited / fast runtime environment, and blessed with a set of new lightweight / powerful libraries for the web, XML, and higher-level database access, I would be in heaven. Until this nirvana occurs, I’m going to be using C++ or Obj-C for fat-client applications and Ruby or PHP for web development. I’m not fond of the hybrid bastardizations of fat / thin, so I don’t have to worry about making the decision between all the proprietary options in that space – Silverlight, Flash, Air.
Like most anything in this industry, when something becomes a stooge of big businessess, the writing is on the wall. Coming full-circle, why would a company want to associate itself with a spent has-been and make such a boneheaded move? The only conclusion I can come up with is they want to ride into the sunset with former greats like Commodore, SGI, and Pets dot com.