Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Best options and bonus advantages for developers (while upgrading to Java 11):

  • Minimum best option- When upgrading to JDK 11 (LTS) for spring boot applications please consider using the OpenJ9 JRE to help reduce the memory required.
    • change openjdk:8-jre-slim →  adoptopenjdk/openjdk11-openj9:alpine-jre
  • Minimum second option - if you have binary dependencies that will not work with alpine. Please only use this if you have exhausted all of the instructions about how to convert to alpine.
    • change openjdk:8-jre-slim →  adoptopenjdk/openjdk11-openj9:jre
  • Bonus - Make sure you allow for JAVA_OPTS environment to be passed into your jvm startup to allow for things such as remote debugging.
  • Bonus - Setup docker layers to allow for smaller docker image updates – the youtube video adds this so you can just push your modified application layer vs all the jars again for java class changes.
  • Bonus - if you don't need spring boot or jvm remove jvm/spring boot from your micro service.

---------Upgrade issues and tips------

When migrating from Java8 to Java 11 – some maven issues were found and there are tips in this page. https://winterbe.com/posts/2018/08/29/migrate-maven-projects-to-java-11-jigsaw/

Great video by the OpenJ9 folks https://www.youtube.com/watch?v=LmmwtquTpQs

---------optimization tests-----------

Size and memory footprint optimization that is observed:

  • Docker image size: 342MB -> 275MB - ~20% reduction in size
  • Memory: 410MB → 241MB using OpenJ9 11