| A lot of these points are bad. Java is verbose. Any language used outside of its sweet spot is verbose--the PHP required to read a header, for example, is much shorter than the equivalent C. The MATLAB for backsolving a matrix is much shorter than the equivalent in Ruby, but at the same time, accessing the AST of a MATLAB program is magnitudes harder than in Ruby. For the benign task of shuffling a bunch of registers, a single assembly instructions beats out every other language. The GC is terrible. Author points out that they really care about what they're program is doing (why, one wonders?), and so of course any GC solution is worse than bare hands and sbrk() and mmap(). There are well-establish issues with GC in the JVM, especially for graphics or anything with a bajillion little allocations, but those are also all well-solved problems. No pointers. Author complains about not having pointers, which kinda makes sense for a GC'ed language. Pointers are of limited utility if the language is high-enough level, so their omission in Java is perfectly reasonable. No preprocessor. One of the only things I agree with for the author--the lack of easy metaprogramming tools in Java is kind of sad. At the same time, it means that Java looks the same everywhere. C, also, is probably one of the most braindead preprocessors you could ever ask for. Nothing is stopping you from using sed as part of your build chain for Java, if you want equivalent power. No UNIX syscalls. So, first, this is wrong--you can do this with native extensions. Second, though--the entire point of the JVM and runtime is that you just let it do the right thing (or its closest approximation) and get on with your project. What good would Unix syscalls do me when running a jar on Windows? It's not suitable for big projects. This is absurd. Java is one of the few languages I would actually consider as having large-scale development as a selling point. All of the other stuff the author complains about? Yeah, that makes a Java codebase easier to have plug-and-play development on. Lots of large projects use Java, successfully. They're jungles, sure, but they're jungles that work--and consider how awful they'd be in Javascript or C or (urk) C++. It's a bad PoC language. I've heard a lot of complaints about Java, but its lack of ability to be exploited has seldom been one of them. There's more, of course, but I'm bored. |