Monday, September 8, 2014

The Unbearable Uncoolness of Java

This weekend I played with Docker  to better understand this technology and this was quite fun. Interesting how we focus our energy on solving symptoms instead of addressing the root problem. But I deviate.

What actually shocked me was the current standing of Java in this world, many devops seem to hate Java with a vengenance. After trying to create a Docker image with Just Java, I can (partially) see their point. Java sticks out like a (very) sore thumb in the Linux landscape. Virtually everything can be installed with all different package managers until you hit Java, then suddenly you need a click-trough license (except for some reason when you download for the Mac, there downloading is sufficient to accept the license). But the frustration is not limited to not being able to automate an install, it is actually not that hard to bypass, just ugly. It is the whole experience. Just compare the Python, Ruby, Go, and node.js website with the java download ordeal, which even includes a nice 404 now and then. Also Eclipse, despite it new look, feels like it lost a lot of steam in the past years.

It hurts to say, but Java looks stuffy and tired ...

We have the surreal situation that Java is by far the most advanced software development environment in our universe. We have amazing tools like Eclipse, Hotspot, based on an incredibly mature environment. We have at our disposal a humongous repository with libraries. It actually has a really good module system. Java is used to build gigantic applications of sizes that most other environments can only have nightmares off. Every day Java is involved in moving around trillions of dollars. Untold number of developers use it day in day out. There is just nothing out there that can handle the size of large systems Java can.

I know, any technology that is actually solving real problems becomes complex over time and Java is no exception. I also know that sometimes you need a clean break to get rid of the scar tissue or parts that proved unnecessary but I do not see anything on the language horizon that is providing anything fundamentally better than Java 8. If Go is as successful as Java it will become as complex as Java. Most often advantages are synthetic sugar or only work for specific problems. Overall Oracle is doing a pretty decent job keeping this technology up to date. That said, they really need to rethink their position in the computing landscape, especially in the server area. However, Java surely has a very long life ahead of it. 

That said, it would be a lot more fun if Java looked more like a sexy 20 year old instead of a stuffy octogenarian. Anybody any ideas?

Peter Kriens


  1. The installation problems only exist if you insist on Oracle Java. But most distributions give you OpenJDK Java, which can be installed without any click-throughs.

  2. I would rather compare Java to a building made of solid rocks than comparing it to a "stuffy octogenarian". BTW., thanks a lot for your great contribution (OSGi) to the Java Community.

  3. Installation is hard and that's it? Nah, Java is awesome. And devops better be glad that some things aren't fully automated. Because if they were, we wouldn't need devops anymore, would we? ;-)

  4. >There is just nothing out there that can handle the size of large systems Java can.

    I'm sure Joe Armstrong will be very interested to learn this, seeing how some of the biggest and most reliable systems have been built in Erlang.

    To quote him from here

    "Erlang is used all over the world in high-tech projects where reliability counts. The Erlang flagship project (built by Ericsson, the Swedish telecom company) is the AXD301. This has over 2 million lines of Erlang."

    1. haha this is funny, I used to work for Ericsson, selling the AXD301 which is a very good ATM switch, but it was ready when ATM was over. Still it's a good system. Perhaps the AXE is what you mean, the telephony switch?

  5. OpenJDK is the reference implementation of Java, as well as fully open (GPL). Why you'd bother with Oracle JDK is not clear to me; every Linux ditrubution allows you to install OpenJDK, and without click-throughs.
    It's even stranger that you then bash Docker for your use of the Oracle JDK.

    There are many very good reasons that Docker became so big so quickly.
    Don't go ivory tower after a single weekend experiment, spend some more time to get to know a platform before being so critical of it.

  6. I'm pretty sure the majority of truly "large systems" (credit cards, airline reservations etc.) run on the uncoolest technology of them all, eg. COBOL.

  7. "Interesting how we focus our energy on solving symptoms instead of addressing the root problem."

    Could you please expand (maybe another blog post?):
    1) what you consider the root problem to be,
    2) what you consider the symptoms (which docker is trying to solve) and
    3) what would be a better way in your opinion to solve the root problem

    Thanks for your contribution through these blog posts as well!