Java's Greatest Missed Opportunity? 362
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.'"
Lemme guess...Microsoft stopped bundling Java? (Score:4, Insightful)
Java is generalistic... (Score:5, Insightful)
In fact, my favorite uses of Java (the language) aren't web-apps at all, they're applications like Azureus [sourceforge.net], and Eclipse [eclipse.org]. 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
Java missed a huge window with Windows apps (Score:2, Insightful)
No no no no no (Score:5, Insightful)
Re:Lemme guess...Microsoft stopped bundling Java? (Score:3, Insightful)
Tell me, if you're put in jail for a crime you deliberately committed, do you blame yourself, or do you take it out on the victim and the justice system?
I thought it was because (Score:4, Insightful)
Java is far from dead (Score:5, Insightful)
Java -- no standards, JVMs aplenty (Score:2, Insightful)
1. Apps/applets have to be coded for multiple JVMs. Is the applet running on Sun's, and what features does it support, is it on MS's, or is it on IBM's? Other solutions like Flash have one and only one executable, so programmers don't have to guess what is running their code.
2. Java is slow and ponderous. I can tell when a website uses Java when my web browsers (multiple) freeze for a number of seconds while it loads the JVM.
3. Java's language and bytecode are pretty much married to each other.
Re:Missed the Boat on Missing the Boat (Score:5, Insightful)
That's basically a fancy way of saying they're dead while simultaneously arguing the opposite. People still write software for the Colecovision, but you don't see anyone talking about the "missed opportunity" to compete with the Playstation, do you?
Poor UIs have been a hallmark of Java Applications. While much of the blame does lie heavily on inexperienced programmers doing GUI work, there's also the matter of Microsoft's interference with the platform. One of the reasons for Java's early popularity in applications was because Microsoft provided an excellent AWT implementation that integrated with their platform. Which was exactly how Sun wanted it. The most experienced company with a platform (i.e. the vendor) would handle the specific implementation of the JVM. The Sun JVM was just a reference implementation, and was not intended for deployment.
Then Microsoft went about their usual backstabbing and Sun didn't have a good feel for how to replace their expertise. The rest is history.
Well, that and the fact that they were trying to write it as an Applet. I mean, you don't just take a full up office suite and cram it into a tiny portion of a Web Browser window! That's not exactly a recipe for a good interface. The Corel concept was good on paper, but the implementation was outright horrid. Unfortuantely, it was probably caused by the misconception that Java == Applets. Something that we programmers still struggle with today.
Or maybe it had something to do with the fact that OpenOffice was based on StarOffice? You know, the Office Suite that was developed back in 1986? However, there are a number of modern OOo components that are written in Java. Database Access in particular is a lot better if you can rely on Java's APIs.
Um... what? JMF is ignored because it's unnecessary. Java has Sound and MIDI APIs integrated into its core. MP3 support can be found in APIs like JavaLayer [javazoom.net]. Video has always been a problem, and not just Java. While there have always been solutions for standardized formats [ibm.com], the majority of video encoding/decoding takes advantage of proprietary codecs. Something that is not easy (or legal) to replicate. Linux makes use of a number of legal loopholes to bring us software like MPlayer and VLC. But these were never viable solutions for a straight-laced company like Sun. And the idea of better OS integration was something of an antithesis to Java technology. So Java focused on its strengths, not its weaknesses.
Java ended up being the next COBOL. (Score:5, Insightful)
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.
Coming from 10 years full-time Java experience (Score:5, Insightful)
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.
Another reason... (Score:5, Insightful)
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?".
Re:No no no no no (Score:3, Insightful)
I'm not sure I follow your logic. Flash is pretty much ubiquitous, and it's not GPL'ed. Although other applications can and do read and write Flash files, Macromedia always kept a lock on the feature set. They just understood better what people WANTED to do with "applets" and restricted Flash to that, while Java was more universal and consequently slower to execute.
Re:Missed the Boat on Missing the Boat (Score:3, Insightful)
I still think *real* web-based applications, like a full-featured office suite, should be possible.
Re:No no no no no (Score:3, Insightful)
Re:Java is generalistic... (Score:0, Insightful)
Just another reason not to buy one!
*dons a fire suit*
Re:Java ended up being the next COBOL. (Score:3, Insightful)
Re:Missed the Boat on Missing the Boat (Score:3, Insightful)
But it's too late. (Score:5, Insightful)
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.
Re:Article's autho works for a rival company, igno (Score:5, Insightful)
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.
Re:Missed the Boat on Missing the Boat (Score:3, Insightful)
Agreed. However, the problem is not one of Java, but rather poor error trapping by the programmer. He should have handled the situation where OpenGL couldn't be initialized rather than assuming that the context will always exist. The same problem exists in many C/C++ programs.
"Mom" doesn't debug an app. "Mom" would troubleshoot to the best of her abilities. (Which, I'm afraid would not be very considerable.) Mr. Eckel asked how you would debug such an app. I answered.
Re:Lemme guess...Microsoft stopped bundling Java? (Score:3, Insightful)
The head java evanglist at MS(now part of the J project) himself said "Who cares about cross platforms. It might have been an issue 5 years ago when I joined Microsoft but it is not now" which was dated from 1997.
What condition would Linux be in today if all the applets were win32 based java apps? Why use AWT when you can use win32,
But since flash has taken off you can go to www.youtube.com under macosx and Linux.
Sun did the right thing and it would have killed java. IF java is no longer portable than why can't it not integrate and be fast? Its an argument they would have lost.
Flex, Flash? Is this really the future of Web2.0? (Score:3, Insightful)
What we're seeing instead is what technologies could fly underneath Microsoft's radar, and become 'more' prevalent and compatible on various
browsers than Java, gaining momentum, and use. The reasons Applets failed are widely known, and obvious--- the weren't Microsoft Approved, and Java
wasn't open source. When Java first started gaining momentum, applets were widely used, due to the vast majority of Desktop users using Microsoft Windows, and Internet Explorer. As sun continued updating Java, Microsoft embraced the JVM, and included it in their browsers. They then started adding ActiveX extensions to Java, and promoting hybridization (although Microsoft Windows specific hybridization with ActiveX) through their Visual J++ development platform. Technically, they tried to gain control of Java, by completely tying it down to their platform through hybridization, and the fact that the majority of the developer market would be using their Visual J++ product[http://en.wikipedia.org/wiki/Visual_J%2B%2 B] (See litigation), unwittingly making applets that would work only with the Windows platform. Sun, then took Microsoft to court, pointing out that they were in violation of the virtual machine licensing agreement. The result was, a large period of time of political conflict between Sun, and Microsoft--- and a freeze in development and adoption of advances in the Java language in Internet Explorer as Java itself advanced leaps and bounds as a language. By the time the political turmoil settled, another technology, Macromedia Flash, had managed to squeak by unnoticed by Microsoft, and unadulterated (and considerably more controlled and proprietary than Java). On the Linux side of the spectrum, the explanation is much simpler, in the fact that Java was just open, but just closed enough, to rub open-source developers the wrong way. There has been considerable reluctance to buy into the Sun controlled Java community process, by the open source community, and to include Java components into open source platforms. Flash, on the other hand, provided absolutely no developer tools for Linux (Until now with the Flex compiler), and only a single proprietary plugin. In reality, it has been much more closed, controlled, and unavailable as a technology useful for open source development--- but has been less likely to embed into and pollute open-source code.
And now, that Java is open sourced--- applets have gained a fairly bad reputation, due to users perceptions of the lack of pro
Re:Java is generalistic... (Score:4, Insightful)
Java's strength is on the server side. Why? Because I can take code and migrate it from machine to machine, OS to OS, with little care for specifics of such moves. Hardware comes and goes, but business code lives forever (and if you doubt this, go look at the financial software run by any older large corporation, or the government for that matter). With Java, obtaining new hardware usually involves merely installing the JVM/application server and software, and you're up and running.
Re:Flash and Plugins (Score:5, Insightful)
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.
Re:Missed the Boat on Missing the Boat (Score:5, Insightful)
Yet I still note that JAVA developers of all flavor are perhaps the most in-demand (and highest paid) professionals in the Software development community. I still note a healthy and growing JAVA community. When I use 'stumble' to crash about the web, I see wonderfully designed JAVA Applets everywhere, fulfilling all sorts of purposes. I see IT shop after IT shop settling on JAVA as the tool of choice to solve problem after problem. Successfully.
Meanwhile, I have yet to see a proliferation of Web applications (with the notable exception of AJAX and
I have developed in JAVA for nearly a decade, and before that I used C++ and before theat C, LISP and others. I hear about the Horrible GUIS that you are stuck with in JAVA, all the while I write GUIS that are animated, colorful, easy to use in JAVA. I hear about the superiority of other Serverside 'frameworks', try them out, and find that JAVA Enterprise offers more features, more security, more scalability and etc. I hear about the technological 'legacy'-ness of JAVA while I delightlfully learn about and study all the new technologies and features JAVA adds to itself.
Now, to do JAVA well, you really have to Grok OOP and software architecture (and thats not just knowing the standard design patterns and how to use EJB or hybernate!). But I would argue to do any good distributed scalable app, you *need* to know these things as well. Its a sad fact in the software world that most programmers are godawful hacks. Having frameworks that make it easier for godawful hacks to create Enterprise-style apps is not necessarily a good thing.
So when I hear the slashdot commnity screaming the death of JAVA, I am reminded of listening to the recent interview with Cheney about the rosy situation in Iraq, filled with 'tremendous successes', and I wonder the same thing: 'when have you guys ever been right on this topic'. The Java discussion here is too polluted with FUD from the open-source fans (of which I am one, don't get me wrong). You folks were wrong a year ago, two years abo, 5 years ago... Why should I, a professional java developer doing good work in JAVA and publishing useful products, listen to any of you?
So, let the flames begin
Re:Missed the Boat on Missing the Boat (Score:4, Insightful)
Re:Missed the Boat on Missing the Boat (Score:4, Insightful)
I say this as a Java developer of 11 years. (1996, baby!) Yet I am perfectly happy logging in and telling the world that Applets are dead. In fact, I can't wait for them to become a distant memory. They have done so much to tarnish the reputation of Java that it's not even funny. Java has found much better uses in a variety of other industries. It's time to let DHTML and AJAX mature into the role of rich web content.
Re:Java stuck at 1st Generation (Score:3, Insightful)
I'm reminded of an HP print server (180wtfe) whose administrative web interface was packed full of applets. My response to the interface, "Why Java applets?" Applets were used for a very short navigation menu and even for info screens that had nothing other than text in them. It's almost as if they used applets just to fulfill the product's buzz quota.
In short, it would have been much more usable had they stuck with straight HTML.
Re:Lemme guess...Microsoft stopped bundling Java? (Score:3, Insightful)
The problem with Java as I saw it is unbelievably bloated. No, I don't want to download the extra 12 megs of java interpreter. And at the end of the day, where we're at now, most things can be done in Javascript.
Java came. Java went. It shall not be missed any more than Cadol II was.
M$ Chickenshit (Score:3, Insightful)
Bruce is missing the point... (Score:4, Insightful)
"JavaScript has been around since, effectively, the beginning of the Web, but the browser wars made JavaScript inconsistent and thus painful to use."
Okay, let's forget for a minute that JavaScript isn't Java. That aside, the inconsistency of JavaScript during the time that Microsoft was illegally killing Netscape through the use of its monopoly was by Microsoft's design. It was using the now famous "Embrace, Extend, Extinguish" strategy. This was not the fault of the technology and there is nothing anyone can do to prevent Microsoft from playing dirty. Well not unless the Justice Department remembers where it left its balls.
And Bruce gives us this little bit of pseudo wisdom:
"If you use Firefox, how many sites do you visit that are at least partially unreadable because they've been created only for Internet Explorer (IE)? It seems to me that things are getting worse; I'm seeing more, not less sites that don't work right with Firefox...to the point that I'm seriously considering going back to IE.
Again, the incompatibilities are by Microsoft's design. A strategy to unfairly and illegally maintain its monopoly market share by (you guessed it) embracing and extending "open standards." Good one Bruce, switch back to IE and let Microsoft's dirty tactics work. It looks like the Justice Department isn't the only one who has lost its balls.
Opinions are like a-holes... (Score:5, Insightful)
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).
Re:Lemme guess...Microsoft stopped bundling Java? (Score:4, Insightful)
If you have any doubt what Microsoft was trying to do, let me quote the recently released Microsoft email on the subject:
"Screw Sun, cross-platform will never work. Let's move on and steal the Java language."
- Visual J++ product manager.
Re:The answer is obvious (Score:5, Insightful)
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.
Re:Java -- no standards, JVMs aplenty (Score:2, Insightful)
It's easy to see who uses a technology and who just carps about it. On to the debunking:
1) Better inform the developers of Eclipse, Netbeans, Oxygen, Limewire, GWT, Tomcat, Azureus, ... never mind, the list is too long. There is no other technology even competes for multiple platform application development.
2) Wha?? How can you tell? Are you somehow privy to implementation details of all these slow web services? Sounds like either a major security leak or you are omniscient.
3) I don't even know what the hell this one is about. Not enough logic here to even argue with. Java is not the only language running on the JVM. And in what way does C# resemble C++? It's closer to Java! .NET is not unsuccessful, but it's hardly a raging success outside the die-hard MS development houses.
Oh the humanity!
Ciao,
Rick
Re:Java -- no standards, JVMs aplenty (Score:3, Insightful)
I've just spent two years as part of a team working on a web app that I developed on Windows, built under Sun's JVM, which was then deployed under Linux using BEA's JRockit JVM.
None of us had any cross-platform or cross-JVM issues.
In fact, I've spent most of the last 7 years writing Java under a variety of JVMs, mostly on Windows, that was then deployed to Linux or Solaris machines, often running different JVMs. I've never seen a single environmental issue that was anything to do with Java (the only ones I have seen have been due to issues with
I wouldn't claim to be the world's most experienced Java programmer, but my experience most certainly does not support your assertion. Do you have any supporting evidence for it?
Re:Missed the Boat on Missing the Boat (Score:3, Insightful)
A single comprehensive library would help a lot. (w3schools is good, but doesn't have enough macro information).