Java's Greatest Missed Opportunity?
jg21 writes "It looks like Bruce Eckel has hit the nail on the head again. No sooner did he finish stirring debate by writing about the 'departure of the Java hyper-enthusiasts,' previously discussed here on Slashdot, than he now rubs salt in the wound by highlighting in AJAXWorld Magazine how and why Java missed its golden opportunity to become the language undergirding Rich Internet Applications. He comments: 'We must ask why Java applets haven't become ubiquitous on the internet as the client-side standard for RIAs....This is an especially poignant question because Gosling and team justified rushing Java out the door (thus casting in stone many poorly-considered decisions) so that it could enable the internet revolution. That's why the AWT and Applets were thrown in at the last second, reportedly taking a month from conception to completion.'"
Java eventually found its niche in server side programming. At that point Java Applets died. They were a nice idea, but they're effectively dead now and the web is better for it. There was no missed opportunity, only an opportunity that didn't pan out. In exchange, however, Java gained new opportunities in consumer areas like Video Game Development. Commercial games are slowly starting to deploy Java technology. But since one OpenGL/DirectX game looks just like another, who can tell it's Java? And that's a beautiful situation to be in.
Oh, and guess what's driving many (most?) of the SOAP/XML/RPC interfaces that AJAX applications use? You guessed it.
I bet 10 bucks that Mr. Eckel's 3D card drivers are out of date or not installed. The application he linked to uses JOGL (Java OpenGL bindings), so if his computer is unable to run OpenGL, he will be unable to run the app. It's a rare issue, but it happens. The easy way of debugging the app is to either bring up the Java Console through the Coffee Cup in the system tray, or to go into the Java Web Start settings and enable the console (or logging!) there. Easy, peasy.
Oh, and Mr. Eckel? Web Technology has not yet begun to fight. At least if the WHATWG specs have anything to say about it.
Javascript + Nintendo DSi = DSiCade
Honestly? I'm glad Java applets' popularity has died. I have always hated pages that make use of Java, primarily because the applets are traditionally slow and clunky, and cause all sorts of problems for the browser.
Flash usually loads fast, has good response, and have great interfaces. Java usually loads slow (and by slow I mean that in the time it takes the Flash applet to download and be ready to use, the JVM has just started) and has a poor interface with slow response. More "industrial" use of Javascript has also removed the need for many of these client-side applications.
Good riddance is my response.
"What do you despise? By this are you truly known." --Princess Irulan, Manual of Muad'Dib
/)
Java technology and library development may have been steered towards web-oriented selling points, but the language itself isn't inherently oriented towards helping web developers and the like. Specialist scripting languages can always be developed to make specialist tasks faster - and Java (the language)is far too purely object oriented to be as specialist-efficient as some of the less object-oriented languages, without really stretching things.
In fact, my favorite uses of Java (the language) aren't web-apps at all, they're applications like Azureus, and Eclipse. That's perhaps what Java (the language) is really best at so far from my perspective - cross-platform development of portable frameworks. It's because of that, that Java (the language) has a stronger future than Java (the technology), as a strongly object-oriented language developed to be portable.
Ryan Fenton
The problem with Java was not an implementation or technology one. All first generation implementations are flakey (think Mosaic). The problem was that Sun controled it too much, so it was pre-destined to never become ubiquitous. If they GPL'd it from the get go, it would have been a shoe-in, game over, touchdown, and go home. Now they have, but by now it's probably a day late and a dollar short.
Look at the cell phone market. Java is everywhere, your blackberry, nokia, and even many windows mobile devices run midlets (Java applets for phones). It is a huge market, much bigger than the internet. More people have cell phones than have computers.
---- aut viam inveniam aut faciam
Java has a strange history. It was supposed to be a lightweight semi-interpreted language for use in web browsers. It ended up being the replacement for COBOL as a business application language, something nobody expected.
What seems to have gone wrong in applet land is that, early on, Sun produced a huge collection of mediocre libraries. This, coupled with a linkage system that brought in the whole library if you needed any part of it, bloated applets to excessive size. Remember, at the time, most users were on dialup. So that just couldn't work.
Also, as an aesthetic issue, Java's early fonts and visible objects were ugly. That was enough to turn off web designers.
On the server, none of this mattered. A memory-safe language with decent execution speed was a huge win. When a Java servlet fails, you get a reasonable error message, not corrupted memory. That was enough to make it a success on servers.
Java bloat continues to be a problem. There seems to be an excess of "packaging" associated with the language. Not clear why.
The problem was, the programmers they hired were not good designers or architects. I was forced to sit on the sidelines and watch as my predictions of poor requirements, poor design, and poor process turned into schedule nightmares, budget balloons, and gargantuan maintenance efforts proved to be true.
Afterwards, those administrators blamed the programmers, of course, but they also blamed Java itself. It was incorrect and unfair, but true nonetheless.
Looking back, the tech bubble attracted a lot of novice programmers who got hired at inordinate salaries to produce a level of quality they could not meet. As the bubble ended, many of these poor performers left but unfortunately some remain. My greatest fear is taking over for someone who "knows" Java because chances are they know how to write Java but they don't know how Java works.
I am doing my part. I am teaching Java at a local community college where I make a point of teaching my students how Java works. I also explain basic but good coding practices and design practices. I hope it makes a difference in the long run. Arguing with the administrators sure didn't.
@HbFyo0$k8 tH!$
If I see something neat and cool done in HTML, JS, and CSS, I can very easily rip it and change it and stick something like it on my web page. Back in the old days of the web nearly all design was done like this.
You can't do this (easily) with a Java Applet (unless the author makes the java source available) or a Flash application. If you want to figure out how something was done you have to dig into programming and work it out for yourself from the ground up. The openness and readability of HTML, JS and CSS make it really easy to get in above the ground floor level. Sure, you can still design horrendous web sites, but you can also design great web sites.
HTML spread because it was easy to write and didn't require learning or using some hypertext authoring application. Perhaps Java applets failed because people took a look at the Hello World applet and thought, "WTF?".
To be clear, I'm not saying that Flash didn't eventually meet its goal. When Flash was first introduced, we ended up with entire websites written in Flash. Not to mention the overriding need to add those damn animations to corporate websites in the same manner that everyone's homepage had a reflecting pool or tree menu Java Applet.
Flash would have lost out as badly as Java, but judicious use of the plugin combined with an extremely small runtime brought it back from the brink of failure. But only flash. You'll notice that the spinoff technologies like Shockwave have all but disappeared, except for particular circumstances like some Web Games. (The same area in which Java Applets continue to live on as Zombies.)
Javascript + Nintendo DSi = DSiCade
Wait, the guy who has been hired by Adobe to be the tech evangelist for Flex doesn't like Java? (Click on his profile in the article)
What's this you say, he is writing an article which bashes Java for writing web applets and uses a series of questionable logic approaches to advocate Flex for web applets?
Sheesh, if I was writing the summary for this article, it would have been "Java's Greatest Missed Opportunity WAS NOT BEING THIS AWESOME PRODUCT CALLED FLEX WHICH ADOBE MAKES! BUY FLEX!"
Congratulations all of you who are arguing about the merits of Java - you've been astroturfed!
It's probably too late, though. Even if it works now.
Consider VRML. Remember VRML, 3D worlds on the desktop.? Too slow, too much bandwidth, lousy framerates back in 1997. Load up an old VRML browser today. With modern GPUs, it looks great and works smoothly. Nobody cares.
Java is very good at what it does but far too often it's shoehorned into things it's not good at doing. If Eckel thinks flash makes a better UI I'm inclined to at least take a look at it. Though personally I tend to despise flash web pages -- seems like most of the ones on the Internet are designed to just annoy me.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
Agreed. However, Shockwave had a variety of advanced technologies developed after Flash that were unavailable to Flash until recently. (Some never made it there.) Features like Hardware 3D and Classic Console Emulators seem like they should have kept Shockwave on the map. Unfortuantely, they didn't. So Macromedia/Adobe have been smart by running with what works.
Sun did a similar thing to Java with the J2ME spec. J2ME is the cutdown version of Java that far surpassed its big brother in end-user popularity. The only difference is that J2ME had to change platforms to do it.
Javascript + Nintendo DSi = DSiCade
I agree. This guy found a proprietary solution that fits his purpose...and he's promoting it. This is a fluff piece for Flex.
He also said "We do see relatively amazing Ajax-based tools like GMail and the other Google tools which are slowly seducing me (but I repeat: it took Google to create those, not Joe garage-programmer)."
Look, Google did not invent AJAX. They were just the large company that had the balls to launch a major application using the technology. Joe gargage-programmer had been developing "AJAX" application for years. However, they did so on smaller custom apps. Also, many programmers were forced to support legacy browsers which severely limited the role of AJAX and its ease of implementation.
Google wasn't the first company with the technology to launch an AJAX app...they were the first ones with the balls to launch it. They basically drew the line in the sand on browser compatibility (with the help of Mozilla.) Microsoft could have done this years earlier...but chose not to. They basically decided to pursue and promote web standards and protocols...and brought javascript back to the forefront.
I don't know how Flex fits into this, but didn't Adobe hand over the code to Flash to Mozilla? I believe soon, REALLY SOON, you will be seeing more Actionscript/Javascript interaction natively in the browser. When that happens maybe you could return that license of Flex you paid so much for.
Also, the writer of the article states this in his article...
Yes I know he wrote (and supported) Java books in the past, but his current career focus is somewhere else, and I would ask all of you to consider that it may be coloring how he looks at Java currently.
"The future can only affect the present if there is room to write its influence off as a mistake." - Yakir Aharonov
Gates explains that implementing AWT was a disaster for Microsoft because Java apps look as good as windows applications, see http://www.iowaconsumercase.org/122106/PLEX0_5879. pdf
Read how Gates dislikes JFC at http://www.iowaconsumercase.org/122106/PLEX0_6109. pdf
Read about plans to 'undermine Sun' at http://www.iowaconsumercase.org/122106/PLEX0_6114. pdf
Then read Microsoft's view on implementing JDK 1.2 (to quote 'no fucking way') at http://www.iowaconsumercase.org/010807/PLEX_2708.p df
So who limited the JDK to 1.1.18 ?
Think global, act loco
everyone's got one, and I am or can be an asshole at times :), so I'll chip in.
:), because 1) no garbage collection (memory leaks get by even the best/most disciplined of software engineers/programmers), 2) the god damn syntax of C++ and its overloaded object model was _overkill_ for most newbie programmers. There was just one too many ways to blow your head off by C++'s powerful object model (think..pointers, references, new/delete, virtual destructors, 'smart pointer', exception handling was immature, copy constructors, assignment operators, operator overloading, reckless use of STL with pointers versus static objects, etc etc etc), and 3) 95% of software out there isn't system software (OS's, drivers, embedded) but application software. Hell, even for embedded nowadays one can use J2ME, and it works admirably well. This means if and when Java or a language like Java with enough similarity with C/C++ came by and removed all the pain points of its predecessors, it was bound to succeed.
Java _stormed_, not just merely took over, but literally stormed the programming world much, as I understand it even though it's a bit before my time, like COBOL did. When I started my first job, 1996 as a fresh grad, C++ reigned supreme still for _application_ software.
Slowly but surely, with the mass commercialization of the internet, the Java tornado came over the C++ camp, and blew it away (or I should say converted it, en masse).
Java hit & solved some extremely important painpoints with C++. No one ever accused C++ of being inferior as a language, as a matter of fact, the STL has yet to be repeated in Java (and no, generics aren't same as STL - STL yields more power), however, its demise was inevitable, again IMHO (the asshole talks now
Java succeeded. It did not miss any opportunities. You can elaborate on the benefits of more dynamic languages today, like Ruby, Lisp, whatever, but as it stands, de facto, Java is the standard today for most web applications (and it is making huge inroads into embedded even realtime applications too).
'A lie if repeated often enough, becomes the truth.' - Goebbels
Note that Active-X failed as badly as Java Applets, which makes one think that perhaps this was not the issue in Java acceptance.
The reason that both Java Applets and Active-X applets failed where AJAX has taken off is that JavaScript and XmlHttpRequest are available as part of and are deeply integrated with every modern browser.
The cake is a pie