Topics

Featured in Development

As part of our core values of sharing knowledge, the InfoQ editors were keen to capture and share our book and article recommendations for 2018, so that others can benefit from this too. In this second part we are sharing the final batch of recommendations

Featured in Architecture & Design

Tanya Reilly discusses her research into how the fire code evolved in New York and draws on some of the parallels she sees in software. Along the way, she discusses what it means to be an SRE, what effective aspects of the role might look like, and her opinions on what we as an industry should be doing to prevent disasters.

Featured in Culture & Methods

Mik Kersten has published a book, Project to Product, in which he describes a framework for delivering products in the age of software. Drawing on research and experience with many organisations across a wide range of industries, he presents the Flow Framework™ as a way for organisations to adapt their product delivery to the speed of the market.

Featured in DevOps

The fact that machine learning development focuses on hyperparameter tuning and data pipelines does not mean that we need to reinvent the wheel or look for a completely new way. According to Thiago de Faria, DevOps lays a strong foundation: culture change to support experimentation, continuous evaluation, sharing, abstraction layers, observability, and working in products and services.

Looking Forward to Java in 2018

As 2017 draws to a close, let's look at the future of the Java platform in 2018.

We enter 2018 after a year that has brought more change to the Java world than is usual. In part this is due to the arrival of Java 9, albeit almost a year late.

However, over time, this release may come to be seen as less significant than the changes to the release cycle that accompanied the new version. This change to the release process means that there will be not one, but two, new releases of Java in 2018.

The first will be known as Java 10 with the second release being Java 11. Although this naming scheme may seem like the existing status quo, it was only achieved after a significant public debate and an eventual consensus being reached.

As a result of this switch to a strict time-based cadence, the content of each Java feature release is expected to become smaller in scope than has historically been seen until now. For Java 10 in particular, this means that the number of features is fairly small.

This list will surely fill out as the release date approaches, but one feature that is noticeable by its absence is Java value types. This is perhaps unsurprising, as value types are a major change to the Java language and runtime and offer a complete re-imagining of aspects of the Java type system, including generic types.

The current prototype, while working, is still a very long way from being delivered, and in its current state is suitable only for low-level platform hackers and those comfortable hacking with reflective or MethodHandle-based tools. It seems quite inconceivable that, given the current state that value types will ship as part of Java 11, although Oracle has not made any public comments about when they expect value types to arrive.

However, if value types are not delivered as part of Java 11 then this would have the knock-on effect that the first long-term support release to include value types would not then appear until at least September 2021.

At time of writing it is also unclear as to whether the proposed data classes feature will appear in Java 11 either. As described by Brian Goetz, the Java language architect:

Data classes are about disavowing complex, indirect relationships between a classes representation and its API contract; by doing so, the compiler can fill in common class members.

There is some similarity between the proposal and Scala's case classes, but Goetz makes it clear that the design space being addressed by data classes covers a range of possibilities and the overall semantic meaning of the data classes feature is deeper than it might appear. The current conception of data classes makes them deeply connected to the pattern matching feature also in development but they could potentially be delivered in separate releases.

Related to both features is the possibility of an enhanced form of switch - allowing the construct to be used as an expression as well as a statement.
This feature is relatively small and looks as though it could plausibly be delivered in Java 11, even without data classes or pattern matching but at present it is still only a draft JEP.

The feature-complete date for the eventual September release is in June 2018, so we will have to wait and see for a few more months before the overall shape of Java 11 becomes clear.

Community comments

JAVA's innovation is so so so slow

Your message is awaiting moderation. Thank you for participating in the discussion.

So Value Types, Reifield Generics are still a dream until after JAVA 12?

JAVA is still relevant today not because Oracle but because of the enormous number of high quality frameworks and libraries built by the community.

JAVA language's innovation is so so so slow, I'm so disappointed. JAVA language designers should have a look how efficient and how beautiful Microsoft implements new features into the C# language thanks for Roslyn compiler.

JAVA should have been paid to other more innovative companies such as Google, Pivotal, Eclipse or even Microsoft. Or even better, just throw it to the open source community.

Re: JAVA's innovation is so so so slow

Your message is awaiting moderation. Thank you for participating in the discussion.

Java's advantage is strong backward compatibility.. so ensuring what we put into it is lot more important... This will make sure, library developers peacefully create a library and it works in optimized way in later versions of java