An article by Uwe Rittmeyer, Senior Consultant & P3/COBOL Product Specialist at EasiRun.
P3/COBOL arrives in two versions this time: 17.1 keeps Java 17 as its minimum, 25.0 requires Java 25 (LTS). The language features from 17.1 are in 25.0 as well, the difference sits in the Java layer underneath. Both are available now.
We are glad to present both releases together. Java 25 appeared as an LTS release while we were finishing 17.1. Many of you had asked us for the current LTS level, because your security and compliance rules depend on it. So we are shipping 25.0 alongside.
Which version fits you
- Tied to Java 17 or 21 by internal approvals or connected systems? Take 17.1.
- Able to move to Java 25? Take 25.0.
- 17.1 is the last version with Java 17 as its minimum, the 17 line gets hotfixes only from now on.
New in 17.1
Compiler
- full NATIONAL support to INCITS/ISO/IEC 1989:2014, including GROUP-USAGE IS NATIONAL
- Oracle Pro*SQL-style cursor declarations for positioned UPDATE and DELETE
- EXPORT accepts AS TEXT and suppresses the XML declaration header
- <long-arithmetic-safety> is now called <integer-arithmetic-safety>
Runtime
- memory access outside the Java heap requires the Foreign Function and Memory API, the sun.misc.Unsafe path is gone
- new <native-access-enabled> option, true is required for COBOL CALL s into native libraries
IDE
- debug hover with qualification path, remote debugging with separate ports through the debug-ports runtime option
- SELECT entries with external file names and assignment targets, screen section data items in the program outline
- synthetic debugger items for file names, dynamic targets and file status show occurrences and definitions
- embedded Java is parsed as Java, syntax highlighting comes from the built-in parser
- the default dialect no longer treats COBOL 2000 DML keywords as reserved words
Tested on Java 21 and 25, verified with Eclipse Temurin, Azul Zulu, Oracle JDK and IBM OpenJDK.
New in 25.0
Plattform
- compiler and runtime require Java 25 (LTS) or later, bytecode targets Java 25
- tested with Eclipse Temurin and Azul Zulu on Windows, Linux and macOS
- Java 17 and Java 21 are no longer supported
Runtime
- native interop runs entirely on the Foreign Function and Memory API: external CALL s, process environment, native file access
- JNA is no longer shipped, jna and jna-platform JARs belong out of your classpaths
- native-access-enabled, external-call-strategy and external-librarydirectories stay unchanged
- resources are released through java.lang.ref.Cleaner, the incubating FFM module flags and –enable-preview are gone
Compiler
- missing power signatures added to CobolMath for integer-arithmeticsafety= SAFE
- embedded SQL: COBOL line comments are removed from SELECT statements in cursor declarations
In both versions, Eclipse launch configurations set the JVM options automatically.
This is just a selection, both release notes list further improvements and fixes.
What this means for your installation
Your COBOL source code generally stays as it is, the work sits in the Java environment. The clearest difference is native interop: 25.0 runs it entirely on the FFM API and no longer ships JNA, in 17.1 that applies to memory access only. For 25.0, JAVA_HOME points to a Java 25 installation or later. If you use native CALL s, set native-access-enabled to true in either version. We recommend moving to 25.0, with time to plan the change with operations.
More about the product: P3/COBOL.