The Seven Wonders of JavaOne 2016
Every year, Java experts from around the world gather at JavaOne. Alfa discusses what the latest conference can bring to our product and development process.
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.
Alfa 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.
1. The Java Hub
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:
- IBM Bluemix, a bundle of services and tools which allow fast and easy software development using sophisticated services, including visual recognition, speech-to-text, translators and many others;
- New Relic, a performance analysis tool which provides great detail and granularity with minimal developer effort; and
- OverOps, a bug analysis tool which allows tracing exceptions and errors providing links to webpages containing stack traces, variables and other resources likely to save a lot of time and effort.
2. Java 8: Lambdas and Streams
Java 8 has been around for two years now and many are leveraging all the new features it has to offer. For Alfa 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.
3. Java 9: Modularisation and Performance Optimisations
Java 9 is all about Project Jigsaw, which makes Java a scalable and modular system. This modularisation 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:
- Compact string storage in memory can reduce the memory footprint of strings almost by half;
- Project Valhalla will bring value types, potentially enabling applications to perform much more quickly;
- A REPL (read-evaluate-print loop), called JShell, will help developers learn the language and try out snippets of code without using the heavy-lifting IDEs. This can be a tremendous tool for learning.
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, specialised 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.
5. Reactive Programming
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:
- Responsiveness (reacting to users)
- Resiliency (reacting to failures)
- Elasticity (reacting to load)
- Message-driven (modules/components interaction)
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.
6. Emerging Language
7. Integrated Development Environments (IDEs)
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:
- DRY: Don’t repeat yourself (both code and thought)
- YAGNI: You aren’t gonna need it (yet)
The most important principle, however, remains the same: write good, clean code.