Who Shot Desktop Java?
So recently I’ve been dusting off the old Java books. It was my first professional language back in the startup days, and I remember loving her once. The gentle way in which you massage real-life things into methods and fields. The way the API designers seemed to think of everything, at least until the next SDK came out and what it was changed. Even JSP was beautiful if you crossed your eyes a little and threw back a few shots.
I remember during the Java affair how much I wanted to believe in “Write Once, Run Anywhere.” Jens Alfke has a little blurb on his blog that outlined some of the reasons why the Java desktop never amounted to much.
Desktop Java never worked because Sun tried to build their own OS on top of the real OS, duplicating every API and feature. This led to terrible bloat, making every app as heavyweight to launch as Photoshop. Worse, the GUI portions of the Java platform are awful, because Sun is a server company with no core competency at GUIs. The APIs are too clumsy to code to, and compared to any decent Mac app, the results look like a Soviet tractor built on a Monday.
There is a lot to what he says there.
The virtual machine concept is inherently heavyweight, since you need to create a lowest-common-denominator computer, operating system, and related services every single time a program runs. The freely available tools (especially early on) were also pretty crappy. Even then, building GUI apps using code alone was a royal pain in the ass. Don’t even get me started on Swing. The thing was a dog with a capital Arf.
Despite all of this, I don’t think the fault lies in anything fundamental to Java. The language’s failure on the desktop is nothing more than a series of mistakes by its steward, Sun Microsystems.
When Java was originally seen as the hip new way to add interactivity to websites via Applets and got all of the attendant media hype, they seemed to drink their own punch. Like a kid with a shiny red ball, they held it up for everyone else to worship and made the bullies eat worms for a chance to play with it. They didn’t realize quite how tentative their position was.
The first thing they should have done is realized that any desktop-oriented platform that didn’t work with Windows seamlessly was doomed to be an also-ran. Surely they could have worked on better integration with the Windows shell, or at least partnered with Microsoft to make it happen somehow. Instead, they made Microsoft beg for a license and had them build a bastardized VM of their own which ended up hurting the platform’s reputation much more than it helped it. If Java apps were identical to install and run to Windows apps from an end-user perspective, despite whatever internal mumbo-jumbo needed to happen to make it run, they would have been seen as viable alternatives rather than bastard stepchildren.
Second, they decided the answer to the problem of advanced widgets was to implement Swing, in which every single widget is drawn on a canvas by the JFrame. Nevermind the fact that each native operating system has the ability to draw widgets, and there is no conceivable way that Sun could keep its drawn widgets up to date with every target platform. Or that drawing everything is painfully slow and makes the interface feel unresponsive. Or that the “native” Metal look and feel was ugly. IBM got it right eventually with their SWT toolkit, but by then it was too late since Swing was “official” and entrenched, and all the tools supported it.
Third, they needed to get the official tools to a respectable state much earlier on. I used NetBeans back in the Forte for Java days, and let me tell you it sucked. Any non-trivial project could hang the interface, which wasn’t the most responsive to start with. The GUI designer and layout manager system was damn near incomprehensible, and buttons and textboxes would take on a life of their own sometimes. It was one of those things that was technically correct while being simultaneously infuriating; sure, it might have been user error in not knowing the correct order in which to add Panels and LayoutManagers, but c’mon. You shouldn’t need to be a rocket scientist to build a login form. As Jens noted in his article, good tools can make you fall in love with a platform, as he did with the Mac OS X. Similarly, many Windows developers swear by the MS Studio environment. Sun just dropped the ball here.
It’s rare that a new computer platform and language get mainstream coverage, and Sun managed to make that happen somehow with Java. They had an opportunity to turn it into something better than what it was, but instead got blinded by their own vision and an unhealthy amount of smirking in Microsoft’s direction. The platform was forced to retreat to the server, where it eeks out a decent if undistinguished living serving web pages and providing cross-platform enterprise admin tools.
Oh, what could have been.
Til next time.
Posted: January 24th, 2007 under Technology.
Comments: 6
Comments
Comment from Linuxhippy
Time: May 15, 2007, 9:32 am
Well Sun made a lot of mistakes in the past (most noteable java-1.2.x should have not been released the way it was) and maybe even makes mistakes today but I think the whole situation is a lot better.
Swing looks really good and is from the performance point of view its completly ok (its even faster than SWT on Linux), memory consumption isn’t such a big problem (30mb for an average app is ok if you’ve got 1-2GB).
The only problem is the relativly slow startup and some installation- and update problems on windows.
lg Clemens
Comment from Futurman
Time: September 7, 2009, 4:08 pm
Полностью поддерживаю лестные отзывы о работе авторов, действительно все на высоте.
Comment from Meleni
Time: September 9, 2009, 7:44 pm
Мне интересно, сколько средств вложили в раскрутку этого блога. Кто как думает?
Comment from Kinder
Time: September 12, 2009, 2:49 am
А мне нравится этот блог, только авторам надо помнить , что посетители разные бывают. Короче учитывайте возростной ценс посетителей.
Comment from Adler
Time: September 18, 2009, 6:30 am
Вроде все в порядке, только по ссылке почему то не могу перейти
Comment from ITelekom
Time: September 22, 2009, 2:36 am
поучительно!!!! гы гы гы

















Write a comment