Top 10 in 2008
5 popular archives:
All selections are based on page views.
Best of 2008: A developer's list
JW blogger Dustin Marx names his top 10 technology events of 2008. Highlights include updates to Java SE 6, runtime support in OpenLaszlo 4.2, and the clash of the titans that occurred early in the year, when Sun acquired MySQL on the same day that Oracle announced its acquisition of BEA. No two lists are alike and it's not too late: What were your top 10 for 2008?
Also see:
In his article, Garfinkel leaves no room for doubt: he "hates" Java and feels the industry would be better off without it. Although I agree with numerous points he makes, I also feel he takes a somewhat simplistic and superficial look at Java. Let's examine his arguments more closely.
Garfinkel highlights what he calls two "Big Lies" in Java: its speed and its "Write Once, Run Anywhere" promise of platform-independent computing. Both speed and portability are indeed important to Java, but I wouldn't make conclusions about Java as a whole based on those two issues alone. That would be as naive as dismissing C++ merely because you can easily make memory-management bugs with it or because it's a nightmare to use with shared libraries.
Let's be fair. Java is not exactly the racecar of programming languages. Sure there are plenty of examples showing Java to be either incredibly fast or incredibly slow, but the reality is that most Java programs are heavyweights compared to their C- and C++-based equivalents. This translates to slower execution speed and more intensive memory usage.
The Java Virtual Machine (JVM) generates a significant portion of that overhead. Typically, Java programs are not directly executed by the computer's hardware; instead, a special program, the virtual machine, runs the Java program. The benefits of having the JVM are Java's flexible and powerful security architecture, the plug-in nature of Java components like servlets and applets, and the portability of compiled Java programs (.class files). In addition, most modern virtual machines also contain a just-in-time compiler that compiles Java byte-codes into native machine instructions to improve performance. But all of this comes at a price: the JVM consumes both processor time and memory while managing a Java program's execution.
With standalone, GUI-based desktop applications, Java's lack of speed is most obvious. I tend to agree with Garfinkel's point; at this moment, Java is not ideal for developing desktop applications. These applications have several requirements that are not Java's strong suits:
From my own experience with Java, I've learned that easy installation is extremely important for the average Windows user. The extra step that Java needs for a virtual machine to execute a program complicates installation and adds a significant extra download. Also, most programmers don't want to deal with the different Java versions and virtual machines. Most of the feedback I get from users involves installation problems. True, native executables have similar issues to deal with, but with Java they tend to be worse.