Don’t Cry for Me, Java Developer

Date June 13, 2006

Via MacRaven (again, the hits keep coming), who offers a stirring defense of the AJAX development strategy, I found this Alex Krapf article where he vents his frustration at finding Java developers showing interest in the decidedly non-Java concept.

Now, Dave at MacRaven is probably a little over-enthusiastic when he says:

About the only thing that Java can do that AJAX can’t is write files on the client: and that’s considered a security hazard anyway! My money’s on AJAX for Web 2.0 applications – Java’s so 1990’s.

That doesn’t so much strain credulity as knife it in the back in a dark alley and steal its wallet. He’s right though in regards to Java applets—those annoying bits of code that a decade ago froze every process on Mac OS 7 while the Java Virtual Machine spun up.

Krapf (I’m going to call him Krapf, it’s a great name. “Krapf.”) says there’s no need for AJAXy stuff because it just mimics the behavior of Java Applets:

It seems like most legitimate use cases of AJAX make a browser-based application behave more like a rich or smart-client application. What’s wrong with rich or smart-client platforms for developing rich or smart-client applications? What’s wrong with serving a rich, interactive GUI (graphical user interface) as a Java applet or even as a Java Web Start application, for example?

He may have meant that as a rhetorical question, but that sounds like an invitation.

The AJAX stew of HTML, CSS, Javascript, XML/JSON, and enough other acronyms to start your own Department of Defense project may have a lot of flaws, but I don’t think anyone can argue that the browser comes up on top when it comes to the richness and flexibility of the presentation layer. On the other hand, JAVA has the perfect user interface toolset for people who enjoy being kicked in the nuts. Show me an advocate for SWING and I’ll show you someone who shouldn’t be left alone with household pets. HTML and CSS is clearly far superior, mature, and has a spectacular degree of designability. Most of the weaknesses of the 90s have been addressed, and the few remaining issues I expect to rapidly fall.

Krapf (“Krapf!”) says:

AJAX is new. AJAX is sexy, but it is hardly revolutionary. I am neither a GUI nor a browser specialist, but I have been able to develop some really nice, portable application interfaces as Java applets for years now.

I’d love to see some screenshots. No offense, but a programmer’s concept of a “nice interface” is about as valuable to the wider discourse as Buster Crabbe’s filmography is to the debate on global warming. Perhaps Krapf has some design sense, but I bet it takes him ten times as long to make an interface that matches what I can do what HTML and CSS—if he can do it.

There are two very revolutionary things about AJAX that Krapf is missing. First of all, it kills what was considered to be the greatest hurdle of web application development: the page-based model. And although it probably hasn’t occurred to Krapf, who sees AJAX as just a means of updating page content on-the-fly, that means it’s also finally possible to write a web-based application that “maintains state”—that means, remembers who you are between clicks—without using cookies. Yes, Java applets could do it, but Java applets are ugly, ponderous, and rather slow to start on the first try.

The second revolutionary thing about AJAX is this: designers can finally design an application. Given the bare functionality from a developer, some knowledge of HTML and CSS, and a passing familiarity with Photoshop designers can make web apps that are hot. This is a true programming revolution, and I expect it to infect desktop applications even more. A lot of tools—Eclipse comes to mind—use a browser engine to present internal information because the browser represents one kick-ass presentation layer. Flash has done this for years, of course, but Flash (like Java) is still not a browser. It’s still not the native experience for someone surfing the web.

Krapf continues:

It’s the people who wrote the requirements that baffle me. Why do we keep working around browser limitations when someone could be making the browser a better application container?

Isn’t that what AJAX does? What about Flash or its new young cousin, Flex? The fight to get standards for Javascript supported across major browsers has certainly taken that a long way. Step up, man: give Java developers a library that gives them the ability to turn a bare application over to a designer/markup artist and say “here, make it look good.” Find a way to abstract applet layout and presentation into XML and CSS-like (or XML and CSS!) layouts. Make it work, dude!

See, we’re into AJAX and making the browser work for us because the browser offers a whole host of features that applets don’t get: flexibility, immediacy, designability, interoperability, comprehensibility. From anything but a system internals standpoint, Java applets…

Java applets suck.

3 Responses to “Don’t Cry for Me, Java Developer”

  1. Dave H said:

    Hiya Thud!

    If I knifed credulity in the back and stole it’s wallet, you mugged Java in broad daylight and dropped it off a bridge wearing cement overshoes! What a great rant! My favorite tidbit: “JAVA has the perfect user interface toolset for people who enjoy being kicked in the nuts”!! ROTFLMAO! As a pretty accomplished C/C++ programmer who wasted a year of his professional life futzing with UI’s in Java, this is just a perfect description…

    Glad I could inspire you!

    Be well,
    Dave H.

  2. NIck said:

    Thud,

    I can’t even verbalize how much I agree with you. Many of my misconceptions about Java came from using java applets. When I was in college, we used one to submit our programming projects. First of all it looked like butt and second was slow as crap. I thought well they just aren’t good at UI and maybe their code isn’t efficient. However, I kept running into more and more applets that had the same exact issue.

    I then decided this was not the way to go for the web and went for HTML, CSS, JS, XML, etc. These languages made sense and didn’t take much involvement to get something off the ground. The more I learned about these languages and working with their strengths; I feel I got more flexibility, more power, and more speed. If I didn’t need one of the languages cool. I could add complexity, interface with other languages ad hoc, be more portable, etc.

    There just hasn’t been a single time in my career where I felt like a java applet would solve the problem.

    When was the last time you used a java app (not even applet) and thought this is a really awesome interface. As soon as I open one up a see the java UI stench all over it. And like you already said, Thud, programmers usually suck at UI’s. I refuse to use Eclipse not because of its technical merit but because of its UI reeking of Java making me want to rip my eyes out of their sockets.

    I still wonder why things have not changed in this area of Java since so many people have such a dramatic response and detest for the way these applications look. Its 2008 now come on….

  3. thudfactor said:

    Java has had a few improvements over SWING, but overall I think the emphasis of the language is on enterprise-level back-end code. Web application development with Java has gone to JSP, too, which brings the flexibility of Javascript / Flash / HTML / CSS into the mix. Pure Java solutions just aren’t that pleasant.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>