Monday, June 4, 2007

What's the thing with Java?

I don't get it. Why does so many people love Java? Okey, the language is today a quite nice programming language and there are a lot of good libraries to it. J2EE has tons of good functionality and is a nice concept. So what is it I do not understand?

People say Java is platform independent. I would rather say that Java is the platform of its own. We talk a lot about virtualization today, and what are you doing when running a Java program. You use a virtual machine, if you not use programs compiled with gcj. Java have a lot of its own monitoring programs and its own memory handling. Where goes the difference between Java and an operating system?

Starting a Java program requires a lot of initialization before the actual program starts to run. I have seen example of a batch software starting several times per minute. The program existed in two equal versions, one written in Java and one in Python. The Python version decreased the load of the system to 1/4 compared to the Java version. So what you do when starting a Java program is actually booting an OS.

A Java program working on one jre is not necessary working on another suppliers jre. Just take a look on the Java programs for mobile phones. I.e. we have instead a dependency to the jre. When people complain of differences between Linux distributions, they should take a look on the differences between different Java versions.

I mentioned J2EE earlier. When taking a J2EE application to production most people say: "This runs on Linux and you can Linux so you can manage it." But, they are totally wrong. In the perspective of the Linux administrator the jre hides everything for him, which make it hard to find bottle necks and tune the system. What one need is a systemadministrator for Java and J2EE.

Since I started to look at Java as it own operating system, things had been easier. I have start learning manage the new OS as I manage Linux, instead of thinking I manage an application. I monitor application both inside the jre and a as a Linux software.

I would not say I love Java, but I accept it and realize that it is the new standard for software development in many organizations. I also appreciate that Sun open sourced Java and that Sun Java is included in Ubuntu.

The open source step for Java makes it easier to incorporate Java with other Open Source softwares, and probably increase the acceptance of Linux and other Open Source products by non open source people. The inclusion of Sun Java in Ubuntu, and probably other distributions too, will make the desktop easier for normal people to use and therefore also accept it.

No comments: