One of the really exciting features added into Java 9 was the ability to have a multi-jar release. This means if you want to use a later version of Java, then you can still have a jar for Java 8 that will just contain extra or different versions of classes for the later version. This feature was introduced in Java 9 in JEP-238. This makes it easier to try to support the most users (realistically Java 8) while allowing use of more modern features if a more modern Java version is available.
How did we add multi-jar support?
Adding multi-jar support needs a little bit of work in Java. I have found 2 approaches to doing it in Maven. Either you can recompile the Java11 code using AntRun or you can have 2 Maven modules. Because we have a separate build module in JPedal and JDeli for the shade plugin, we used the second approach. There is also a really good article from Trisha Gee on creating multi-jars in IDEA.
At the moment, we are using this to add ONE additional file, module-info.java. This is another Java 9 feature (project Jigsaw) which allows users to make use of modularisation in their code. This allows us to lock the code down to the official API for JPedal/JDeli if you are using Java 9 or later. The module names are com.idrsolutions.jpedal and com.idrsolutions.jdeli for the module settings If you are using Java 8, nothing should change…
What does this mean going forward?
This means, while we support all Java releases 8 and above. We will be able to offer optimisations for the latest LTS and still providing complete support for an older version. When we change the LTS, we will review this base release. This is likely to stay as Java 8 in the foreseeable future. Any changes will be announced well in advance on our blog, as we did with the move to Java 8, and we will ask for customer feedback first. We will also be looking into any areas of the code where we can gain substantial performance or memory advantages from having an optimised Java 11 version of the code for Java 11 users.
Currently, we regard the inclusion of module-info as experimental, so we welcome any feedback, ideas, or Java 11 specific enhancements. What are your thoughts?
Are you a Java Developer working with Image files?
What is JDeli?
JDeli is a commercial Java Image library that is used to read, write, convert, manipulate and process many different image formats.
Why use JDeli?
To handle many well known formats such as JPEG, PNG, TIFF as well as newer formats like AVIF, HEIC and JPEG XL in java with no calls to any external system or third party library.
What licenses are available?
We have 3 licenses available:
Server for on premises and cloud servers, Distribution for use in a named end user applications, and Custom for more demanding requirements.
What's our Story?
We are a small company who have been developing innovative Java, PDF and HTML5 solutions for over 25 years.