Demo of a custom tool created using Jetbrains MPS
Demo of a custom tool created using Jetbrains MPS
With the changes made to the Java language in recent releases, it has moved into a new realm: Data-oriented programming.
In this talk, I will explain what data-oriented programming is and explain the principles it is based upon.
When it comes to microservices, object-oriented programming is no longer the only paradigm in Java development.
I will also show how recent language additions such as records, sealed classes, pattern matching, and switch functions support the concept of data-oriented programming.
This will be done by converting a simple object-oriented application into a data-oriented version.
In his June 2022 paper in InfoQ Java language architect Brian Goetz introduced the concept of data-oriented programming in Java (https://www.infoq.com/articles/data-oriented-programming-java/)
While this may offer significant advantages, especially in the realm of microservices, much is still unknown.
I will explain what the concepts are and how the Java language can be used.
In a world where microservices are more and more a standard architecture for Java based applications running in the cloud, the JVM warmup time can become a limitation. Especially when you look at spinning up new instances of an app as response to changes in load, the warmup time can be a problem. Native images are one solution to solve these problems because their statically ahead of time compiled code simply doesn’t have to warmup and so has short startup time. But even with the shorter startup time and smaller footprint it doesn’t come without a drawback. The overall performance might be slower because of the missing JIT optimisations at runtime. There is a new OpenJDK project called CRaC (Coordinated Restore at Checkpoint) which goal it is to address the JVM warmup problem with a different approach. The idea is to take a snapshot of the running JVM, store it in files and restore the JVM at a later point in time (or even on another machine).
This session will give you a short overview of the CRaC project and shows some results from a proof of concept implementation.
A Raspberry Pi is a full Linux PC with a small form factor and a low price of between 12 and 98€. And, of course, you can run Java on it. The same kind of JVM applications you know, love, and use on heavy machines can also be used on the Raspberry Pi. “Write once, run everywhere”? Ah yes, that’s the promise of Java! But this small board has some additional possibilities you will not find on that fancy server you are running somewhere in the cloud. All Raspberry Pis have those 40 magical pins to connect an unlimited choice of electronic components. Measuring temperatures and distances, toggling LEDs and relays, controlling the content on a LED matrix or LCD display, playing the Star Wars tune on a buzzer,… the only limit is your imagination!
In this talk, we’ll look at the current state of Pi4J (www.pi4j.com) and dive into the code of a few examples. We’ll experiment with Java on a CrowPi – a Raspberry Pi-based laptop – to interact with electronic components. And let’s add Spring Boot and Vaadin into the mix to build a web interface to expose the data of those components.
C2 Building, Bonifacio High Street Central, 7th Avenue, corner 30th St, Taguig, 1634 Metro Manila