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/