https://www.infoq.com/news/2023/03/java-20-so-far/ BT Live Webinar and Q&A: Kobo's Journey Into High Performance and Reliable Document Databases (Live Webinar Mar 15, 2023) Save Your Seat Close Toggle Navigation Facilitating the Spread of Knowledge and Innovation in Professional Software Development English edition * English edition * Chinese edition * Japanese edition * French edition Write for InfoQ Search [ ] [Search] Sign Up / Login Email [ ] Password [ ] [Login] Forgot password ? InfoQ Account Email [ ] [Send Recovery Email] Back to login Resend Activation [ ] [Resend] Back to login Login with: Google Microsoft Twitter Facebook Don't have an InfoQ account? Sign Up Logo - Back to homepage 2,138,915 Feb unique visitors News Articles Presentations Podcasts Guides Topics Development * Java * Kotlin * .Net * C# * Swift * Go * Rust * JavaScript Featured in Development * How Practicing TCR (Test && Commit || Revert) Reduces Batch Size The practice of test && commit || revert teaches how to write code in smaller chunks, further reducing batch size. TCR yields high coverage by design, which smooths the downstream testing pipeline. How Practicing TCR (Test && Commit || Revert) Reduces Batch Size All in development Architecture & Design * Architecture * Enterprise Architecture * Scalability/Performance * Design * Case Studies * Microservices * Service Mesh * Patterns * Security Featured in Architecture & Design * The JHipster Mini-Book 7.0 The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster. JHipster is a Yeoman generator that can be used to a create a project and generate boilerplate code for you. This book shows you how to build an app with JHipster. The JHipster Mini-Book 7.0 All in architecture-design AI, ML & Data Engineering * Big Data * Machine Learning * NoSQL * Database * Data Analytics * Streaming Featured in AI, ML & Data Engineering * The Wonders of Postgres Logical Decoding Messages In this article, author Gunnar Morling discusses Postgres database's logical decoding function to retrieve the messages from write-ahead log, process them, and relay them to external consumers, with help of use cases like outbox, audit logs and replication slots. The Wonders of Postgres Logical Decoding Messages All in ai-ml-data-eng Culture & Methods * Agile * Diversity * Leadership * Lean/Kanban * Personal Growth * Scrum * Sociocracy * Software Craftmanship * Team Collaboration * Testing * UX Featured in Culture & Methods * How Skyscanner Embedded a Team Metrics Culture for Continuous Improvement This article explains why Skyscanner decided not just to deploy a tool, but to think about this as changing their engineering management culture to being one that values and utilises metrics to drive greater improvement at scale. It shows how they evaluated tools to find one that would enable their teams and reinforce the cultural change that was the fundamental goal of this exercise. How Skyscanner Embedded a Team Metrics Culture for Continuous Improvement All in culture-methods DevOps * Infrastructure * Continuous Delivery * Automation * Containers * Cloud * Observability Featured in DevOps * Step One to Successfully Building Your Platform: Building It Together You may feel that investing in an internal platform is a win, but the business may need more convincing. This article covers how to frame your case in a way that the business can understand and support. Step One to Successfully Building Your Platform: Building It Together All in devops EventsNew Helpful links * About InfoQ * InfoQ Editors * Write for InfoQ * About C4Media * Diversity Choose your language * En * Zhong Wen * Ri Ben * Fr [ewogICJidW] QCon London Adopt the right emerging trends to solve your complex engineering challenges. Attend in-person or online. [ewogICJidW] QCon New York Find real-world practical inspiration from the world's most innovative software leaders. Attend in-person or online. [ewogICJidW] QCon San Francisco Learn what's next in software from world-class leaders pushing the boundaries. Attend in-person or online. [ewogICJidW] The Software Architects' Newsletter Your monthly guide to all the topics, technologies and techniques that every professional needs to know about. Subscribe for free. InfoQ Homepage News JDK 20 and JDK 21: What We Know So Far Java ChatGPT is fun, but the future is fully autonomous AI for code (Live Webinar Mar 21, 2023) - Save Your Seat JDK 20 and JDK 21: What We Know So Far Like Print Bookmarks Mar 09, 2023 8 min read by * Michael Redlich Write for InfoQ Join a community of experts. Increase your visibility. Grow your career.Learn more JDK 20, the third non-LTS release since JDK 17, has reached its initial release candidate phase as declared by Mark Reinhold, chief architect, Java Platform Group at Oracle. The main-line source repository, forked to the JDK stabilization repository in mid-December 2022 (Rampdown Phase One), defines the feature set for JDK 20. Critical bugs, such as regressions or serious functionality issues, may be addressed, but must be approved via the Fix-Request process. As per the release schedule, JDK 20 will be formally released on March 21, 2023. It is worth noting that JEP 438 was added to the feature set in early March 2023. The final set of seven (7) new features, in the form of JEPs, can be separated into two (2) categories: Core Java Library and Java Specification. Five (5) of these new features are categorized under the Core Java Library: * JEP 429: Scoped Values (Incubator) * JEP 434: Foreign Function & Memory API (Second Preview) * JEP 436: Virtual Threads (Second Preview) * JEP 437: Structured Concurrency (Second Incubator) * JEP 438: Vector API (Fifth Incubator) Two (2) of these new features are categorized under the Java Specification: * JEP 432: Record Patterns (Second Preview) * JEP 433: Pattern Matching for switch (Fourth Preview) We examine these new features and include where they fall under the auspices of the four major Java projects - Amber, Loom, Panama and Valhalla - designed to incubate a series of components for eventual inclusion in the JDK through a curated merge. Project Amber JEP 432, Record Patterns (Second Preview), incorporates enhancements in response to feedback from the previous round of preview, JEP 405, Record Patterns (Preview). This proposes to enhance the language with record patterns to deconstruct record values. Record patterns may be used in conjunction with type patterns to "enable a powerful, declarative, and composable form of data navigation and processing." Type patterns were recently extended for use in switch case labels via: JEP 406, Pattern Matching for switch (Preview), delivered in JDK 17; and JEP 420, Pattern Matching for switch (Second Preview), delivered in JDK 18. Changes from JEP 405 include: added support for inference of type arguments of generic record patterns; added support for record patterns to appear in the header of an enhanced for statement; and remove support for named record patterns. Similarly, JEP 433, Pattern Matching for switch (Fourth Preview), incorporates enhancements in response to feedback from the previous three rounds of preview: JEP 427, Pattern Matching for switch (Third Preview), delivered in JDK 19; JEP 420, Pattern Matching for switch (Second Preview), delivered in JDK 18; and JEP 406, Pattern Matching for switch (Preview), delivered in JDK 17. Changes from JEP 427 include: a simplified grammar for switch labels; and inference of type arguments for generic type patterns and record patterns is now supported in switch expressions and statements along with the other constructs that support patterns. Project Loom JEP 429, Scoped Values (Incubator), an incubating JEP formerly known as Extent-Local Variables (Incubator), proposes to enable sharing of immutable data within and across threads. This is preferred to thread-local variables, especially when using large numbers of virtual threads. JEP 436, Virtual Threads (Second Preview), proposes a second preview from JEP 425, Virtual Threads (Preview), delivered in JDK 19, to allow time for additional feedback and experience for this feature to progress. This feature provides virtual threads, lightweight threads that dramatically reduce the effort of writing, maintaining, and observing high-throughput concurrent applications, to the Java platform. It is important to note that no changes are within this preview except for a small number of APIs from JEP 425 that were made permanent in JDK 19 and, therefore, not proposed in this second preview. More details on JEP 425 may be found in this InfoQ news story and this JEP Cafe screen cast by Jose Paumard, Java developer advocate, Java Platform Group at Oracle. JEP 437, Structured Concurrency (Second Incubator), proposes to reincubate this feature from JEP 428, Structured Concurrency (Incubator), delivered in JDK 19, to allow time for additional feedback and experience. The intent of this feature is to simplify multithreaded programming by introducing a library to treat multiple tasks running in different threads as a single unit of work. This can streamline error handling and cancellation, improve reliability, and enhance observability. The only change is an updated StructuredTaskScope class to support the inheritance of scoped values by threads created in a task scope. This streamlines the sharing of immutable data across threads. More details on JEP 428 may be found in this InfoQ news story. Project Panama JEP 434, Foreign Function & Memory API (Second Preview), incorporate refinements based on feedback and to provide a second preview from JEP 424, Foreign Function & Memory API (Preview), delivered in JDK 19, and the related incubating JEP 419, Foreign Function & Memory API (Second Incubator), delivered in JDK 18; and JEP 412, Foreign Function & Memory API (Incubator), delivered in JDK 17. This feature provides an API for Java applications to interoperate with code and data outside of the Java runtime by efficiently invoking foreign functions and by safely accessing foreign memory that is not managed by the JVM. Updates from JEP 424 include: the MemorySegment and MemoryAddress interfaces are now unified, i.e., memory addresses are modeled by zero-length memory segments; and the sealed MemoryLayout interface has been enhanced to facilitate usage with JEP 427, Pattern Matching for switch (Third Preview), delivered in JDK 19. JEP 438, Vector API (Fifth Incubator), incorporates enhancements in response to feedback from the previous four rounds of incubation: JEP 426, Vector API (Fourth Incubator), delivered in JDK 19; JEP 417, Vector API (Third Incubator), delivered in JDK 18; JEP 414, Vector API (Second Incubator), delivered in JDK 17; and JEP 338, Vector API (Incubator), delivered as an incubator module in JDK 16. This feature proposes to enhance the Vector API to load and store vectors to and from a MemorySegment as defined by JEP 424, Foreign Function & Memory API (Preview). JDK 21 Scheduled for a GA and next LTS release in September 2023, two (2) JEPs are currently Proposed to Target for JDK 21. JEP 430, String Templates (Preview), a feature JEP type, proposes to enhance the Java programming language with string templates, which are similar to string literals but which contain embedded expressions that are incorporated into the string template at run time. This feature has been classified as Proposed to Target for JDK 21, but has not yet been formally announced with a review date. JEP 431, Sequenced Collections, proposes to introduce "a new family of interfaces that represent the concept of a collection whose elements are arranged in a well-defined sequence or ordering, as a structural property of the collection." This is motivated by the lack of a well-defined ordering and uniform set of operations within the Collections Framework. This feature has been classified as Proposed to Target for JDK 21, but has not yet been formally announced with a review date. We can surmise which additional JEPs have the potential to be included in JDK 21 based on a number of JEP drafts and candidates. JEP Draft 8303358, Scoped Values (Preview), submitted by Andrew Haley and Andrew Dinn, both distinguished engineers at Red Hat, evolves JEP 429, Scoped Values (Incubator), delivered in the upcoming release of JDK 20. Formerly known as Extent-Local Variables (Incubator) and under the auspices of Project Loom, this feature proposes to enable sharing of immutable data within and across threads. This is preferred to thread-local variables, especially when using large numbers of virtual threads. And while this draft has not yet reached Candidate status, the description explicitly states that this JEP will be added in JDK 21. JEP Draft 8277163, Value Objects (Preview), a feature JEP under the auspices of Project Valhalla, proposes the creation of value objects - identity-free value classes that specify the behavior of their instances. This draft is related to JEP 401, Primitive Classes (Preview), which is still in Candidate status. JEP 435, Asynchronous Stack Trace VM API, a feature JEP type, proposes to define an efficient API for obtaining asynchronous call traces for profiling from a signal handler with information on Java and native frames. JEP 401, Primitive Classes (Preview), under the auspices of Project Valhalla, introduces developer-declared primitive classes - special kinds of value classes - as defined in the aforementioned Value Objects (Preview) JEP Draft - that define new primitive types. JEP Draft 8301034, Key Encapsulation Mechanism API, a feature JEP type, proposes to: satisfy implementations of standard Key Encapsulation Mechanism (KEM) algorithms; satisfy use cases of KEM by higher level security protocols; and allow service providers to plug-in Java or native implementations of KEM algorithms. This draft was recently updated to include a major change that eliminates the DerivedKeyParameterSpec class in favor of placing fields in the argument list of the encapsulate(int from, int to, String algorithm) method. JEP Draft 8283227, JDK Source Structure, an informational JEP type, describes the overall layout and structure of the JDK source code and related files in the JDK repository. This JEP proposes to help developers adapt to the source code structure as described in JEP 201, Modular Source Code, delivered in JDK 9. JEP Draft 8280389, ClassFile API, proposes to provide an API for parsing, generating, and transforming Java class files. This JEP will initially serve as an internal replacement for ASM, the Java bytecode manipulation and analysis framework, in the JDK with plans to have it opened as a public API. Brian Goetz, Java language architect at Oracle, characterized ASM as "an old codebase with plenty of legacy baggage" and provided background information on how this draft will evolve and ultimately replace ASM. JEP Draft 8278252, JDK Packaging and Installation Guidelines, an informational JEP, proposed to provide guidelines for creating JDK installers on macOS, Linux and Windows to reduce the risks of collisions among JDK installations by different JDK providers. The intent is to promote a better experience when installing update releases of the JDK by formalizing installation directory names, package names, and other elements of installers that may lead to conflicts. We anticipate that Oracle will start targeting additional JEPs for JDK 21 very soon. About the Author Michael Redlich Show moreShow less Rate this Article Adoption ( ) ( ) ( ) ( ) ( ) Style ( ) ( ) ( ) ( ) ( ) [ ] [Submit] [ ] [Submit] [ ] Author Contacted This content is in the Java topic Related Topics: * Development * Architecture & Design * DevOps * Open JDK * JDK 21 * Java * JDK * JDK 20 * Related Editorial * Related Sponsored Content * Related Sponsor [QConLonndo] Uncover emerging trends and practices from domain experts. Attend in-person or online at QCon London (March 27-29, 2023). Inspired by this content? Write for InfoQ. Writing for InfoQ has opened many doors and increased career opportunities for me. I was able to deeply engage with experts and thought leaders to learn more about the topics I covered. And I can also disseminate my learnings to the wider tech community and understand how the technologies are used in the real world. [8192d07] Vivian HuDevOps News Editor @InfoQ; Director of Products @Second State Write for InfoQ Inspired by this content? Write for InfoQ. I discovered InfoQ's contributor program earlier this year and have enjoyed it since then! In addition to providing me with a platform to share learning with a global community of software developers, InfoQ's peer-to-peer review system has significantly improved my writing. If you're searching for a place to share your software expertise, start contributing to InfoQ. [4105a79] Oghenevwede Emeni Articles contributor @InfoQ; Software Developer, CEO @Pact Write for InfoQ Inspired by this content? Write for InfoQ. I started writing news for the InfoQ .NET queue as a way of keeping up to date with technology, but I got so much more out of it. I met knowledgeable people, got global visibility, and improved my writing skills. [90c5fc1] Edin Kapic.NET News Editor @InfoQ; Lead Engineer @Vista, former Microsoft MVP Write for InfoQ Inspired by this content? Write for InfoQ. Becoming an editor for InfoQ was one of the best decisions of my career. It has challenged me and helped me grow in so many ways. We& apos;d love to have more people join our team. [ccccd59] Thomas BettsLead Editor, Software Architecture and Design @InfoQ; Senior Principal Engineer Write for InfoQ Related Content * Java News Roundup: NetBeans 17, Multiple Spring and Tomcat Updates, GraalVM Builds for JDK 20 * Java News Roundup: JDK 20 RC1, Open Liberty, Micronaut, Helidon, Hibernate, Groovy, Grails * Java News Roundup: JEP Updates, JReleaser 1.5, Spring Updates, Vert.x, Project Reactor, Ktor * Java News Roundup: Gradle 8.0, Maven, Payara Platform, Piranha, Spring Framework, MyFaces, Piranha * Android 14 Brings Partial Support for OpenJDK 17, Improved Privacy and Security, and More * Microsoft OpenJDK Introduces Experimental Feature for Improving Escape Analysis * Java InfoQ Trends Report - December 2022 Java InfoQ Trends Report - December 2022 * The JHipster Mini-Book 7.0 The JHipster Mini-Book 7.0 * Eclipse Adoptium: A 2022 Retrospective and a Look Towards the Future * Road to Quarkus 3: Bets on the Flow API for Mutiny 2.0, Updates to Jakarta Namespace and More * WireMock Spring Boot Simplifies the WireMock Configuration for Spring Boot Applications * Gradle 8.0 Provides Improved Kotlin DSL and Build Times * AI-Based Code-Completion Tool Tabnine Now Offers Automatic Unit Test Generation * SapMachine Vitals Provides Operating System and JVM Statistics * Jarviz Delivers Inspection and Insights to JAR Files * MicroStream Becomes Eclipse Foundation Member * Sonatype BOM Doctor Evaluates and Helps Patch Java Software Bills of Materials * Faster Startup Time and Lower Memory Usage: New CRT HTTP Client in AWS SDK for Java * Software Security Report Finds JavaScript Applications Have Fewer Flaws Than Java and .NET * Article Series: Developing Apache Kafka applications on Kubernetes Article Series: Developing Apache Kafka applications on Kubernetes * Java Flight Recorder as an Observability Tool Java Flight Recorder as an Observability Tool * The InfoQ eMag - The InfoQ Trends Reports 2022 The InfoQ eMag - The InfoQ Trends Reports 2022 * Securing a Kafka Cluster in Kubernetes Using Strimzi Securing a Kafka Cluster in Kubernetes Using Strimzi * GraalVM Java Compilers Join OpenJDK in 2023, Align with OpenJDK Releases and Processes GraalVM Java Compilers Join OpenJDK in 2023, Align with OpenJDK Releases and Processes * Using Shared Memory-Mapped Files in Java Using Shared Memory-Mapped Files in Java * Java Champion Josh Long on Spring Framework 6 and Spring Boot 3 Java Champion Josh Long on Spring Framework 6 and Spring Boot 3 * DevOps for Java Developers DevOps for Java Developers * Staying JDK: Current in Production Staying JDK: Current in Production * Securing Java Applications in the Age of Log4Shell Securing Java Applications in the Age of Log4Shell * Project Loom: Revolution in Java Concurrency or Obscure Implementation Detail? Project Loom: Revolution in Java Concurrency or Obscure Implementation Detail? * JIT vs. AOT: How to Pick the Right Approach JIT vs. AOT: How to Pick the Right Approach * Shift Left Approach for API Standardization Shift Left Approach for API Standardization * Moving Kafka and Debezium to Kubernetes Using Strimzi - the GitOps Way Moving Kafka and Debezium to Kubernetes Using Strimzi - the GitOps Way * Virtual Threads: New Foundations for High-Scale Java Applications Virtual Threads: New Foundations for High-Scale Java Applications * How the Hybrid and Remote Working Revolution Impacts Maintaining Mental Health * Improve Logic Apps (Standard) Workflows Observability with Application Insights * What Are Cloud-Bound Applications? What Are Cloud-Bound Applications? * High-Performance Computing for Researchers and Students with Amazon Lightsail for Research * How Skyscanner Embedded a Team Metrics Culture for Continuous Improvement How Skyscanner Embedded a Team Metrics Culture for Continuous Improvement * HashiCorp Vault Improves Multi-Namespace Workflows, Adds Managed Service for Azure The InfoQ Newsletter A round-up of last week's content on InfoQ sent out every Tuesday. Join a community of over 250,000 senior developers. View an example Enter your e-mail address [ ] [ ] Select your country [Select a country] [ ] I consent to InfoQ.com handling my data as explained in this Privacy Notice. [Subscribe] We protect your privacy. Hello stranger! You need to Register an InfoQ account or Login or login to post comments. But there's so much more behind being registered. Get the most out of the InfoQ experience. Tell us what you think [ ] [ ] Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p [ ] Email me replies to any of my messages in this thread [Post Message] Community comments Watch thread Close Your Reply Quote original message [ ] [ ] Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p [ ] Email me replies to any of my messages in this thread [Post Message] Cancel Close Your Reply [ ] [ ] Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p [ ] Email me replies to any of my messages in this thread [Post Message] Cancel Close OK Discuss * Development + Slack Open Sources Hakana, a Type Checker for Hack Language + AI-Based Code-Completion Tool Tabnine Now Offers Automatic Unit Test Generation + How Practicing TCR (Test && Commit || Revert) Reduces Batch Size * Architecture & Design + The JHipster Mini-Book 7.0 + Dan Benjamin on Cloud Data Security and Data Detection and Response + How to Have More Effective Conversations with Business Stakeholders About Software Architecture * Culture & Methods + How the Hybrid and Remote Working Revolution Impacts Maintaining Mental Health + How Skyscanner Embedded a Team Metrics Culture for Continuous Improvement + Establishing SRE Foundations with Vladyslav Ukis * AI, ML & Data Engineering + NVIDIA Open-Sources Robot Learning Framework Orbit + OpenAI Unleashes ChatGPT and Whisper APIs for Next-Gen Language Capabilities + The Wonders of Postgres Logical Decoding Messages * DevOps + HashiCorp Vault Improves Multi-Namespace Workflows, Adds Managed Service for Azure + Step One to Successfully Building Your Platform: Building It Together + Cross-Industry Report Identifies Top 10 Open-Source Software Risks The InfoQ Newsletter A round-up of last week's content on InfoQ sent out every Tuesday. Join a community of over 250,000 senior developers. View an example * Get a quick overview of content published on a variety of innovator and early adopter technologies * Learn what you don't know that you don't know * Stay up to date with the latest information from the topics you are interested in Enter your e-mail address [ ] [ ] Select your country [Select a country] [ ] I consent to InfoQ.com handling my data as explained in this Privacy Notice. [Subscribe] We protect your privacy. QCon International Software Development Conference Real-world technical talks. No product pitches. Practical ideas to inspire you and your team. March 27-29, 2023. Attend in-person or online. QCon London brings together the world's most innovative senior software engineers across multiple domains to share their real-world implementation of emerging trends and practices. Level-up on 15 major software and leadership topics including Modern Frontend Development and Architecture, Enhancing Developer Productivity and Experience, Remote and Hybrid Work, Debugging Production, AI/ML Trends, Data Engineering Innovations, Architecture in 2025, and more. SAVE YOUR SPOT NOW Home Create account Login QCon Conferences Events Write for InfoQ InfoQ Editors About InfoQ About C4Media Media Kit InfoQ Developer Marketing Blog Diversity Events * QCon London MARCH 27-29, 2023 * QCon New York JUNE 13-15, 2023 * QCon San Francisco OCTOBER 2-6, 2023 Follow us on Youtube223K Followers Linkedin21K Followers RSS19K Readers Twitter53.4k Followers Facebook21K Likes AlexaNew Stay in the know The InfoQ PodcastThe InfoQ Podcast Engineering Culture Podcast Engineering Culture Podcast The Software Architects' NewsletterThe Software Architects' Newsletter General Feedback feedback@infoq.com Advertising sales@infoq.com Editorial editors@infoq.com Marketing marketing@infoq.com InfoQ.com and all content copyright (c) 2006-2023 C4Media Inc. Privacy Notice, Terms And Conditions, Cookie Policy BT *