## Java the language vs. Java the ecosystem

I don't really like Java (probably even more so because it is my day job), but I can't deny that the tooling around it is pretty fascinating. Recently I've stumbled across some pretty exciting things with respect to concurrency bugs:

Stanford's Chord race condition static detector. (Which even uses Datalog.)

and

EPFL's deadlock avoider.

How much can a language's shortcomings be made up for with tooling?

## Comment viewing options

### All of them:)

If nothing else, write a compiler/interpreter for the HLL of your choice, with the semantics that you desire--that targets Java or the JVM. :)

The first part of your comment could almost be written as "I don't really like the x86 instruction set (probably even more so because it is my day job), but I can't deny that the tooling around it is pretty fascinating."

*Much* Java tooling, including that which targets Java the language rather than the JVM, affords the programmer access to higher levels of abstraction and reasoning.

### Right you are

I guess I meant more that I'm not the kind of person who is, realistically, going to contribute much in the way of tools (modulo some tongue-in-cheekieness) so it comes down to finding an ecosystem where the equation powerOf(language) + powerOf(tools) > sucks_a_lot holds sufficiently true. (This includes having debuggers.)

### Better than .net...

I call your flamebait with flamebait of my own :P

A coworker and I were having this discussion last week. My statement was that Java is the better platform simply because of the extensive ecosystem of libraries around it.

For example, how many parser generators are there for C#? I couldn't find any, except Antlr, which is a Java application that can output C#. There was another project that used javacc from C#.

Another example was libraries for visualizing graphs. I found no less than 10 free open source libraries for Java. C#, none. One commercial (Tom Sawyer).

Then there are the Java frameworks that have been ported to .Net like NUnit, NSpring, NHibernate.

I'm certain that some here will be able to counter my examples of above by citing a parser generator for .Net and an open source graph visualization library. But a week ago they didn't turn up with 1 minute googling so, do they really exist? (Google page ranking and relevance of results is an entirely different discussion of course).