The GeoTools team is pleased to announce the release of GeoTools 19-RC1:
- geotools-19-RC1-bin.zip
- geotools-19-RC1-doc.zip
- geotools-19-RC1-userguide.zip
- geotools-19-RC1-project.zip
- maven repository
As a release-candidate, 19-RC1 is not intended for production systems, however the API is stable and we invite everyone to try upgrading their applications, report any issues, and help out with the final round of testing and fixing.
This release is made in conjunction with GeoServer 2.13-RC1. This release includes a two major changes, both related to Java 9 compatibility, and a significant set of new features and improvements.
This release is made in conjunction with GeoServer 2.13-RC1. This release includes a two major changes, both related to Java 9 compatibility, and a significant set of new features and improvements.
FactorRegistry Refactoring
For most users, this should not require any changes to make your project compatible. However, if you are accessing the FactorRegistry directly, there are some API changes that you will need to handle. For more details, refer to the FactoryRegistry Refactoring for Java 9 Compatibility proposal.
Java 9 Compatibility
More generally, GeoTools as a whole has been updated to be able to run on Java 9.
If your project depends on GeoTools 19.x, and you want to use it with Java 9, you will need to add the following flags to your JVM runtime arguments:
--add-modules=java.xml.bind --add-modules=java.activation
These add-modules runtime arguments enable the JAXB and Activation modules to the Java Runtime. The Java startup system has been changed, splitting the Java Runtime into modules for a smaller foot print. The jaxb and activation modules are no longer turned on by default.
The add-modules runtime argument is only used in Java 9. To allow your application to start in Java 8 or Java 9 include:
-XX:+IgnoreUnrecognizedVMOptions
GeoTools on Java 9 introduces a few functional changes:
- XML pretty-print behaviour has changed, so that CDATA tags will now be on their own lines. These changes are only cosmetic - there are no functional changes to the XML.
- Certain math functions are more precise on Java 9. This can result differences in the last digit of double values between Java 8 and Java 9. In particular, this has been observed when dealing with reprojected coordinates.
- Small changes in horizontal offset have been observed in labels following lines.
GeoPackage performance improvements
GeoPackage reading and rendering performance improved significantly, up to two times faster on large datasets full extractions and 50% faster on small bounding box searches, bringing GeoPackage on par with PostGIS. We also have a Google spreadsheet with more details.Shapefile remains king of full dataset extractions and the fastest data source for pure spatial driven queries.
Support for more PostGIS data types
The PostGIS data store now has simple support for HStore and JSON columns. HStore is returned as a Map, while JSON is read as a String. In both cases no special query support has been added for those types (but we'd be very happy if someone would work, or sponsor, that functionality too).
Better label position control in map rendering
When setting maxDisplacement on point/polygons the renderer used to search in a circular area around the designated label point. The new displacementMode vendor option allows to control the positioning by specifying the preferred cardinal positions, as a comma separated list.Shapefile now supporting all Java object types on write
Shapefile used to throw exceptions if unrecognized object types were fed to it (basically, anything but geometries, strings, numbers and dates). From now on it will write unrecognized objects as strings instead.Assorted improvements
The success of Open Source depends on you!
GeoTools is released using an open source license, helping make you and your software projects a success. But this is only part of the story....
GeoTools is also an open source community, and depends on your participation to both thrive as a project and to serve you well. As a community this is expressed as a social contract, or an expectation, that goes beyond the terms of our open source license:
Open Source works, when you work: We invite members of the GeoTools community to help test this release candidate, now, before we seek wider distribution.
We have a couple testing priorities where we specifically ask for help:
- Java 9 / Java 18.3: The revised Java roadmap introduce significant changes and we would like to ask for your help testing in these environments.
- Please try out GeoPackage and all the new features mentioned in this blog post
More generally we ask you to upgrade to this release, and let us know how it went. We have a code freeze in effect, now is the time to review and catch any regressions as a team!