It might seem a bit early to start speculating about Java10 before Java9 has even launched. In fact, with Project Valhalla, some ideas have already been explored for some time and there is already a Java10 page on the OpenJDK website. One of Java’s strengths is that the designers have been very cautious on adding new things to Java – it really needs a compelling case before something is added, which has saved the language from becoming a ‘dumping’ ground for anything trendy in the last 20 years. So what might we see….
Project Valhalla already hints at 2 new features which have missed several previous releases of Java:-
- Values types could bridge the gap between int and Object, providing an intermediate ‘object’ which works much better on modern hardware and combines most of the benefits of Objects and primitives.
- Generic Specialization would allow us to use Generics with primitives. At the moment you can only use Objects (or any class extending Object). So you can have a List<String> but not a List<int> (except with the clunky work around List<Integer>).
Java10 will have the usual collection of lots of little improvements. Java9 added much better support for more modern ‘web’ technologies (security, http, etc) and I would like to see this continue in Java10. The Internet is where much development is now focussed and Java needs to play as well as possible with all Web technologies.
Functional Programming has been available since Lambda’s introduction in Java8 and it would be nice to see some improvements to this. Especially the ability to make more use of GPU hardware built into the system for numeric processing.
Java9 added support for REPL and in the past there have been suggestions for adding XML or SQL into the language. Do you think there is still a case for adding either of these?
What we will not see in Java10 is anything which radically breaks the backwards compatibility. But what I would most like to see is a chance to break from the past for new code. Maybe we could have a legacy flag which would give us a much smaller subset of ‘modern’ Java to write new code in.
What do you think should be in Java10? Anything you DO NOT want to see in Java10?