When Oracle announced Java's new release cadence - with a new feature version appearing every 6 months, the intent was to increase the pace of innovation within the platform.
Whilst most Java developers are sticking with the long-term support (LTS) releases - Java 8 and 11 - the 6-month cycle is allowing the cutting edge of Java to move faster than ever before.
Java's core value of backwards compatibility means that delivering new features is not straightforward. Any new feature must not cause problems for existing code, and must interact cleanly with the established language semantics and syntax. The maturity and age of Java means that there are many touchpoints that any new feature may have to consider.
The new release cadence makes this job a little easier - if a feature is not quite ready for a particular release then it can be retargeted at the following release and ship 6 months later.
Oracle has also introduced Incubating Features - that allow features to be shipped in a preliminary state. These are typically delivered as a module - in a namespace that makes it clear that the API is not final and may change. On the language syntax and semantics front, there are also Preview Features, which allow developers to try out a proposed feature in detail and provide feedback before the feature is finalized.
In this eMag we want to showcase some of the smaller features that have been delivered and reached their final form in recent releases. Language evolution comes in both large and small packages (and sometimes the smaller ones are really stepping stones that unlock bigger changes).
In the coming pages, we will cover a range of topics including an overview of what's changed between Java 8 and 12, the expanding capabilities of Local Variable Type Inference, the ability to execute single-file Java programs as scripts and Graal - the new JIT compiler for the JVM.
Free download
The InfoQ eMag - Recent Innovations in the Java Platform include:
- Upgrading from Java 8 to Java 12 - Why upgrade to Java 12? Lots of things have changed since Java 8: licensing, updates and support. On top of that, there are new language features. Now that major libraries, frameworks and build tools have adopted the latest versions of Java, it is a good time to migrate your application to Java 12.
- Running Single-file Programs without Compiling in Java 11 - Starting with Java SE 11, and for the first time in the programming language’s history, you can execute a script containing Java code directly without compilation. The Java 11 source execution feature makes it possible to write scripts in Java and execute them directly from the *inx command line.
- Java Feature Spotlight: Local Variable Type Inference - In Java Futures at QCon New York, Java Language Architect Brian Goetz took us on a whirlwind tour of some recent and future features in the Java Language. In this article, he dives into Local Variable Type Inference.
- Getting to Know Graal, the New Java JIT Compiler - Oracle have released Graal, a new JIT compiler for Java. For Java developers, Graal can be thought of as several separate but connected projects - it is a new JIT compiler for HotSpot, and also a new polyglot virtual machine, GraalVM. The initial release includes support for JVM bytecode and JavaScript with LLVM, Ruby and R in beta.
InfoQ eMags are professionally designed, downloadable collections of popular InfoQ content - articles, interviews, presentations, and research - covering the latest software development technologies, trends, and topics.