Talk

Awesome Java applications with GraalVM and Java microservices frameworks
Conference (INTERMEDIATE level)
Room 2
Score 0.17
Score 0.18
Score 0.18
Score 0.19
The match becomes increasingly accurate as the similarity score approaches zero.

There are several great microservices frameworks in the Java ecosystem that help us quickly build modular and scalable applications, such as Spring Boot, Micronaut, Quarkus, Helidon, and others. More than that, they all work with GraalVM Native Image, enabling fast startup and low resource usage combined with Java’s traditional high performance. In this session we’ll examine examples of applications built using those frameworks, recommend useful tools, and configure Java libraries for use with Native Image.

Alina Yurenko
Oracle Labs

Alina is a developer advocate for GraalVM at Oracle Labs, a research & development organization at Oracle. A big believer in open source and communities, helping JHipster, community organizer in the past. Love both programming & natural languages:)

Generated Summary
WARNING: This summary was generated using GPT based on the transcript, as a result spelling mistakes and more importantly hallucinations can be present.

GraalVM Native Image and Micronaut
Native Image
Native Image is a feature of GraalVM that allows developers to build applications as native executables, eliminating the need for a JVM and making the application slim and lightweight. It works by analyzing an application's main entry point and only including essential code in the final executable. This ahead-of-time compilation also creates a pre-populated state, which allows for faster start times. Comparing running on Native Image to running on a JVM, Native Image offers faster start times as it does the expensive computations at the build step. Native Image is a great platform for applications because it does not require the same infrastructure needed for Just-in-Time compilation on a JVM, resulting in faster startup times and memory savings.
Micronaut
Springboard applications can now be built with GraalVM Native Image out of the box, with an additional optimization step to reduce memory usage. Micronaut is a great framework for building microservices, serverless applications and more, and works well with Raw VM Native Image. It has helpful features to add dependencies and tools to applications, as well as its own iot processing capabilities. It can start a basic server in just six milliseconds, making it a lightweight framework for those who need speed. It also has various features, modules, plugins and extensions to make development easier.
Micronaut Test Resources
Micronaut Test Resources is a part of Micronaut that makes it easy to test an application against external dependencies. It uses Test Containers to configure containers with external dependencies, allowing developers to quickly and easily test their applications. Disney Streaming Team was able to reduce their cold start times by compiling their application as a native image, reducing the startup time from 500 megabytes to 83 milliseconds with less resources. Alvaros shared more tips about Micronaut in his session on YouTube.
Haladon
Haladon is a microservices framework that offers two editions, Haladon SE and Haladon MP. Haladon SE is lightweight and straightforward while Haladon MP has features such as dependency injection and is more familiar to developers who have used frameworks such as Spring Boot. Haladon also works with Micronaut Android VM and GraalVM Native Image to create slim applications that start quickly, use less memory, and are great for microservices and serverless deployments. It also has an ecosystem of extensions contributed by the community for various libraries.
Authentication with Native Workers
This article provides an overview of how to implement authentication with a native workers application. It covers how to use the public and admin endpoints, how to access the user resource, and how to authenticate as an admin. Additionally, it describes tips and tricks for working with Native image, such as using the gradle on mobile plugins from the Native build tools project and leveraging profile guide optimization from GraalVM Native Image. It also discusses GC options for memory management and JFR support for monitoring.
Monitoring Native Image Applications
This article discusses how to monitor native image applications using Visual VM and how to optimize their size using UPX. It also explains how deploying static applications can reduce container sizes to less than 6 megabytes and how native image applications are more secure since arbitrary code cannot be loaded at runtime.
Gravia Native Image
Gravia Native Image is a tool that can be used to build applications as native executables. It only includes the code that is actually being used in the application, eliminating any unnecessary code. Reflection needs to be configured in order for it to work, which can be seen as a security improvement. It also requires a build time step, which can take some time and resources. Gravia Native Image also produces platform specific native executables and it is recommended to build the application as a native image towards the end of the development cycle. Reflection is supported in both JVM and native image mode, with some reflection calls being detected and resolved by Native Image itself. An arbitracing agent can also be used to observe the application behavior in the JVM.
Configuring Build Files
This presentation explained how to use configuration files to set up libraries and tools for automatic build systems. The centralized place for these configurations is a repository on GitHub, where community members and ecosystem members can contribute and share them. To configure this, users can enable access to the repository in their build files, which will allow the build tools to pull the necessary metadata from the repository. The presentation also discussed new features of GraalVM such as dedicated downloads, performance improvements, and compatibility with Java libraries. To get started with GraalVM, users can download it from their website or use SDKMAN.
Conclusion
In conclusion, this talk provides an overview of the features and best practices that GraalVM Native Image and Micronaut offer. By utilizing the platform, developers can create faster and more lightweight applications with fewer resources. It also provides tips on authentication and monitoring applications with Visual VM. Finally, it explains how to set up configuration files to set up libraries and tools for automatic build systems. Using GraalVM Native Image and Micronaut, developers can create applications that are optimized for speed and memory usage.
You can also ask questions on the complete talk using Devoxx Insights