This session is an omakase, a "chef's choice" of key points and latest/coolest capabilities for developers in the Spring Boot ecosystem. Known by French chefs as "m’étonner" ("Astonish me!"), the goal is to combine useful patterns and new possibilities in one fast-paced live-coding adventure from which everyone leaves with something tasty to chew on. Come for the apps, stay for dessert, leave satisfied & excited for the next "course" of production software!
In this talk Graeme Rocher (Micronaut creator and architect at Oracle) will provide an introduction to Micronaut 2.0, the innovative new framework that precomputes your framework infrastructure in a reflection free manner and provides integration with GraalVM Native Image.
Have you ever wondered how to easily develop your cioud-native microservices with the aim of only concentrating on your business logics? Better still, your microservices are not vendor locked in and it can move among nearly dozen runtimes. Learn once and never need to worry about migration headaches. Come to this session to learn the defacto standard of developing cloud-native microservices using MicroProfile with a live demo!
Everyone wants to understand what their application is really doing in production, but this information is normally invisible to developers. Profilers tell you what code your application is running but few developers profile and mostly on their development environments. Thankfully production profiling is now a practical reality that can help you solve and avoid performance problems. This talk will help you understand the ins and outs of profiling in a production system. You’ll learn about different techniques and approaches that help you understand what’s really happening with your system. This helps you to solve new performance problems, regressions and undertake capacity planning exercises.
The popularity of JavaFX has steadily increased since it was unbundled from the JDK and open-sourced. The latest JavaFX toolkit offers a rich set of visually appealing UI controls, a flexible property binding mechanism for event handling, and a powerful concurrency API. Our session shows you how to develop a JavaFX mobile application and deploy the same JavaFX codebase to mobile devices as native executables using Gluon Substrate and GraalVM. The session covers the workflow from JavaFX program concept to uploading native images to both the IOS App Store and Android Google Play. The demo is a game that is available in the Apple App Store (iOS) and Google Play (Android) - for free!
An API is what developers use to achieve some task. More precisely it establishes a contract between them and the designers of the software exposing its services through that API. In this sense we're all API designers: our software doesn't work in isolation, but becomes useful only when it interacts with other software written by other developers. When writing software we're not only consumers, but also providers of one or more API and that's why every developer should know the features of a good API. During this presentation we will go through real-world examples, also taken from the standard Java API, of good and bad API and comment them in order to show the dos and don'ts of API design. More in general we will discuss the characteristics of an easy and pleasant to use API, like consistency, discoverability and understandability, together with some basic concepts like the principle of least astonishment, and find out how to achieve them.
Jakarta EE 9 introduces the migration of the javax to jakarta package in the platform, impacting the ecosystem and, therefore, the end-users.
This session covers code-driven recommendations and strategies to help you navigate the migration of your Java Enterprise applications using Apache TomEE.
A few years ago, moving data between applications and data stores included expensive monolithic stacks from large software vendors with little flexibility. Now, with frameworks such as Apache Beam and Apache Airflow, we can schedule and run data processing jobs for both streaming and batch with the same underlying code. This presentation demonstrates the concepts of how this can glue your applications together and shows how we can run data pipelines as Java code, the use cases for such pipelines, and how we can move them from local machines to the cloud solutions by changing just a few lines of Java in our Apache Beam code.
Want real cross-platform development from a single codebase? Does Java still fit that bill? Flutter is Google's new cross-platform toolkit that targets Android, iOS, Windows, Mac, Linux and the browser from a single codebase. Come and see it in action and judge for yourself.
Duke needs your help in navigating through the Delta Quadrant. Join us on this incredible journey visiting new features of the JDK 15 system as well as the best features of previous versions of Java. During this journey, you can improve your craft as an engineer. These short challenges will keep your katas going at warp speed! Solve the puzzles to learn the full power of the Java language. Apply the techniques, and develop concise code where bugs will have a hard time hiding. Come to this session to boldly go where no Duke has gone before!
In the past few years we've had the Oracle Java licensing change and the new release cadence come in. For many folks, there's now more choices but also more confusion. The Diabolical Developer loves legal documents and comparison charts and in less than an hour will take you through which Java Provider is the right one for you!
Java Optional class is a potent tool at hand that we use every day or we deal with when using Stream APIs. But do you use the Optional class correctly and effectively as it should? If you didn't intuit that the code that will go into production is still open for NPE. Even if the code passed the testing phase as well, the best way to use things is to exploit them for what they have been created and tested for in the first place. In this session, we will learn how to use the Optional class the way it was intended? So, let's tackle this topic with 25+ recipes that try to address Optional in your code through an elegant and painless approach covering all the methods.
Apache Kafka has been one of the leading streaming platforms in recent years. It is highly versatile in its application. This session explains the basic concepts of zookeeper, publisher, subscriber, topic, partitions. You will witness the creation of a reference implementation comprising a publisher and a subscriber. The reference implementation will demonstrate the key features of the publisher and subscriber. The session is designed to be an interactive hands-on session without any slides.
They told you that using Java with containers were great, but they never mentioned that wouldn't be that easy, right? Luckily there are have some best practices that will rescue your application from failing. Come to this session and learn them.
By the time this talk is held, JMC 8 is close to being released. This talk will be about all the new cool features in JMC 8, and the roadmap ahead. We will also demo some of the new features, including new and exciting ways of visualizing aggregations of stacktraces, the new rules/heuristics framework, improvements to the parser, the JMC agent, support for new exciting events in recent JDKs, and more.
Project Loom, which will become a part of the core platform, upends our thinking about concurrency. If blocking is cheap, is there still any benefit to reactive patterns? If you can have a humongous number of threads, what is the value of thread locals? Is it time to say goodbye to some features of the Java 1.0 thread API? In this presentation, I review the changes that Loom brings and contrast them with the way that Java concurrency has been traditionally explained and taught, and I present a path to a more modern approach.
The Java Module System lays the foundation for building modularized applications on the JVM. It doesn't concern itself though with resolving module versions and obtaining modules from repositories.
This is where Layrry comes in: an API and launcher for modularized Java applications which takes a descriptor of the module layer(s) to assemble, fetches the modules and starts up the application.
Join us for this session and learn how to
build Java applications using layers, e.g. providing isolation between different versions of one module.
use jbang to launch your layered apps in no time.
create plug-in based rich-client applications using JavaFX and Layrry, allowing to dynamically reconfigure and update your layer hierarchy, no restarts required.
create your own customized Layrry launcher if needed
This session is code-centered, be ready to see the Java Module System, Layrry, and JavaFX in action!
With the ascent of distributed architecture, modern software increasingly unwinds into networks of micro(-service) components. While this approach to building software - if done correctly - can improve a system's maintainability and scalability, distributed applications also introduce challenges for operations. Where monolithic applications typically offered direct access to extensive monitoring dashbords, such easy overview is no longer available when a multitude of services is connected loosly on a network. But how to keep track of a system of such dynamic state? Distributed tracing is a method of connecting interaction of different services on a network. Collecting and processing such tracing information again allows for the observation of a distributed system in its entirety. This talk shares the presenter's insights gained by working on the JVM-support of distributed tracing for the APM tool Instana. Doing so, it introduces the landscape of distributed tracing on the JVM, discussing popular approaches such as Dapper, Zipkin or Brave/OpenTracing. In the process, it is discussed how byte code instrumentation can be used to capture systems without requiring a user to set up the software under observation. The presentation finishes with a discussion of typical problems of distributed tracing solutions and carefully examines the performance penalties APM tools entail.