English original:Looking Forward to Java in 2018
As 2017 is coming to an end, let's take a look at the 2018 Java platform.
As we move into 2018, there have been more changes in the Java world than ever before in the past year. Part of the reason is thatJava 9 launchDespite pushing back nearly a year's time.
However, as time goes by, one may find that the introduction of the Java 9 version is far from complete with this new releaseJava release release cycle changed to once every six monthsThe significance is even more significant. Changes to the Java release cycle means that two new Java releases will be introduced in 2018 instead of one.
The first new version to be introduced in 2018 is called Java 10 and the second new version is Java 11. Although this naming scheme does not differ from existing naming, the new version only passesA major public debateAnd reached a final consensus before they can be introduced.
Given that the new release will switch to such a strictly timed pace, it is expected that this will make Java features released in every new version even smaller than those hitherto seen. For Java 10, this means that the number of new features will be quite small.
InfoQ has previously reported on the key features in Java 10. Since then, only a few subtle (Additional Unicode Extensions), The nature of the cleanupRemoved native head generator,Provide the default CA root certificate), Experimental (Java-based JIT compilerGraal), Or is currently a nicheSupport for heterogeneous memory architectures).
As for the features considered in Java 11, it is Yunshanwuzhao. We can only confirm that the following features are under consideration:
invokedynamicPlatform Features for Advanced Developers.
Once the release date is approaching, the list of features will certainly be filled. But it is worth noting that the list is not mentioned yetJava value type. This may not be unexpected, as implementing value types requires major changes to the Java language and runtime and a complete refactoring of Java type systems, including generics.
in spite ofThe current prototypeHas been working, but there is still a long way to go before delivering features.Current statusFor low-level platform developers only, as well as developers accustomed to using reflective or MethodHandle-based tools. What seems weird is that although the value types will be released as part of Java 11, Oracle still has not made any comment on when the feature is expected to be released.
However, if the value type is not provided as part of Java 11, this will have a chain reaction. The first version of long-term support (LTS) that includes value types will not be released by September 2021.
At the time of writing this article, it is unclear what data classes we have in the proposal (data classes) Feature appears in Java 11. As Java language architect Brian Goetz introduced:
The data class will be used to resolve the complex indirect relationship between the class's representation and the API contract. By using data classes, the compiler can populate some regular class members.
The data class proposal has some similarities to the Scala Case class. But Goetz made it clear that there are a few possible changes in the design space for data classes that have a broader semantic meaning than we can see so far. The current data class concept is with the development processPattern matchingFeature depth associated with. However, these two features may be available in different versions.
What is relevant to both of these features is that the future may be rightSwitch form to make improvements. The Switch statement block can be used as an expression or declaration.
This feature is relatively small and is expected to be delivered in Java 11, even if data class or pattern matching features have not been implemented. But for the moment, this feature is still a draft JEP.
The final version, to be released in September, has a feature completion date of June 2018. Therefore, before the overall form of Java 11 surfaced, we must wait for a few more months.