Apache Daffodil 4 Adds New API
Written by Kay Ewbank   
Thursday, 09 October 2025

Apache Daffodil 4 has been released. This is a major upgrade that has moved to depending on Scala 3, Java 17 or newer. The new version also includes a new backwards incompatible validation API.

Daffodil is an open source implementation of the Data Format Description Language specification (DFDL). Daffodil was first created at the University of Illinois National Center for Supercomputing Applications (NCSA) in 2009, and entered the Apache Incubator in August 2017.

daffodil

DFDL is a specification that was developed by the Open Grid Forum. It can be used to describe many data formats, including textual and binary, scientific and numeric, legacy and modern, commercial record-oriented, and many industry and military standards. DFDL defines a language that is a subset of W3C XML schema to describe the logical format of the data, and annotations within the schema to describe the physical representation.

Daffodil is used to convert between fixed format data and XML/JSON. It had Java and Scala APIs, provides Apache NiFI processors for parsing and unparsing NiFi FlowFiles, and has an  extension to XML Calabash that declares XProc pipeline steps to parse and unparse input data. Once converted into XML or JSON, the data can then be consumed, inspected, and manipulated as fixed format data using standard XML or JSON technologies and libraries. Daffodil can also be used to serialize or "unparse" data back to the original data format. The DFDL infoset can also be converted directly to/from the data structures carried by data processing frameworks so as to bypass any XML/JSON overheads.

The first change to the new version is that Daffodil now requires Scala 3.3.6 and Java 17+. For Scala 3, the change mainly affects the way embedded XML is handled in Daffodil, as Scala 3 also changes the way embedded XML is handled. 

There's a new Validation API that has replaced the Validation Modes(withValidationMode) /withValidator with the withValidation(validatorName[, validationConfigurationURL]) method. Daffodil provides a number of built-in validators for use with DataProcessor.withValidation(String, URL), specifically xerces, daffodil, and schematron. Developers can also create their own custom validators by creating a custom class that implements the validator interface. 

Daffodil 4.0 is available now.

daffodil

More Information

Apache Daffodil

Related Articles

Apache Daffodil Gets VS Code Extension

Apache Daffodil Now Top Level Project

Apache Daffodil Improves DFDL Compatibility

Flink Gets Event-time Streaming

The Significance Of Big Data

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.

Banner


Meta Introduces Smart Glasses Toolkit
26/09/2025

Meta has announced a developer preview of the Meta Wearables Device Access Toolkit, which will be made available later this year. The toolkit lets developers create apps to work with Meta's  [ ... ]



Unicode 17 Updates Core Specification
19/09/2025

Unicode 17 has been released, with new characters and code charts, updated data files, an updated Core Specification, and updated annexes and synchronized standards that cover implementation details f [ ... ]


More News

pico book

 

Comments




or email your comment to: comments@i-programmer.info