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

Journey to Modern Spring

Journey to Modern Spring

Over the past decade, Spring has made tremendous advancements and improvements in a variety of areas that allow us to create applications in many different forms, such as Microservices, Event Driven, Reactive, Cloud, and Serverless.
And if you look at the major changes in Spring 6 and Spring Boot 3, which were recently released, you'll see that they're making a big push towards cloud native.
Today, we're going to take a look at what cloud native is and take a light-hearted look back at what Spring has in store for cloud native and the journey we've taken to get to where we are today.

Arawn Park

April 22, 2023
Tweet

More Decks by Arawn Park

Other Decks in Programming

Transcript

  1. 2013.12 2017.09 4QSJOH BOE 4QSJOH#PPU 2018.03 2023.09 2021.09 2018.09 2014.03

    2014.04 JDK 8 Spring 4.x Spring Boot 1.x Spring 5.x Spring Boot 2.x JDK 11 JDK 17 JDK 21 2022.11 2023.11 4QSJOH
  2. 8IBUsTOFX 4QSJOHBOE4QSJOH#PPU Java 17 and Jakarta EE 9 / 10

    Native Executables Observability Smaller Changes in Core and Web Testing Language: text blocks, switch expressions Core libraries: collection factory methods, etc Type system: records, sealed classes Module system: module introspection, module path scanning Enterprise: Servlet 5.0, JPA 3.0, etc Ahead Of Time AOT GraalVM Native Image Ahead Of Time AOT for TestContext Micrometer Observation
  3. 5SBEJUJPOBM+BWBBQQMJDBUJPO TUBSUVQTUFQT Application sources Package application Load and Parse configuration

    analyze dependencies build dependency tree execute code Build time Runtime
  4. /BUJWF&YFDVUBCMFT Application sources Package application Load and Parse configuration analyze

    dependencies build dependency tree execute code Native image Runtime Build time
  5. 8IBUsTOFYU 4QSJOH BOE+%, Project Galahad GraalVM technology merging into OpenJDK

    Project CRaC Bootstrapping from a warmed up HotSpot JVM snapshot Project Loom lightweight threading model within the JVM Project Leyden OpenJDK aims to introduce well defined static images
  6. 1SPQFSUJFTPG DMPVEOBUJWFBQQMJDBUJPOT Scalability Dynamically support increasing or decreasing workloads Loose

    coupling Components have minimal knowledge of each other Resilience Maintain level of service in face of adversity Observability Knowledge about the internal state inferred from the outside Manageability Level of control from the outside: update, configure, deploy
  7. https://www.hpcwire.com/2012/03/19/cloud_moving_from_hype_to_reality/ Spring 5 Spring Boot 2 Java 11 Java 17

    Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010
  8. 4QSJOHJTUIFNPEFSO QSPHSBNNJOHNPEFMGPS UIFDMPVEHFOFSBUJPO https://www.theregister.com/2009/08/19/springsource_cloud_foundry/ Spring 5 Spring Boot 2 Java

    11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010
  9. "QQMJDBUJPO1PSUBCJMJUZ 2015 2016 2017 2018 2019 2020 2021 2022 2014

    2013 2012 2011 2010 2023 Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4
  10. 2015 2016 2017 2018 2019 2020 2021 2022 2014 2013

    2012 2011 2010 2023 Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 https://aionys.com/how-to-benefit-from-microservices-architecture-implementation/
  11. 2015 2016 2017 2018 2019 2020 2021 2022 2014 2013

    2012 2011 2010 2023 Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 https://www.pngkey.com/detail/u2e6q8i1e6i1i1w7_netflix-oss-spring-cloud-netflix/
  12. 2015 2016 2017 2018 2019 2020 2021 2022 2014 2013

    2012 2011 2010 2023 Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 https://architecturenotes.co/12-factor-app-revisited/
  13. #VJMEJOH 1SPEVDUJPOSFBEZ "QQMJDBUJPOT 2VJDLMZBOE&BTJMZ Spring 5 Spring Boot 2 Java

    11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2012 2011 2010 2013 Spring 4
  14. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2012 2011 2010 2013 Spring 4
  15. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2012 2011 2010 2013 Spring 4 https://thenewstack.io/solomon-hykes-leader-open-source-world-needs/
  16. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2012 2011 2010 2013 Spring 4 https://techcrunch.com/2014/11/13/amazon-launches-lambda-an-event-driven-compute-service/
  17. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2012 2011 2010 2013 Spring 4 https://openjdk.org/projects/valhalla/design-notes/state-of-valhalla/02-object-model Value Object (marker) Identity Object (marker) Cursor Point its box List Cursor its box List Object Iterator Abstract List (partially concrete) String (identity significant) int[] (mutable array) HashMap (mutable object) LocalDate (VBC = value based class, just before migration) Memory Segment (value object: secure, no box, better VBC) Optional (VBC migrated to value object, a NOID) int long float double boolean char byte short Island of Classless Scalar Primitives their boxes IDENTITY OBJECT REF (ID-O-SAURs) object identity construction safety fields stay together fast pointer compare VALUE OBJECT REF (NOIDs) (includes PRIM boxes) freely copyable field-wise flattenable construction safety atomicity, no identity THIS MIDDLE SWATH IS WHAT’S NEW IN VALHALLA NON-CONCRETE REF polymorphic abstract class or interface field-wise flattenable (like NOID) freely copyable (like NOID) no identity (like NOID) defaults to all-zero bits no nulls, no direct recursion no construction safety no atomicity (tearing) no polymorphism extended primitives, with class-like declaration POSSIBLE IN VALHALLA PRIMITIVES (one quadrant) REFERENCES (three quadrants) PRIM = ¬ REF, scalar/extended primitive REF = ¬ PRIM, all are nullable, recursive The Zoo of Java Field Types (Valhalla draft design, adding Extended Primitives)
  18. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2012 2011 2010 2013 Spring 4
  19. https://magicseaweed.com/news/gallery-xl-cloudbreak/12854/ $MPVE/BUJWF&OUFSQSJTF XBWFCSPLF 2015 2016 2017 2018 2019 2020 2021

    2022 2014 2013 2023 Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2010
  20. https://twitter.com/cloudnativejava 2015 2016 2017 2018 2019 2020 2021 2022 2014

    2013 2023 Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2010
  21. 2015 2016 2017 2018 2019 2020 2021 2022 2014 2013

    2023 Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2010
  22. 2015 2016 2017 2018 2019 2020 2021 2022 2014 2013

    2023 Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2010
  23. 2015 2016 2017 2018 2019 2020 2021 2022 2014 2013

    2023 Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2010 $MPVEOBUJWFUPQPMPHJFT Containers Lightweight and isolated computing contexts Orchestration Container scheduling, cluster management Serverless Servers and backing services managed by cloud providers
  24. 2015 2016 2017 2018 2019 2020 2021 2022 2014 2013

    2023 Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2010 https://thecamels.org/en/what-is-the-lift-and-shift-approach-when-migrating-to-the-cloud/
  25. 2015 2016 2017 2018 2019 2020 2021 2022 2014 2013

    2023 Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2010 DIBMMFOHFTUPCFDPNJOH DMPVEOBUJWFBQQMJDBUJPO Start up and Ramp up time Footprint Memory limits and imperfect CPU Application sources Package application Load and Parse configuration analyze dependencies build dependency tree execute code Build time Runtime
  26. 2015 2016 2017 2018 2019 2020 2021 2022 2014 2013

    2023 Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2010 https://www.womansworld.com/posts/animals/cats-in-small-spaces-169156
  27. 5IF3FBDUJWF8BZ https://cutt.ly/K82TXBO Spring 5 Spring Boot 2 Java 11 Java

    17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010
  28. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 https://www.focaloid.com/casestudies/building-a-customer-support-solution/
  29. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 https://github.com/topics/event-driven-architecture
  30. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010
  31. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-scanning-index *OEFYPG $BOEJEBUF$PNQPOFOUT Optimizes component scanning and improving performance Generating an index file with annotation process Reducing startup time and memory usage dependencies {
 annotationProcessor "org.springframework:spring-context-indexer:${version}"
 } Gradle META INF/spring.components dev.springrunner.application.PostWriteProcessor=org.springframework.stereotype.Service dev.springrunner.data.JdbcPostRepository=org.springframework.stereotype.Repository ...
  32. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 https://www.infoq.com/presentations/present-future-reactive-systems/
  33. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html#spring-webflux 8FCPO3FBDUJWFTUBDL Designed to high concurrency, scalability and low latency with non blocking I/O Asynchronous and event driven programming models Support for Spring projects, including data and security Ideal for building microservices and event driven architectures It s not ideal for all cases Consider specific requirements and trade offs to decide wisely
  34. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 https://developers.redhat.com/blog/2019/06/19/project-loom-lightweight-java-threads
  35. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 https://developers.redhat.com/blog/2019/06/19/project-loom-lightweight-java-threads 1SPKFDU-PPN JDK 19 finally includes Project Loom as regular preview Virtual threads as lightweight threading model within JVM A different magnitude of scalability for imperative programming Implemented as virtual variants of java.lang.Thread Not blocking an operating system thread on I/O operations
  36. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 https://www.javacodegeeks.com/2017/09/java-9-jigsaw-jpms-modules-personal-exploration.html
  37. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 https://www.baeldung.com/project-jigsaw-java-modularity 1SPKFDU+JHTBX Better organization and structure for large applications Efficiently manage complex dependencies, reduce footprint Strengthen security, maintainability with restricted access Boost Java runtime optimizations, reduce startup time
  38. Spring 5 Spring Boot 2 Java 11 Java 17 Spring

    6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010
  39. https://www.oreilly.com/library/view/beyond-the-twelve-factor/9781492042631/ Spring 5 Spring Boot 2 Java 11 Java 17

    Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2016 2017 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010
  40. %FQMPZJOHUP $POUBJOFST 4FSWFSMFTT 2016 2017 2018 2019 2020 2021 2022

    2014 2013 2023 Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2010 2015
  41. 2016 2017 2018 2019 2020 2021 2022 2014 2013 2023

    Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2015 https://developers.redhat.com/articles/2022/04/19/java-17-whats-new-openjdks-container-awareness $POUBJOFS"XBSFOFTT Kubernetes and orchestrations limit container with CPU, memory quotas JVM detects container environment for awareness Impact garbage collection, size of heap or thread pools, parallelism and etc Supported in Java 8u192 and later recommend 17 and 11.0.16 ❯ java -XX:+UseContainerSupport app.jar Console 2010
  42. 2016 2017 2018 2019 2020 2021 2022 2014 2013 2023

    Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2015 https://developers.redhat.com/articles/2022/04/19/java-17-whats-new-openjdks-container-awareness $16 .FNPSZMJNJUTBOEVTBHF CPU quota determines is available processors, but unreliable Increase processors or threads beyond default to avoid throttling Memory usage relies on system/classes, threads, max heap size Use heap size of 70 80 for containers ❯ java -XX:InitialRAMPercentage=75
 -XX:MinRAMPercentage=75 -XX:MaxRAMPercentage=75
 -XX:ActiveProcessorCount=<2x yourCpuLimit> 
 app.jar Console 2010
  43. 2016 2017 2018 2019 2020 2021 2022 2014 2013 2023

    Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2015 https://learn.microsoft.com/en-us/azure/developer/java/containers/overview (BSCBHFDPMMFDUJPO JVM defaults use available processors and memory for ergonomics Select SerialGC or G1GC, depending on the resources available Always set GC based on heap size and available processes Resources available Default GC Any number of processors Up to 1791 MB of memory SerialGC 2 processors 1792 MB or more of memory G1GC 2010
  44. 2016 2017 2018 2019 2020 2021 2022 2014 2013 2023

    Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2015 https://www.happycoders.eu/java/java-10-features/#Application_Class-Data_Sharing "QQMJDBUJPO $MBTT%BUB4IBSJOH JVM features for share common class metadata Reduces startup time and memory footprint Available in OpenJDK 8 and OracleJDK and later versions Ý Ý Ý Application sources Package application SharedArchiveFile JVM JVM JVM 2010
  45. 2016 2017 2018 2019 2020 2021 2022 2014 2013 2023

    Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2015 https://www.reddit.com/user/EFdnV/comments/11t0i7e/how_can_cloud_native_java_evolve_to_help_achieve/ 2010
  46. 2016 2017 2018 2019 2020 2021 2022 2014 2013 2023

    Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2010 2015 https://docs.oracle.com/en/graalvm/index.html
  47. 2016 2017 2018 2019 2020 2021 2022 2014 2013 2023

    Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2015 &GGJDJFOU$POUBJOFS*NBHFT Running spring boot fat jar in container may cause overhead Unpacking and running separately may improve startup times Spring Boot enables layered docker images for optimized builds https://docs.spring.io/spring-boot/docs/current/reference/html/container-images.html#container-images.efficien FROM amazoncorretto:17 AS builder COPY . / RUN ./gradlew clean build RUN build/libs RUN jar -xf application.jar FROM amazoncorretto:17 COPY --from=builder build/libs/ ENTRYPOINT ["java -cp BOOT-INF/classes:BOOT-INF/lib/* springcamp.CloudApplication"] Dockerfile 2010
  48. 2016 2017 2018 2019 2020 2021 2022 2014 2013 2023

    Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2015 https://docs.spring.io/spring-boot/docs/current/reference/html/container-images.html#container-images.docker %PDLFSGJMFT  $MPVE/BUJWF#VJMEQBDLT Make dockerfiles for optimized image with layertools Buildpacks convert apps into something that cloud platform run Support directly for both maven and gradle FROM amazoncorretto:17 AS builder COPY . / RUN ./gradlew clean build RUN java -Djarmode=layertools -jar build/libs/application.jar extract FROM amazoncorretto:17 COPY --from=builder application/dependencies/ ./ COPY --from=builder application/spring-boot-loader/ ./ COPY --from=builder application/snapshot-dependencies/ ./ COPY --from=builder application/application/ ./ ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"] Dockerfile 2010
  49. 2016 2017 2018 2019 2020 2021 2022 2014 2013 2023

    Spring 5 Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2010 2015 https://spring.io/blog/2021/03/11/announcing-spring-native-beta
  50. 2016 2017 2018 2019 2022 2014 2013 2023 Spring 5

    Spring Boot 2 Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2012 2011 2015 /BUJWF&YFDVUBCMFT 2010 2021 2020 Application sources Package application Load and Parse configuration analyze dependencies build dependency tree execute code Native image Runtime Build time
  51. (FUUJOHTUBSUFEXJUI /BUJWF https://gbiomed.kuleuven.be/nl/biomedia/christophedeleclusepassievooratletiek Spring Boot 2 Java 11 Java 17

    Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 2016 2017 Spring 5 Java 21
  52. Spring Boot 2 Java 11 Java 17 Spring 6 Spring

    Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 2016 2017 Spring 5 Java 21 Spring AOT Plugin Spring application sources javac Application bytecode AOT sources javac AOT bytecode Native configuration native image compiler Native Executable Substrate VM 8JOEPXT&9&GJMF -JOVY&-'GJMF NBD04.BDI0 /BUJWF&YFDVUBCMFT
  53. Spring Boot 2 Java 11 Java 17 Spring 6 Spring

    Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 2016 2017 Spring 5 Java 21 4QSJOH"05 "IFBEPG5JNF Reducing startup time and memory footprint Runtime hints for reflection, resources, serialization, proxies Optional for optimized JVM deployments Precondition for GraalVM native executables AOT is a tradeoff: extra build setup and less flexibility at runtime AOT is compiles spring apps to native executable binaries https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#core.aot
  54. plugins {
 id 'org.graalvm.buildtools.native' version '0.9.17'
 } Spring Boot 2

    Java 11 Java 17 Spring 6 Spring Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 2016 2017 Spring 5 Java 21 (SBBM7./BUJWF*NBHF4VQQPSU GraalVM as the de facto standard for native executables Strong closed world assumption, no runtime adaptations AOT processed application as input native executable Very long build time for actual native code generation Gradle ❯ gradle processAot ❯ gradle processTestAot ❯ gradle bootBuildImage https://docs.spring.io/spring-boot/docs/current/reference/html/native-image.html
  55. Spring Boot 2 Java 11 Java 17 Spring 6 Spring

    Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 2016 2017 Spring 5 Java 21 Ý Ý Metrics Tracing Logs distributed tracing https://spring.io/blog/2022/10/12/observability-with-spring-boot-3 0CTFSWBCJMJUZ
  56. Spring Boot 2 Java 11 Java 17 Spring 6 Spring

    Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2018 2019 2020 2021 2014 2013 2012 2011 2010 2016 2017 Spring 5 Java 21 BMXBZTCFXBUDIJOH 2022 2023 Beyond traditional monitoring Constant partial degradation/failure Expect the unexpected Answer unknown questions about your system Observability is achieved through a set of tools and practices that aims to turn data points and context into insights
  57. Spring Boot 2 Java 11 Java 17 Spring 6 Spring

    Boot 3 Spring Boot 1 Java 8 Spring 4 2015 2018 2019 2020 2021 2022 2023 2014 2013 2012 2011 2010 2016 2017 Spring 5 Java 21 4QSJOH'SBNFXPSLm /PWFNCFS Foundation for Spring Boot 3.2 3.3 Production ready on JDK 17 21 LTS
  58. 3FGFSFODF Spring Framework 6 Infrastructure Themes Cloud Native Spring in

    Action JVM Kubernetes: Optimizing Kubernetes for Java Developers Kubernetes Native Java with Quarkus