3 ms·
JWZ's complains can broadly be broken into 2 categories: Java lacks advanced programming features, and Java doesn't perform well. Some of the features have bee
by EliAndrewC 18y ago
JWZ's complains can broadly be broken into 2 categories: Java lacks advanced programming features, and Java doesn't perform well.
Some of the features have been added (enums, weak pointers, etc) and some will probably never be added because they conflict with the overall design of the language (typedefs, macros, etc).
However, many-to-most of his performance complaints have become irrelevant due to a combination of better hardware (e.g. not needing to worry so much about small memory overheads) and a smarter VM (e.g. hotspot can inline entire branches of a call tree based on metrics it gathers at runtime).
One of JWZ's main Java experiences was trying to program a web browser in Java 1.0, IIRC. Since this was over 10 years ago, his main frustrations seemed to be with the fact that he didn't have enough control over the language to get it to perform well enough for this purpose.
Interestingly, most people I see choosing other languages over Java today don't care that Java performs better than their language of choice (it almost always does), but rather because their language of choice has convenient features which make it easier for them to write code, performance be damned. I came to Python from Java for this exact reason, and despite JWZ's valid frustration with 1990s Java performance, I can't help but read most of his essay and think "how quaint" at his performance concerns.
- prewett 18y agoThis is kind of off-topic, but I've been considering using Python precisely for the "easier to write code" reason, but I want to be cross-platform. I don't see any good way of making sure I have a Python interpreter of the right version with the appropriate libraries (audio, visual, UI, sci-py, etc.) unless I ship everything--libraries and interpreter. Is there a good way of handling that with Python? It seems like Java makes it a lot easier (except that the UI looks so bad I'd be ashamed to ship anything with it).
- jimbokun 18y agoAnother possibility is trying a different JVM language. Jython, of course, tries to implement Python directly on the JVM. Scala and Clojure are two higher level languages (than Java) that run on the JVM with all the deployment advantages and library availability of Java. One of these might be a good way to have your cake and eat it, too. (Doesn't help with the UI, though. :) )
- alnayyir 18y agoI'd be similarly ashamed about the way Java UIs tends to look. GTK bindings or bust I always say.