[gdal-dev] Advice on deploying components that use GDAL

Even Rouault even.rouault at spatialys.com
Thu Nov 7 12:46:01 PST 2024


Barry,

I'm not totally sure to have the full picture of what you 
deploy/distribute. I'd assume the main difficulty for the end users of 
your Java component is to get the GDAL native library, and probably even 
more tricky, the libgdaljni.so/dll/dylib. If you assume they have 
managed libgdal itself, then you could distribute gdal.jar + 
libgdaljni.so/dll/dylib (possibly in several CPU architectures depending 
on what you target...) of the minimum GDAL version you want to support 
(in theory you should be able to use libgdal native 3.X against 
gdal.jar/libgdaljni 3.Y if X >= Y as it relies only on the C API which 
we normally guaranteed to be ABI backwards compatible in the 3.x 
series). If you want to support GDAL >= 3.8 and < 3.8, I'm afraid you'll 
have to provide a gdal.jar + libgdaljni combo of let's say GDAL 3.0 (or 
a later release), and another one of 3.8

By the way, I've seen use of Panama 
(https://openjdk.org/projects/panama/) to avoid the need of JNI at all: 
https://github.com/apache/sis/tree/main/optional/src/org.apache.sis.storage.gdal/main/org/apache/sis/storage/panama 
.  So in theory that could makes things simpler (at least you wouldn't 
need the libgdalalljni.so/dll/dylib native code). Haven't tried it / 
can't comment on the appropriateness of that particular code.  Perhaps 
at some point someone will need to reboot the GDAL Java bindings to be a 
Panama project if JNI is abandonned (and that would likely be totally 
disconnected from SWIG. At least 
https://github.com/search?q=repo%3Aswig%2Fswig%20panama&type=code 
doesn't show any sign)

Even

Le 07/11/2024 à 20:45, Barry DeZonia via gdal-dev a écrit :
> Hey all,
>
> I hope this is the right place for this email. I am a developer that 
> has written a java component that interfaces with the java bindings 
> and allows my app users to access gdal data.
>
> The problem I have is that gdal seems to release somewhat often. I 
> wrote my code initially for 3.7 but later used 3.8 (and abandoned 3.7) 
> due to some new features present in the java bindings. Since then 
> there have been gdal releases for 3.9 and 3.10.
>
> How should I release my (java jar) component?  One release version per 
> gdal release? Then am I forcing a similar fork in all downstream 
> projects that use my components? It seems so.
>
> Now also imagine my component relies on something else that also has 
> multiple versions. I could get a combinatorial explosion in the number 
> of versions of my plugin.
>
> And I also seem to need to make a decision on how to nicely target 
> older gdals that don't have the new java niceties of 3.8. Many people 
> are using gdal versions older than 3.8.
>
> This whole topic is making my head spin a little. Any advice?
>
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/gdal-dev

-- 
http://www.spatialys.com
My software is free, but my time generally not.
Butcher of all kinds of standards, open or closed formats. At the end, this is just about bytes.



More information about the gdal-dev mailing list