Build1 distinct publisher2 min readPublished
JEP 542 is now Targeted for JDK 28, finalising the PEM API after three preview rounds. The final version drops the DEREncodable name, so preview-era code needs one mechanical edit before it compiles again.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
The rename is the item with a date attached. The finalised API calls the interface BinaryEncodable, and the stated reason is accuracy: what sits inside PEM text is binary data, and DER was too narrow a label for it [6]. If you implemented or referenced DEREncodable while the feature was in preview, you have a source-level edit, and the compiler will find every site for you [6][2]. That is the cheapest kind of break. It is also the kind that previewing three times exists to produce.
Count the releases. The API previewed in JDK 25, 26 and 27, which is three rounds, so JDK 28 is the fourth JDK to carry it and the first to carry it under the final names [14].
The second change is quieter. The PEM record class becomes a regular class, and the reason given is convenience: a plain class can offer constructors that accept Base64-encoded content in byte arrays [5]. The roundup does not say what a record made awkward, only that the reclassification buys those constructors. Practically, it means a caller holding a PEM body as bytes can hand them straight to a constructor. The scope around it stays narrow and explicit: keys, certificates and certificate revocation lists, encoded to PEM and decoded back [3], with conversions defined against PKCS #8 and X.509 binary formats [4].
Elsewhere in the same week, GraalVM 25.3 ships a SubstratePriorityInliningPhase class implementing a priority inliner for both JIT and Native Image, described as improving the performance of generated code [11]. No figure is attached to that description. An inliner change is a policy change applied to your call graph, so the improvement transfers only if your hot paths have the shape the new heuristic prefers: small callees called from a few dominant sites, and enough inlining budget left for it to spend. On a build dominated by megamorphic calls or by one enormous method, the same policy can cost you code size and nothing else. The release also adds a hardening mechanism intended to stop attackers redirecting program execution to unexpected code locations [12], which is a security claim you cannot benchmark and should read the notes for.
The same roundup lists an initial implementation of a Jakarta Agentic AI specification in Azul Payara 7.3.0, so the specification process has now reached agents [15].
For the PEM work, the useful read is that the API surface has stopped moving. Three previews produced two visible edits, one to an interface name and one to a class kind [6][5], and after finalisation the next change to either would need a compatibility story rather than a preview flag.
Ranked by verification strength, evidence, and original report placement.
JEP 542, PEM Encodings of Cryptographic Objects, has been elevated from Proposed to Target to Targeted for JDK 28.
JEP 542 proposes to finalize the feature after three rounds of preview delivered in JDK 25 through JDK 27.
The feature offers "an API for encoding objects that represent cryptographic keys, certificates, and certificate revocation lists into the widely-used Privacy-Enhanced Mail (PEM) transport format, and for decoding from that format back into objects."
JEP 542 will support conversions between PEM text and cryptographic objects in PKCS #8 and X.509 binary formats.
Changes in JEP 542 include a reclassification of the PEM record class to a regular class, as a convenience for providing constructors that accept Base64-encoded content in byte arrays.
Changes in JEP 542 include a rename of the DEREncodable interface to BinaryEncodable, to more accurately describe the binary data stored in PEM text.
Distinct publishers with included, body-backed reporting in this cluster.
1 article · August 31, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
JDK 27 hits RC1: an Intel Mac deprecation with a release number, a JSON API without one1 distinct publisher
build
JDK 28 firms up: a JSON API in the incubator, and a deprecation notice for Intel Macs1 distinct publisher
build
JDK 27's nine JEPs are frozen, and two of them change your defaults1 distinct publisher
build
A bank API team deploying several times an hour says Claude Code is for analysis, not code1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Checkable but unverified, from one desk
The rename, the record-to-class change and the PKCS #8 and X.509 support are the kind of facts that either appear in the JEP text or do not, which makes them easy to confirm and hard to spin. InfoQ points at release notes for each item. What is missing is anyone having done that checking in public: no primary JEP page, no OpenJDK mailing-list thread, no vendor release note sits alongside this reporting in our coverage.
Shipping artifacts, no usage signal
Things have actually been built: an early-access build, a GraalVM point release, a Payara release across three editions, a Liberty beta. That is real motion through release pipelines. But the PEM API has spent three cycles behind preview flags and JDK 28 has not shipped, and nothing in this reporting says how many projects use the API, how many JMX dashboards touch the affected MBeans, or whether anyone has taken up Jakarta Agentic AI.
Underplayed rather than oversold
Nothing here is inflated — there is no 'revolutionary', no benchmark chart, no claim beyond what a release note would say. If anything the register runs cool: two changes that will break code on upgrade, the interface rename and the Liberty MBean keys, are set in the same one-sentence typeface as a documentation improvement. Readers who skim will meet both later, at build time.
Vendor announcements, neutral compiler
Almost every fact originated in something a vendor wanted published: Azul's release notes, the Open Liberty beta announcement, GraalVM's feature list. Those parties choose what to highlight. The counterweight is that InfoQ has no stake in whose release looks best and puts Oracle's JEP, IBM's runtime, Red Hat's Quarkus and Azul's Payara side by side in the same flat format — including Quarkus reversing a default it had previously shipped, which is not a line a vendor writes for itself.
Trust the facts, not the completeness
Our read on what changed in the PEM API is firm, because the changes are named specifically and a rename is the sort of thing readers would immediately dispute if wrong. Our read on what it means for existing code is thinner: with one outlet, no primary documents, and no sense of how widely the preview API was used, the impact side of this story is inference rather than reporting.