Regaining My Java Enthusiasm
When I dive into what is planned for Java 9 and Java 10 I am getting back some of my Java enthusiasm. Here are a few reasons why:
1) Functional programming promised easy parallelization. Each function call can theoretically be performed in parallel by different CPUs.
In practice, however, the overhead of coordinating the parameters and return values among the different CPUs is often quite large. Often so large that you can implement it faster with a single thread on a single CPU. Functional programming does not seem to be the holy grail to parallel computing it was made out to be. Not yet at least.
And - new Java frameworks are pioneering new types of concurrent systems, which seem to be able to squeeze quite high performance out of the JVM (compared to Java EE and functional).
3) There are still many things you can do in Java which you cannot easily do in e.g. Scala. For instance, the use of primitives, primitive arrays is rising in the high performance Java industry. Java 10 will bring value types (if we are lucky) which are struct-like types where all variables are allocated in one, consecutive block (= faster memory access).
The problem can of course be that Java becomes bloated over time. In some ways it already is - with three different GUI toolkits in (AWT, Swing and JavaFX), and lots of code that isn't that great (SAX parser?? StAX is better).
The bloat problem is something that Java 9 will address, though. It will become possible to create profiles of Java with only the features you actually use. That gives us the possibility to remove the bloat from our installations.