Friday, March 22, 2019

GeoTools 20.3 released

The GeoTools team is happy to announce the release of GeoTools 20.3:
This release is a stable release and is recommend for new development and production systems.

This release is made in conjunction with GeoServer 2.14.3.

Improvements

  • SimpleFeatureIO doesn't allow to encode big string attributes (bigger then 65535 bytes)

Fixes

  • Some Oracle fixes, including supporting table or attribute names with more than 30 chars in Oracle 12, SDONN tests function failing, and speeding up test runs
  • Various fixes encoding filters into Filter Encoding (Filter 2.0 spec), which affect WFS 2.0 client behavior
  • Fixed label placement when labels have line breaks and descenders
  • Keep math operator priority correctly when encoding filters down to SQL
  • For more details see release notes (20.320.2 | 20.1 | 20.0 | 20-RC)

About GeoTools 20 Series

  • JTS Upgrade to version 1.16 and Migrate to JSR-363, see update instructions for details.
  • Channel selection name allows expression
  • Jiffle map algebra
  • PostGIS store improvements optimized to encode additional functions directly into SQL, support for array data types, and geometries with measure.

Sunday, March 3, 2019

GeoTools 21.0 Released

The GeoTools is pleased to announce the release of GeoTools 21.0 our first release with both Java 11 and Java 8 compatibility:
This is a stable release of GeoTools made in conjunction with GeoServer 2.15 and GeoWebCache 1.15.

Release highlights:
  • Works with both Java 11 and Java 8
  • The image processing operations from JAI-EXT are turned on by default (enabling NODATA support for raster data)
  • The combination of app-schema with PostGIS DataStore provides improved OR performance with complex subqueries
  • A new command line tool is available to migrate NetCDF H2 indexes to a centralized database
  • PostGIS DataStore supports NEAREST spatial predicate
  • Improved parsing of NetCDF units
  • Equal area function for vector data classification
  • CSS Styling has improved its Flat mode making better use of nested rules
  • Release notes (21.0 | 21-RC | 21-M0 )
This release works with both Java 11 and Java 8, downstream projects are advised that some imports will need to be fixed when upgrading as classes were repackaged for Java 11 compatibility.

We have worked very hard for this release to work with both Java 11 and Java 8. By hitting this goal we are offering GeoTools users and downstream projects the option of migrating to Java 11 when they are ready.

This release completes our participation in the OSGeo Java 2018 Code Sprint. Thanks to individuals and organizations which took part in the code sprint: BoundlessGeoSolutionsGeoCatAstun Technology, and CCRi. Additional thanks to our sponsors whose financial support helps make these activities possible: silver sponsor Gaia3D, bronze sponsors atolosgeo:uk, and Astun Technology.

Java 11 Compatibility

The GeoTools library is now available for use on the module path, see our Java 11 Quickstart for an example:

module org.geotools.tutorial.quickstart {
   requires java.desktop;
   requires org.geotools.main;
   requires org.geotools.shapefile;
   requires org.geotools.swing;
   requires org.geotools.render;
}

Internally GeoTools library includes a MANIFEST.MF entries in each jar providing automatic module names:

DependencyUpgradeAutomatic Module Name
gt-opengisgt-opengisorg.geotools.opengis
gt-metadatagt-metadataorg.geotools.metadata
gt-api(removed)
gt-referencinggt-referencingorg.geotools.referencing
gt-maingt-mainorg.geotools.main
gt-xmlgt-xmlorg.geotools.xml
gt-xmlgt-xmlorg.geotools.xml
gt-maingt-mainorg.geotools.data
gt-jdbcgt-jdbcorg.geotools.jdbc


GeoTools Library Restructure

As part of this work many GeoTools dependencies were updated, and the library was repackaged for use as Java 11 modules. The most significant change is the removal of the gt-api module with its classes being distributed across the other modules.

ModulePackage

gt-apiorg.geotools.decorate
gt-metadataorg.geotools.util.decorate

gt-apiorg.geotools.data
gt-mainorg.geotools.data
gt-apiorg.geotools.data.simple
gt-mainorg.geotools.data.simple
gt-apiorg.geotools.decorate
gt-mainorg.geotools.util.decorate

gt-apiorg.geotools.factory
gt-mainorg.geotools.factory
gt-apiorg.geotools.feature
gt-mainorg.geotools.feature
gt-apiorg.geotools.filter
gt-mainorg.geotools.filter
gt-apiorg.geotools.filter.expression
gt-mainorg.geotools.filter.expression

A key technical requirement for Java 11 compatibility is avoiding having two modules making use of the same package. To avoid this "split-package" error some classes have been moved to different packages.

For additional details see the upgrade instructions in our user guide, or for the complete list the spreadsheet used to coordinate code-sprint activities. 

Over 400 classes moved! 

Java Roadmap Compatibility

The GeoTools library can now be built with Java 11 or Java 8, due to a technical limitation with the core java class libraries our releases will be built with Java 8 for the widest compatibility.

Oracle has contributed a wide range of technologies to the OpenJDK project which now leads Java 11 roadmap going forward. 



Java 11 Provider
License
Linux
macOS
Solaris
Windows
Free Updates
Oracle JDK
Binary Code License
x
x
x
x
2019 March
Oracle OpenJDK
GPL
x
x
x
2019 March
RedHat OpenJDK
GPL
x
2024 October
Adopt OpenJDK
GPL
x
x
x
2022 September

While Oracle JDK 8 has reached end-of-life the open source community has responded with extensive Java 8 support options. RedHat has made a public commitment to contribute fixes to the upstream Java 8 codebase, while a range of organizations are making Java 8 builds available for Windows and macOS users.

Java 8 ProviderLicenseLinuxmacOSSolarisWindowsFree Updates
Oracle JDKBinary Code Licensexxxx2019 January
Oracle OpenJDKGPLxreference only
Oracle OpenJDKBinary Code Licensexxreference only
RedHat OpenJDKGPLx2023 June
Adopt OpenJDKGPLxxx2023 September

Existing OpenJDK users remain unaffected and can upgrade to Java 11 when ready. If you have been using the public distribution of Oracle JDK 8 we recommend switching to OpenJDK 8 at this time, and planning your migration to Java 11 in the next two years.

About GeoTools 21
GeoTools 21 series: