not so random musings and mutterings about high performance computing, business, entrepreneurship, and the economy

Shouldn’t we just say no to java already?

Oracle is now going after Java centric products, specifically starting with Google. Java itself has largely failed as a write once run anywhere platform … it has always been a (not terribly good) solution in search of a (narrow) problem niche, trying to pretend to be a wide scale solution to all problems everywhere.

And in that, it fails, miserably.

There are two very painful aspects of web based applications I deal with on a daily basis. The first are flash apps … Adobe really … REALLY needs to either fish or cut bait on flash, step up with real 64 bit flash for Linux and windows as being fully supported, or just admit it was wrong and kill flash, and let HTML5 win (which it will likely do anyway).

The second are Java bits. Java web start under a variety of browsers is anything but intuitive. Java apps often don’t work with java JREs. Icedtea does an ok job with applets in browsers. Just try to launch a console from an IPMI card. Or one of the other many bits.

I could criticize the language, I could go after the syntax, I could talk about the (lack of) performance. But all of this pales in comparison to its attempt to be everything to everyone, and in the process, failing miserably at pretty much everything. There may be one or two, very narrow application areas where it makes sense. But not many.

Yeah, it has all the features of a dot-bomb era fad that is long past its shelf life. CS departments dropped real languages to focus upon this, among other things.

Now folks using it have to worry about Oracle going after them for patent issues.

So at the end of the day, isn’t it time to look hard at the alternatives, which aren’t owned/controlled/under patent protection, and drop the encumbered hot potato? The risk reward equation just got badly biased in favor of risk, with no corresponding increase in reward. And thats before you consider the technical issues.

These days, if the answer is java, you haven’t thought through the question hard enough. Its time to “just say no.”

I am not sure Java is as nichey as you say. Entire bits of many Apache projects, many in use on multiple platforms at pretty incredible scales are Java and much of Java is backend stuff anyway these days. I’m no huge fan, but I’ve seen it used in many contexts and the JVM itself has proven to be very very useful (Clojure, Scala, etc).

Now, as to the macro question, that’s a different matter, but given how much Java is out there that’s going to be hard, but it could be the beginning of the end.

I’m not sure Java is so bad in thick client mode. A friend of mine has written a chemical drawing package called ChemDoodle (http://www.chemdoodle.com/) entirely in Java that’s so good, and so portable, that it’s giving fits to the previous predominant chemical drawing package, ChemDraw.

I don’t think it’s fair to criticize Java unless you’ve tried using the current version, not a version from 10 years ago, to write something major that has to be portable across Windows, Linux, and Mac.

I was referring to recent Java. Latest revisions of IcedTea have fits with some code we deal with. Just ran an application this afternoon that grabbed my mouse, and would not, under any circumstances, let it go.

Its lack of integration with the client OS clipboards (same issue in Windows and Linux), its painful UI implementations … I dunno. Eclipse is about the only app I’d call ok, and it is a behemouth, and quite slow.

I was venting when I saw that article … I just had the joy of trying to help a customer with their machine, while fighting with Java … the write once and run anywhere system … to actually run on my laptop. It wouldn’t run correctly. This is late model java with late model app. Took me 3/4 of an hour, much swearing (hey I’m an escapee from New York), several re-installations of a number of tools to finally get the “run anywhere” language to allow the app to, in fact, run.

If you’re having trouble with something running under IcedTea then the logical thing is to try it under the Snoracle JRE to see if the same thing happens. If it doesn’t then you’ve found a problem with IcedTea, not with Java. If you have the problem under the JRE then that would be a valid criticism.

I went through 5 stacks, including 3 Oracle/Sun variants. Only the very very latest would let this thing work.

Look, Java is hyped as being cross platform and run anywhere, but I keep running into example after example of it both failing to run, or requiring a specific platform (or denying compatibility with a specific platform). We have vendors pushing their “Java” tools for one thing or the other that only work on windows. We have java code which absolutely refuses to launch on vendor distro shipped JREs, causing us to hunt for a compatible JRE.

While I was pissed at having to work through this tree of possibilities, the point remains that the hype of java and the pragmatic reality enjoy a very small overlapping volume of space.

JRE’s are not JRE’s. They are not all equivalent. They aren’t completely functionally interchangeable. Which means, outside narrow regions of functionality, we have to worry about whether or not our tools will work.