Modules with platform specific parts

Samuel Audet samuel.audet at gmail.com
Thu Sep 30 13:13:07 UTC 2021


Hi Mike,

It's possible to do some pretty cool stuff with Maven, as Hervé points 
out, and also be sure to check out the plugins I created for Gradle:
https://github.com/bytedeco/gradle-javacpp

But Gradle is the same as OpenJDK: They do not care about native 
libraries. It's great that Gradle allows to be hacked that way, but 
there are no incentives, at all, for unifying, creating standards, for 
the Java platform, unlike, for example, the Python platform, where we 
have well defined specs to get stuff done with native libraries. (The 
fact that we can't get anything done in Python without native libraries 
is probably what helped it.)

I'm sorry to say, Johan, but it does all come down to politics. There 
simply just isn't any money to throw around at the problem, and yes 
Gregg I do also believe OpenJDK is much to blame here: That needs to change.

Now, since Oracle finally got the memo in court, I hope they stop 
beating down Java, and allow others to pick it up and do something with 
it. But who is that going to be? Amazon? IBM? Google? Microsoft? Not 
sure any of those would be any better, frankly. My dream would be to 
turn Java into an industry standard with its own independent foundation, 
just like Linux, Python, LLVM, LibreOffice, etc. Java deserves that too! 
And I would vote for Johan to get started on this :) With better 
leadership, I'm sure it would be possible to gather a lot lot more 
contributors.

Samuel

On 9/28/21 5:20 PM, Mike Hearn wrote:
> To get back to technical aspects, the sub-question of native code 
> loading from JMODs/JARs has come up before. In 2018 I did some 
> experiments with loading native code directly from memory (i.e. a JAR) 
> on different operating systems, and wrote up the results here:
> 
> https://mail.openjdk.java.net/pipermail/jigsaw-dev/2018-April/013762.html
> 
> Linux had the best support, Windows was a runner up and macOS didn't 
> support it at all - you'd have to just write it out to disk and reload. 
> Dependencies between multiple native libraries was an open question. The 
> JVM is flexible, and since 2018 Panama has done a lot of work to improve 
> the internals of native code loading. It would be easy to make some 
> prototypes of different approaches now. Jigsaw seems to be de-staffed so 
> it's very much a case of "he who codes, wins" at this point - I don't 
> think the Java architects are going to descend from a throne and issue a 
> recommendation, given that the JDK and JavaFX already picked their own 
> approach (SDKs with your approach 1).
> 
> It may be worth taking a step back and asking to what extent is this 
> need driven by inadequate build tools, vs a true lack in the 
> Java platform itself. If Maven/Gradle worked better and the repository 
> format more supportive of platform-specific modules, would these four 
> different patterns matter at all? Put another way, what stops the JDK 
> itself being hosted entirely on Maven Central? If those tools more fully 
> embraced the jlink model then a lot of these questions and SPI-related 
> busywork would go away.
> 


More information about the jigsaw-dev mailing list