The 5 key trends of JavaLand 2016
JavaLand is a software conference, held annually, in Phantasialand, Brühl (Germany). JavaLand focuses on Java enthusiasts, developers, architects, strategists, administrators and project managers. With more than 100 lectures, JavaLand caters to the interest of both beginners and experts. These are, what I believe, the 5 key trends of the conference.
1. Microservices stay hot and are maturing
JavaLand dedicated an entire track to containers and microservices. This resulted in a large variety of talks on the subject. I attended a couple, but the talk by Ordina’s very own Andreas Evers hit the sweet spot between introducing the microservice concepts and making them tangible. Microservices transfer a lot of the application’s complexity to the interactions between the services. Applying patterns such as circuit breakers and bulkheads are quintessential to building successful distributed systems. Andreas presented all of this in a clear and concise manner to the delight of the audience.
2. TypeScript / Angular 2
Frontend developers are in for a treat. Currently, nobody exactly knows when Angular 2 is going to be released, but everybody is eagerly looking forward to it. Rumor has it .. release will be very soon. Angular 2 promises to be a faster, more powerful, cleaner, and easier to use tool. The Angular team provides an upgrade path to migrate your old Angular 1 applications. What’s also really interesting is the Angular 2 Style Guide, that contains best practices on how to organize your project, name your components, etc.
Angular 2 was migrated to TypeScript, because of the great tooling support. TypeScript isn’t the first language to compile to JavaScript, but supported by Angular 2, it just might be a game changer.
3. Cloud-Native Java
Josh Long did a stunning job, giving a whirlwind talk on a large number of Spring tools to support the building of Cloud Native Java applications. He started with Spring Data REST to build a hypermedia-driven REST web service with a Spring Data Repository. Then he introduced Spring Cloud Configto externalize configuration files of the different microservices he was building. When building distributed applications, a config server is essential, in my opinion. Next up was Spring Cloud Netflix, which is a “Springified” collection of tools open sourced by Netflix. Josh demoed:
- Eureka for service registry and discovery
- Zuul as an API gateway
- Hystrix for circuit breakers
Finally he used Spring Cloud Sleuth with Zipkin to show us a nice dashboard of the different requests going through his freshly deployed microservices.
A talk by Josh Long is always an event and we’re very proud to announce that he will be doing a presentation at Ordina Belgium later this month!
4. Reactive
“Reactive” is used broadly to define event-driven systems. Reactive Systems are responsive, resilient, elastic and message driven. Details on these key characteristics can be found in the Reactive Manifesto. The most popular Java library to compose asynchronous and event-based programs is RxJava. To build reactive applications, RxJava uses Observable sequences that make it easy to wrap synchronous methods in asynchronous calls.
An interesting presentation to learn more about this topic is available on Youtube.
While Reactive programming isn’t new, it has been gaining a lot of traction recently. For example thanks to the recently released Lagom framework from Lightbend. Last year the Spring team announced that Spring 5 will also focus on Reactive.
5. Kubernetes
Kubernetes is an orchestration system for Docker and Rocket containers, initiated by Google in 2014. In Kubernetes, containers run in Pods. These pods are managed by Replication Controllers (create, destroy, start / stop, failure, scaling, …). Since Replication Controllers can create and destroy Pods dynamically, we can’t rely on their IP addresses to communicate with each other. This can be solved by using Kubernetes Services.
Kubernetes can schedule and run containers on clusters of both physical and virtual machines.
An interesting discussion, after one of the Kubernetes talks, was about the differences between Kubernetes and a regular PaaS. This post on Stackoverflow provides a lot of input for that discussion, stating that Kubernetes is PaaS-like: Cloud Foundry can be considered an “Application PaaS” and Kubernetes a “Container PaaS”, but the distinction is fairly subtle and fluid, given that both projects change over time to compete in the same markets. The subtlety of the difference is demonstrated by the Kubernetes documentation, explicitly stating Kubernetes is not a PaaS.
The Community Activities
It’s impossible to talk about JavaLand, without mentioning The Community Activities. These focus on
- Innovation discovery: Humanoid Robots, Virtual Reality (VR), Neural Networks, …
- Gamification: Hacking sessions and contests, Dojos, …
- Networking: User Groups, Jogging, Tours, …
- Phantasialand: The theme park opened its door exclusively for JavaLand on Tuesday evening. What better way to bond with colleagues and leaders in the Java community than in a roller coaster :)