OpenJFX JMOD Files

Scott Palmer swpalmer at
Mon Dec 10 22:52:27 UTC 2018


> On Dec 10, 2018, at 2:16 PM, August Nagro <augustnagro at> wrote:
> I wouldn't recommend publishing JMOD files on maven central since the file format is not yet stable (based on zip currently, but ideally will change to better compression in the future). JMOD seems to be 'unfinished business' from JPMS.

I don’t see that as a problem as new versions can be uploaded as required. 

> I've also found that for some reason building modular FX applications with jlink + JMOD files produces significantly bigger runtime images than with the SDK.

Well I don’t know what the full difference is, but for one the jmod-based runtime would have the native libraries in compressed. The class data may also be uncompressed depending on the jlink options used.

It’s too bad this is such a mess. JMOD files can’t be used at runtime, but they have a mechanism to hold native libraries. JAR files lack that mechanism so they can’t be used to make a proper runtime image.  I don’t know why a convention for including native libraries (in the META-INFO folder for example) wasn’t established, but I suspect it had to do with all the improvements they wanted for JMOD that didn’t happen anyway. 

JMOD now is just a mangled jar that isn’t particularly useful.  How do you debug code that has native libraries without the expense of creating a runtime?


>> On Mon, Dec 10, 2018 at 11:59 AM Matthias Bläsing <mblaesing at> wrote:
>> Hi Johan,
>> I was in a similar situation for JNA (Java Native Access) and found,
>> that sonatype accepts other package types than jar/javadoc/sources.
>> To support opening JNI libraries, the native parts need to be packed
>> differently. This packaging is an "aar" (Android Archive). I did not
>> ask sonatype, but just modified the upload, to include the aar together
>> with the primary jar, javadocs and source.
>> You can see for the jna library itself:
>> JNA uses the maven deploy plugin with the deploy-file goal and uploads
>> the files together (from the ant build script):
>>     <artifact:mvn failonerror="true">
>>       <arg value="org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file"/>
>>       <arg value="-Durl=${maven-snapshots-repository-url}"/>
>>       <arg value="-DrepositoryId=${maven-snapshots-repository-id}"/>
>>       <arg value="-DpomFile=${pom}"/>
>>       <arg value="-Dfile=${dist-jar}"/>
>>       <arg value="-Dfiles=${maven-sources-jar},${maven-javadoc-jar},${dist-aar}"/>
>>       <arg value="-Dtypes=jar,jar,aar"/>
>>       <arg value="-Dclassifiers=sources,javadoc,"/>
>>     </artifact:mvn>
>> Maybe that helps
>> Matthias
>> Am Sonntag, den 09.12.2018, 20:36 +0100 schrieb Johan Vos:
>> > I got the use case. I think it should be possible, although in general
>> > uploading to the OSS sonatype repository requires uploading jars for the
>> > classes, sources and javadoc. There is no procedure yet (afaik) for
>> > uploading mods, but we can see if that works.
>> > 
>> > - Johan
>> > 
>> > On Fri, Dec 7, 2018 at 11:20 PM Scott Palmer <swpalmer at> wrote:
>> > 
>> > > Is there a reason not to make the jmod files available as artifacts on
>> > > Maven Central?

More information about the openjfx-dev mailing list