Every year, Java experts from around the world gather at JavaOne to discuss the latest trends, best practices and innovations in the Java family of technologies.
CHP Consulting attends each time and is a keen consumer of everything we think will enhance our product and development process. One of our key takeaways from last year was Apache Camel, which we have since adapted successfully into our integration layer, to make integration easier and more accessible for developers.
A few of this year’s highlights are below.
The Java Hub was a great way to find the highlights from this large exhibition and explore the latest technologies and tools in the Java world. Various workshops allowed hands-on experience with an enjoyable, informal atmosphere. Three tools or apps in particular caught our attention:
Java 8 has been around for two years now and many are leveraging all the new features it has to offer. For CHP there are two standout features in Java 8.
Using lambdas makes it much easier to carry out functional programming, making the code more readable (compared to the imperative style of programming) and helping developers write more descriptively, thereby reducing maintenance burden over time.
Streams, meanwhile, represent a great reason to move to Java 8 on their own. Streams have been designed with performance in mind, deferring the performance of all computations as late as possible, and performing tasks inherently in parallel. Using streams in code will allow applications to perform fewer computations and provide higher throughput. The streams API, together with the enhancements to the collections API, now provide a wide range of functions a typical application would need, saving developers from having to implement home-grown solutions, which can increase cost in terms of both delivery and ongoing code maintenance.
Java 9 is all about Project Jigsaw, which makes Java a scalable and modular system. This modularization extends to the Java SE platform and the JDK, allowing it to be scaled to the target deployment platform. Being able to build target runtimes that package the bare essentials means that Java can now run on even the most resource-constrained platforms and devices.
Project Jigsaw received a lot of airtime, but is only one of the 85 features planned for the Java 9 release next year. Other highlights:
We are very excited about Java 9, and we are already playing with the early access builds.
As we also discussed after Devoxx 2016, microservices are a relatively new architectural concept which many talk about but only few use in anger.
A microservices app uses a high number of small, specialized services which communicate with each other, creating a single distributed application. Each microservice can be built, deployed and upgraded separately using the most appropriate technologies for the particular task, but microservice applications tend to be more complex in terms of communication and latency, and can be harder to manage than monolithic ones.
Microservices are used by giants like Amazon, Netflix, Google and Uber, but it’s hard to say if they will be used commonly for smaller applications. Nevertheless, the Java world appears to be enabling that direction; more and more tools are trying to address the complexity of microservices by providing frameworks which handle (at least partially) “boilerplate” code, as well as common problems of applications which consist of thousands of isolated units.
The Reactive Manifesto was published two years ago to address new requirements in modern application development, and has been widely discussed in the industry.
When considering today’s industry trends, such as distributed applications, microservices architecture and upcoming modularity in Java 9, the four principles of reactive systems couldn’t be more relevant:
Reactive programming was the topic of many sessions at JavaOne, and presented implementations spanning complex distributed systems and microservices to the coordination of asynchronous calls (a problem encountered commonly when programming business processes). There are many reactive tools available in the Java ecosystem, and SpringCloud + Netflix OSS, Vert.x and Reakt, to name a few, were presented here.
New frameworks and technologies wouldn’t become popular without appropriate support from tools such as IDEs. 2016’s IDE sessions were dominated by NetBeans.
Many of NetBeans’ most recent features were presented at the conference along with the news that Oracle submitted a proposal to bring NetBeans to the neutral ground of Apache Software Foundation, which will hopefully result in more contributors and therefore more features.
JavaOne is about sharing knowledge and pushing Java forward, but there is always a fun aspect to the conference. Oracle and other major players offer plenty of welcome events, concerts and after-parties, but the true attraction for us geeks is always technology-related. Some sessions involved fun with Lego Trains and electric toothbrushes, while in the Java Hub one could check out 3D printers and microcomputers powered by wind and light.
The Java ecosystem changes constantly, with new patterns and technologies brought in every year. Projects like our own ALFA Systems must constantly evolve and continuously improve. At JavaOne we discussed the risks associated with evolving and not evolving, and some of the well known best practices; for example, the SOLID principle as well as a couple of other key design and development principles:
The most important principle, however, remains the same: write good, clean code.