Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Developer Experience in a Modern Java Framework

Developer Experience in a Modern Java Framework

Micronaut is a modern, JVM-based, full stack Java framework designed for building modular, easily testable JVM applications.

Developed since 2018 by the creators of the Grails framework, Micronaut takes inspiration from lessons learnt over more than 10 years building frameworks and developer tools.

In this talk, Micronaut committer Álvaro Sánchez-Mariscal, will demonstrate with a live coding session the developer experience of a Micronaut user through features like:
- Sub-second startup times.
- Instantaneous functional testing including injection of any bean.
- First-class support for Testcontainers for both development and testing via Micronaut Test Resources.
- Declarative HTTP clients with HTTP contracts via Java interfaces.
- Source code compile-time checks for faster feedback.
- Advanced annotations for bean requirements, replacements and fallbacks.
- Type-safe, validated configuration system.
- Batteries-included packaging options, including JAR, Docker and GraalVM native image formats.
- Control Panel, the Micronaut development UI.

Álvaro Sánchez-Mariscal

October 14, 2024
Tweet

More Decks by Álvaro Sánchez-Mariscal

Other Decks in Technology

Transcript

  1. Copyright © 2024, Oracle and/or its affiliates 2 About me

    • Coming from Madrid • Developer since 2001 (Java stack) • Micronaut core developer since its inception (2017). • Author: Maven Plugin, Object Storage, Kubernetes, Cache, Control Panel. • Others: Core, Gradle, AWS, GCP, Azure, Security, Test, etc. • Currently at Oracle Labs: • Micronaut and Graal Development Kit for Micronaut (GDK). • GraalVM Native Build Tools. @alvaro_sanchez
  2. Copyright © 2024, Oracle and/or its affiliates. Micronaut® is a

    registered trademark of Object Computing, Inc. Use is for referential purposes and does not imply any endorsement or affiliation with any third-party product. 4
  3. Introduction to Micronaut Copyright © 2024, Oracle and/or its affiliates

    5 Micronaut is a complete solution for any type of application: microservices, message-driven producers or consumers, command-line apps, serverless functions, etc. All application types Micronaut leverages Java annotation processors and other optimisations to compute the framework infrastructure at compile-time, drastically reducing startup time and memory consumption. Highly optimised Modern, open-source Java Framework Micronaut has been designed from scratch in 2017, focused on modern architectures like microservices and serverless, and with the cloud in mind.
  4. Micronaut computes at build time: • All dependency and configuration

    injection. • Annotation metadata (meta annotations) • AOP proxies. • Bean introspections. • All other framework infrastructure. At runtime: • No reflection. • No proxy generation. • No dynamic classloading. • No classpath scanning. AOT: Ahead Of Time Copyright © 2024, Oracle and/or its affiliates 6 Source code @Singleton class MySvc {} Bytecode class $MySvc$Definition {} class $MySvc$Definition$Reference {} Source code @Builder record Person() {} Source code @Generated class PersonBuilder() {} compilation compilation
  5. 7 Any language, build tool, test framework, reactive library, cloud,

    … Copyright © 2024, Oracle and/or its affiliates
  6. Micronaut features: HTTP Client 9 Copyright © 2024, Oracle and/or

    its affiliates Implemented at compile time
  7. Micronaut features: message-driven applications Kafka • Producers. • Consumers. •

    Kafka Streams. RabbitMQ • Producers. • Consumers. • RPC. MQTT • Publishers. • Subscribers. NATS • Producers. • Consumers. Copyright © 2024, Oracle and/or its affiliates 10
  8. Micronaut features: data access 12 Copyright © 2024, Oracle and/or

    its affiliates Interface implemented at compile time Query generated from the method name, compile-time validated Can have custom queries, inserts, etc
  9. Micronaut unique features: Test Resources 1. Automatic provisioning of external

    resources needed during development or testing. • Containers, binaries, etc. 2. Built-in support: 3. Integrated with JUnit Platform (JUnit / Spock / Kotest) for zero-configuration Testcontainers. 13 Copyright © 2024, Oracle and/or its affiliates • MariaDB • MySQL • Oracle • PostgreSQL • SQL Server • Elasticsearch • Redis • MongoDB • Neo4j • Hashicorp Vault • Kafka • RabbitMQ • MQTT • Localstack
  10. Micronaut unique features: Serialization 1. Drop-in replacement for Jackson Databind,

    compile-time and reflection free. 2. Supports (most of) Jackson, JSON-B and BSON annotations. 3. Why? • Memory performance: 10x smaller runtime footprint. • Security: serializable classes must be opt-in. • Type-safety: Micronaut Serialization performs checks at compile-time (vs Jackson runtime exceptions). • Runtime portability: Micronaut Serialization at runtime supports different annotation sets. 14 Copyright © 2024, Oracle and/or its affiliates
  11. Micronaut unique features: Validation 1. Built-in alternative for Jakarta Bean

    Validation. • Spec features that require reflection are not supported. • Use Hibernate Validator if needed. 2. Supported universally across the framework. • Configuration classes, entities, controllers, etc. 3. Benefits: • Reflection and runtime proxy free. • Smaller footprint (1.4MB less). • Faster startup (200+ ms less). • Compile-time validation. • GraalVM support out of the box. 15 Copyright © 2024, Oracle and/or its affiliates
  12. Graal A full stack for the development and deployment of

    high performance Java cloud native applications
  13. What is Graal Development Kit for Micronaut? Copyright © 2024,

    Oracle and/or its affiliates 23 BUILT FOR GRAALVM NATIVE IMAGE Easily compile ahead-of-time with GraalVM Native Image into small executables that start instantly, and use less memory/CPU. CLOUD-AGNOSTIC MODULES A curated set of Micronaut modules that provide platform-independent support for core cloud services – object store, secrets, streaming, and more. DEV TOOLS AND VS CODE EXTENSIONS Dev tools to generate multicloud application starter templates. VS Code extensions for local development and cloud deployment.
  14. Native Image Goals Low Resource Usage Start Fast Compact Packaging

    Minimize Vulnerability Copyright © 2024, Oracle and/or its affiliates 28
  15. Micronaut and GraalVM 6ms As low as startup time 18MB

    Consuming memory footprint >30% Increased throughput up to and reduced latency
  16. Micronaut and GraalVM 1. The best integration possibly, supported by

    teams working together at Oracle Labs. • GraalVM EE includes optimisations for Micronaut for increased performance and throughput. • GraalVM EE license included in Oracle Cloud. 2. Micronaut is ready for GraalVM Native Image since day 1. • No reflection, no runtime proxies, no bytecode generation, no dynamic classloading. 3. GraalVM tooling for Visual Studio Code and Intellij IDEA. 30 Copyright © 2024, Oracle and/or its affiliates
  17. GraalVM Reachability Metadata Repository Community-driven collection of GraalVM reachability metadata

    for open-source libraries. • Actively maintained by a collective effort of VMware, Oracle and others. • Enabled in GraalVM Native Build Tools (Maven and Gradle plugins). • Integrated by default in Spring Boot and Micronaut. 31 Copyright © 2024, Oracle and/or its affiliates
  18. Micronaut is the fastest to startup 32 Copyright © 2024,

    Oracle and/or its affiliates Source: https://speakerdeck.com/mraible/comparing-native-java-rest-api-frameworks-jchampions-conference-2024
  19. Micronaut is the fastest to startup 33 Copyright © 2024,

    Oracle and/or its affiliates Source: https://speakerdeck.com/mraible/comparing-native-java-rest-api-frameworks-jchampions-conference-2024
  20. Micronaut consumes the less memory 34 Copyright © 2024, Oracle

    and/or its affiliates Source: https://speakerdeck.com/mraible/comparing-native-java-rest-api-frameworks-jchampions-conference-2024
  21. Micronaut and GraalVM powering Disney+ 35 Copyright © 2024, Oracle

    and/or its affiliates https://aws.amazon.com/blogs/opensource/improving-developer-productivity-at-disney-with-serverless-and-open-source/