Do we need a Java++?

Going to get downvoted by the Java fanboys for this but as someone who writes both Java and C# I'd say that C# is as close to Java ++ as you are going to get.

C to C++ was a paradigm shift, from procedural to Object oriented, the only reason they retain the name is to woo C programmers into thinking that it was the same language which led to a load of really bad C code masquerading as C++.

Java is constantly expanding and Sun are quickly incorporating more and more features, so it could well be that Java 7 or 8 is your Java ++


I think the answer to "Do we need a Java++?" depends on who "we" are (and I'm not sure that "we" are all instances of one class ;-). This issue has been discussed on more than one occasion by The Java Posse.

Large corporate users of Java have a tendency to be more conservative. They have large development staffs and large bodies of existing code. As a consequence, there is a high perceived cost and risk to changes in the language or libraries (training, maintenance, breakage of existing code, etc.).

On the other hand, there are lots of small, light-on-their-feet dev teams (open source or otherwise) that are always ready to latch onto the Next Great Idea in programming. It's not clear to me that a single answer will leave everybody sufficiently satisfied.

I suggest that the growing ecosystem of JVM-based languages may help address this tension. If newer languages (Scala, Fan, JRuby, JavaFxScript, etc.) provide the notational features (and novelty) that the second group desires, while maintaining interoperability with existing Java (which can move at a more sedate pace), perhaps both groups can have their chosen flavor of cake.

I'm a little baffled by the degree to which some folks seem to want One True Language. Back in the day, it was quite common to hear the idea that each language (notation) had a "sweet spot" of applicability; sometimes the right solution was to write each part of a system in the appropriate language and link them together.

Back to the future, anyone?


Like, say, Scala or better yet Groovy which bills itself as a dynamic version of java?