DEV Community

Cover image for Making applications created with old Java versions work on Java 9 and later versions
Roberto Gentili for Burningwave

Posted on • Edited on

1

Making applications created with old Java versions work on Java 9 and later versions

With Burningwave Tools it is possible to perform dependencies shrinking and also to make applications created with old java versions work on java 9 and later versions.
To include Burningwave Tools in our project you need to add the following dependency to your pom.xml:

<dependency>
    <groupId>org.burningwave</groupId>
    <artifactId>tools</artifactId>
    <version>0.27.2</version>
</dependency>

HitCount

To adapt applications to java 9 and later you must create an application adapater and run it with a jdk 9 or later. In this application adapter you must load, by using PathHelper, the jdk libraries by which the target application was developed and pass to the method captureAndStore of TwoPassCapturer component, as first parameter, the name of the class of your application that contains the main method. In the example below we adapt a Java 8 Spring Boot application to Java 9 or later.

ComponentSupplier componentSupplier = ComponentContainer.getInstance();
PathHelper pathHelper = componentSupplier.getPathHelper();
Collection<String> paths = pathHelper.getAllMainClassPaths();
if (JVMInfo.getVersion() > 8) {
    paths.addAll(pathHelper.getPaths("dependencies-capturer.additional-resources-path"));
}
List<String> _paths = new ArrayList<>(paths);
Collections.sort(_paths);
Result result = TwoPassCapturer.getInstance().captureAndStore(
    //Here you indicate the main class of your application
    "com.springbootappadapter.SpringBootWebApplication",
    args,
    paths,
    //Here you indicate the destination path where extracted
    //classes and resources will be stored  
    System.getProperty("user.home") + "/Desktop/dependencies",
    true,
    //Here you indicate the waiting time after the main of your
    //application has been executed. This is useful, for example, 
    //for spring boot applications to make it possible, once started,
    //to run rest methods to continue extracting the dependencies
    0L
);
result.waitForTaskEnding();
Enter fullscreen mode Exit fullscreen mode

After prepared the dependencies adapter you need to run it: at the end of the execution you will find in the destination folder a system executable (a .cmd file under windows and a .sh file under unix) with which it will be possible to test the extracted dependencies:

extracted dependencies folder

We learned how to adapt a Java application to Java 9 and later versions and you can download/clone the tutorial shared here on GitHub: to make it works you need:

For further assistance you can open a discussion on GitHub or you can ask on Stack Overflow.

Special thanks to Jim Jerald Burton for maintaining the source code of this tutorial.

Heroku

Deliver your unique apps, your own way.

Heroku tackles the toil — patching and upgrading, 24/7 ops and security, build systems, failovers, and more. Stay focused on building great data-driven applications.

Learn More

Top comments (0)

👋 Kindness is contagious

Engage with a wealth of insights in this thoughtful article, cherished by the supportive DEV Community. Coders of every background are encouraged to bring their perspectives and bolster our collective wisdom.

A sincere “thank you” often brightens someone’s day—share yours in the comments below!

On DEV, the act of sharing knowledge eases our journey and forges stronger community ties. Found value in this? A quick thank-you to the author can make a world of difference.

Okay