Releases: Unidata/netcdf-java
ToolsUI v5.9.1.1 Release
This is a toolsUI only release, which fixes an issue encountered when starting the application, and is caused by a bug in building the toolsUI jar for the v5.9.1 release.
v5.9.1
What's Changed
toolsUI
A special v5.9.1.1 toolsUI only release contains a critical update for the application to address an issue that prevented startup. Please see the v5.9.1.1 release page for toolsUI downloads.
Major bug fix
- Load EnhancementProviders upon VariableDS instantiation by @lesserwhirls in #1478
This bug was introduced during the development of 5.6.1 (may be present in 5.6.1-SNAPSHOTs), and is present in releases v5.7.0 up to v5.9.1. This bug triggers a runtime error in a critical part of the codebase (VariableDS
) in multithreaded environments. Here is an example of a stacktrace that is generated when the bug is triggered:
java.util.NoSuchElementException
at java.base/java.lang.CompoundEnumeration.nextElement(ClassLoader.java:2770)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1213)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1228)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1273)
at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309)
at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1393)
at ucar.nc2.dataset.VariableDS.createEnhancements(VariableDS.java:975)
at ucar.nc2.dataset.VariableDS.enhance(VariableDS.java:238)
at ucar.nc2.dataset.NetcdfDataset.enhance(NetcdfDataset.java:532)
at ucar.nc2.dataset.NetcdfDataset.<init>(NetcdfDataset.java:1148)
at ucar.nc2.dataset.NetcdfDataset.openDataset(NetcdfDataset.java:491)
<snip>
Other notable bug fixes:
- Fix netCDF-C loading in RuntimeConfigParser by @lesserwhirls in #1474
- ToolsUI Bug fixes by @lesserwhirls in #1481
- Set variable caching to true for deferred value creation in NcML by @lesserwhirls in #1482
Minimum Java version for netCDF-Java 
Currently, the netCDF-Java project targets version 8 of the JVM. We are looking to get a feel for the minimum version required by the community, as support for Java 8 begins to dwindle for 3rd party dependencies that the project relies upon. Please consider participating in our GitHub poll. Thank you to those who have voted!
Full Changelog: v5.9.0...v5.9.1
v5.9.0
What's Changed
Features/enhancements:
- Improve netcdf4 logging by @lesserwhirls in #1458
- Use JavaCC to generate udunits code at build time by @lesserwhirls in #1461
- Do not stop trying to disambiguate http locations when 403s are encountered by @lesserwhirls in #1465
Notable bug fixes:
- bugfix for zarr attribute reading by @Yaqiang in #1453
- Unscale false_easting/false_northing when writing Coverage by @lesserwhirls in #1456
- Scan service loader once for filters by @lesserwhirls in #1466
- Allow C library to be loaded after Nc4Iosp initialization for some cases by @lesserwhirls in #1471
Build changes
Gradle was upgraded from 8.13 to 8.14.2. The following 3rd party libraries have been upgraded:
- aws-sdk 2.17.290 -> 2.31.76
- jackson 2.16.1 -> 2.19.1
- guava 32.0.1-jre -> 33.4.8-jre
- jna 5.12.1 -> 5.17.0
- protobuf 3.25.5 -> 4.31.1
- grpc 1.60.0 -> 1.73.0
Minimum Java version for netCDF-Java 
Currently, the netCDF-Java project targets version 8 of the JVM. We are looking to get a feel for the minimum version required by the community, as support for Java 8 begins to dwindle for 3rd party dependencies that the project relies upon. Please consider participating in our GitHub poll.
Full Changelog: v5.8.0...v5.9.0
v5.8.0
What's Changed
Features/enhancements:
- Update GRIB/BUFR Tables by @lesserwhirls in #1414
- Add basic support for libaec decoding using native libraries by @lesserwhirls in #1426
- grib2: Support for General Unstructured Grid (template 101) by @michaeldiener in #1427
- Add support for GRIB2 DRS 42 (CCSDS compression) by @lesserwhirls in #1428
- Enable uduints based time coordinates on scan aggregations by @lesserwhirls in #1439, #1449
- Zarr improvements, including scalar array support by @lesserwhirls in #1448
Notable bug fixes:
- cdm-radial: fix for sigmet volume scan by @michaeldiener in #1409
- Using category list to make sure only unique categories are included by @Yaqiang in #1421
- Remove duplication of global metadata creation for BUFR by @lesserwhirls in #1423
- Do not try to compress variable-sized varaibles by @lesserwhirls in #1424
- Discontiguous time axis subset bug by @lesserwhirls in #1431
- Only apply enhancements once for CoordinateAxis variables by @lesserwhirls in #1437
- ToolsUI bug fixes by @lesserwhirls in #1438
Build changes
The version of gradle used to build the project was upgraded during this release cycle to support building with JDK 21. The upgrade required an upgrade to the shadow plugin, which builds the uber jars, such as toolsUI.jar
and netcdfAll.jar
. The new shadow plugin creates the jar files under build/distributions/
(previously they were created under build/libs/
).
Full Changelog: v5.7.0...v5.8.0
v5.7.0
What's Changed
Features/enhancements:
- Service Provider for applying enhancements by @matakleo in #1369 (see https://www.unidata.ucar.edu/blogs/developer/en/entry/extensible-ncml-for-ai-ml for more information!)
- Upgrade gradle by @tdrwenski in #1337
- Improve performance of enhancement providers by @tdrwenski in #1373
- Add relativize method to MFile by @tdrwenski in #1388
- Enhance Bufr data support including multi-category messages by @Yaqiang in #1396
Notable bug fixes:
- Update test container by @tdrwenski in #1376
- Migrate from
Charsets
toStandardCharsets
. by @kluever in #1374 - Fix invalid checksum error by @tdrwenski in #1380
- Fix subsetting axis with single value by @tdrwenski in #1383
- refactor some of the enhancement SPI logic and provider interface by @haileyajohnson in #1393
- BUG: Fix decompressing all zlib data for NIDS by @dopplershift in #1394
- Fix NcmlReader.mergeNcml with groups by @lesserwhirls in #1404
Dependency Updates
- ch.qos.logback:logback-classic v1.5.14
- org.apache.commons:commons-math3 v3.6.1
New Contributors
Full Changelog: v5.6.0...v5.7.0
v5.6.0
NetCDF-Java 5.6.0
The NetCDF-Java/Common Data Model (CDM) library version 5.6.0 release was announced on August 16th, 2024. This is a minor version release, as it contains a number of new features. This release has been built and test using Temurin 8 from the (Eclipse Adoptium project) 8, 11, and Zulu 8 and 11.
See here for a full list of commits.
Downloads
netCDF-Java artifacts may be obtained from our Nexus artifacts server using these instructions.
ToolsUI and netCDFAll may be found at https://www.unidata.ucar.edu/downloads/netcdf-java/
Documentation
NetCDF-Java documentation
javadocs
Changes
Features:
- gCDM, a gRPC endpoint for the netcdf-java library, is now supported
- significant improvements to DAP4 support
- Zarr support has been expanded and improved, including a new API for the
Filters
package - Two new pre-processing modules are now available as NcML enhancements:
Standardize
andNormalize
- UGrid support
- Support for saving geotiffs with a pallette
- Support for all cdm-radial data types
- Inclusion of bufr tables 33 and 37, Grib2 template 4.60, and MRMS GRIB table version 12.2
Notable bug fixes:
- Race condition fixed in the h5iosps
- Fix “coordinates must be monotonic” bug for 1D and 2D axes
- Fix performance issue that aggregation cache was not used for coverages
- Enhancements (e.g. scale and offset) performance issues
- Remove old dimension when renaming a dimension through NcML
- Do not create reftime scalar dimension in individual grib file
- Parse variable length char elements from NcML
- Fix units in some projections
- Fix canonical order of coverage axes
- Fix renamed variable reading in aggregations
- Cleanup deleted files in the RandomAccessFile cache
- Fix resource leak that caused files to be locked
The following changes have been made to the project infrastructure:
- updated licenses
- removed unused jars and tars from the code base
- removed dependency on groovy/spock
- replaced an external server for testing with
TestContainers
The following 3rd party libraries have been upgrades to address security vulnerabilities:
- protobuf
- jackson
- guava
- grpc
- logback
- jdom2
- jna
- joda-time
Real-world use by the user community is integral to the process of creating and refining these libraries. Please direct all potential security issues directly to Unidata using the address security@unidata.ucar.edu. Please send all other potential issues to the development team via the the user community mailing lists (netcdf-java@unidata.ucar.edu), through the Unidata support system (support-netcdf-java@unidata.ucar.edu), or on the netCDF-Java GitHub issue tracker.
v5.5.3
netCDF-Java
Version 5.5.3
The NetCDF-Java/Common Data Model (CDM) library version 5.5.3 release was announced on July 5th, 2022. NetCDF-Java requires Java 8 or later. This release has been built and tested using Temurin (from the Eclipse Adoptium project) and Zulu versions 8, 11, and 14.
Notices
As of this release, NetCDF-Java is now built and distributed with Java version 11, targeting version 8 compatibility. Please report any compatibility issues to support-netcdf-java@unidata.ucar.edu.
Downloads
netCDF-Java artifacts may be obtained from our Nexus artifacts server using these instructions.
ToolsUI and netCDFAll may be found at https://www.unidata.ucar.edu/downloads/netcdf-java/
Documentation
Changes
Features:
- Expanded support for object storage
Notable bug fixes:
- Several changes to address issues in TDS NCSS
- Handle get coord bounds for an axis with size=1 without error
- Correctly determine projection coordinates bounding shape
- Register UTM by UTMProjection grid mapping name
Security upgrades:
- Upgraded Jackson Databind libraries to 2.13.2
- Upgrade Google Protobuf library to 3.19.3
For a full list of changes and bug fixes between netCDF-Java v5.5.2 and v5.5.3, please visit v5.5.2...v5.5.3
Real-world use by the user community is integral to the process of creating and refining these libraries. Please direct all potential security issues directly to Unidata using the address security@unidata.ucar.edu. Please send all other potential issues to the development team via the the user community mailing lists (netcdf-java@unidata.ucar.edu), through the Unidata support system (support-netcdf-java@unidata.ucar.edu), or on the netCDF-Java GitHub issue tracker.
v5.5.2
netCDF-Java
Version 5.5.2
The NetCDF-Java/Common Data Model (CDM) library version 5.5.2 release was announced on January 5th, 2022. NetCDF-Java requires Java 8 or later. This release has been built and tested using Temurin 8 from the (Eclipse Adoptium project) 8, 11, and Zulu 8 and 11.
Notices
The previous release, 5.5.1, although tested on Java versions 8 and 11, was compiled with Java 11, and caused errors for some users running JDK 8. This release addresses those compatibility issues, and was compiled using Temurin 8.
Our intention is to continue to provide support for v5.x
as long as we are able to maintain Java 8 compatibility, which is dependent on upstream library support for providing security releases that do not require moving to Java 11.
Downloads
netCDF-Java artifacts may be obtained from our Nexus artifacts server using these instructions.
ToolsUI and netCDFAll may be found at https://www.unidata.ucar.edu/downloads/netcdf-java/
Documentation
Changes
This release includes a fix for a compatibility bug, discovered in v5.5.1:
- Users running JDK 8 would get the following error message:
java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;
For more information, please visit https://docs.unidata.ucar.edu/netcdf-java/5.5/userguide/upgrade.html.
For a full list of changes and bug fixes between netCDF-Java v5.4.2 and v5.5.2, please visit v5.4.2...v5.5.1
Real-world use by the user community is integral to the process of creating and refining these libraries. Please direct all potential security issues directly to Unidata using the address security@unidata.ucar.edu. Please send all other potential issues to the development team via the the user community mailing lists (netcdf-java@unidata.ucar.edu), through the Unidata support system (support-netcdf-java@unidata.ucar.edu), or on the netCDF-Java GitHub issue tracker.
v5.5.1
netCDF-Java
Version 5.5.1
The NetCDF-Java/Common Data Model (CDM) library version 5.5.1 release was announced on December 20th, 2021. NetCDF-Java requires Java 8 or later. This release has been built and test using Temurin 8 from the (Eclipse Adoptium project) 8, 11, and Zulu 8 and 11.
Notices
Our intention is to continue to provide support for v5.x
as long as we are able to maintain Java 8 compatibility, which is dependent on upstream library support for providing security releases that do not require moving to Java 11. The next major version of netCDF-Java (v6.x
) will continue to provide Java 8 support, but will only provide the new API. A high-level roadmap for the library can be found on the project wiki.
Downloads
netCDF-Java artifacts may be obtained from our Nexus artifacts server using these instructions.
ToolsUI and netCDFAll may be found at https://www.unidata.ucar.edu/downloads/netcdf-java/
Documentation
Changes
Outside of the various bug fixes, dependency upgrades (some related to security), build/doc infrastructure changes, notable updates include:
- Read support for Zarr v.2
- Support for user-supplied filters through a Service Provider Interface
For more information, please visit https://docs.unidata.ucar.edu/netcdf-java/5.5/userguide/upgrade.html.
For a full list of changes and bug fixes between netCDF-Java v5.4.2 and v5.5.1, please visit v5.4.2...v5.5.1
Real-world use by the user community is integral to the process of creating and refining these libraries. Please direct all potential security issues directly to Unidata using the address security@unidata.ucar.edu. Please send all other potential issues to the development team via the the user community mailing lists (netcdf-java@unidata.ucar.edu), through the Unidata support system (support-netcdf-java@unidata.ucar.edu), or on the netCDF-Java GitHub issue tracker.
v5.4.2
netCDF-Java
Version 5.4.2
The NetCDF-Java/Common Data Model (CDM) library version 5.4.2 release was announced on August 27th, 2021. NetCDF-Java requires Java 8 or later. This release has been built and test using Temurin 8 from the (Eclipse Adoptium project) 8, 11, and Zulu 8 and 11.
Notices
Our intention is to continue to provide support for v5.x
as long as we are able to maintain Java 8 compatibility, which is dependent on upstream library support for providing security releases that do not require moving to Java 11. The next major version of netCDF-Java (v6.x
) will continue to provide Java 8 support, but will only provide the new API. A high-level roadmap for the library can be found on the project wiki.
Downloads
netCDF-Java artifacts may be obtained from our Nexus artifacts server using these instructions.
ToolsUI and netCDFAll may be found at https://www.unidata.ucar.edu/downloads/netcdf-java/
Documentation
Changes
Outside of the various bug fixes, dependency upgrades (some related to security), build/doc infrastructure changes, notable updates include:
- Updated the following GRIB tables:
- MRMS GRIB2 Tables to v12.0.
- NCEP GRIB 1 Tables.
- Experimental HRRR GRIB2 tables to v4.
- NDFD GRIB2 tables to reflect degrib v2.25.
- Support for GRIB2 PNG encoding (24- and 32-bit depth)
For more information, please visit https://docs.unidata.ucar.edu/netcdf-java/5.4/userguide/upgrade.html.
For a full list of changes and bug fixes between netCDF-Java v5.4.1 and v5.4.2, please visit v5.4.1...v5.4.2
Real-world use by the user community is integral to the process of creating and refining these libraries. Please direct all potential security issues directly to Unidata using the address security@unidata.ucar.edu. Please send all other potential issues to the development team via the the user community mailing lists (netcdf-java@unidata.ucar.edu), through the Unidata support system (support-netcdf-java@unidata.ucar.edu), or on the netCDF-Java GitHub issue tracker.