Hello,

Maybe some other databases could be used ?

Like SQLite, which is used in the Geopackage format, so this driver will be present in SIS if we use the incubator module anyway.


Johann Sorel


Le 18/08/2026 à 19:49, Martin Desruisseaux via dev a écrit :
Hello all

While I initially though to replace Derby by H2, I changed my mind and propose HSQLDB at least for the next SIS version. The reasons are:

 * HSQLDB license (BSD-like) more compatible with Apache than H2
   licenses (category B).
 * HSQLDB depends only on Java modules that we already use, except one:
     o java.desktop (I wonder why, but SIS uses it too anyway)
     o java.logging
     o java.naming
     o java.sql
     o java.xml
     o jdk.unsupported — this one is a problem, see below
 * H2 adds more dependencies:
     o java.management
     o jdk.unsupported
     o OSGI (not sure if optional or mandatory)
     o java.scripting (optional)
     o java.compiler (optional)
     o javax.servlet (optional)
     o jakarta.servlet (optional)
     o JTS 1.17 (optional, but SIS uses JTS 1.20)
     o Apache Lucene (optional)
     o SLF4J (optional)
 * HSQLDB support collation directly, while H2 documentation gives the
   impression that is needs an additional dependency (ICU4J).
 * HSQLDB has a `module-info.class` file while H2 does not.
 * HSQLDB has more tests than H2 in Apache SIS code base.

The JTS dependency may be a risk of conflict if SIS does not use the same version as H2. The biggest issue that I see with HSQLDB it its usage of `jdk.unsupported`. This issue has been reported to their bug tracker [1][2].

    Martin

[1]https://sourceforge.net/p/hsqldb/bugs/1752/
[2]https://sourceforge.net/p/hsqldb/feature-requests/376/


Reply via email to