JEP 395

GPTKB entity

Statements (759)
Predicate Object
gptkbp:instance_of gptkb:region
gptkb:Java_2_Platform
gptkb:JEP
gptkbp:access public, private, protected
Can use public, private, protected.
Supports public, private, and protected.
Public by default.
gptkbp:accessor_methods Automatically generated.
gptkbp:addresses API changes
Garbage collection challenges
gptkbp:affects Java developers
Java developers.
gptkbp:aims_to Improve observability of Java applications.
improve API usability
Simplify type checks and casts
Enhance performance of ZGC
gptkbp:allows filtering of events
Aggregation of events.
Filtering of events.
gptkbp:api Minimal API changes.
gptkbp:approves gptkb:JCP
September 2020
gptkbp:author gptkb:Mikhail_Zaitsev
gptkb:Nikita_Kovalchuk
gptkb:Alexey_Shcherbakov
gptkb:Andrey_Serebryakov
gptkb:Andrey_Zaitsev
gptkb:Dmitry_Zaitsev
gptkb:Jérôme_Gaffé
gptkb:Pavel_Zaitsev
gptkb:Sergey_Zaitsev
gptkb:Serguei_Kovalchuk
gptkb:Vladimir_Voskresensky
gptkb:Alexey_Kovalchuk
gptkb:Nikita_Shcherbakov
gptkb:Dmitry_Jemerov
gptkb:Dmitry_Sokolov
gptkb:Alexander_Zaitsev
gptkb:Andrey_Shcherbakov
gptkb:Brian_Goetz
gptkb:Pavel_Shcherbakov
gptkb:Vladimir_Shcherbakov
gptkb:David_Holmes
gptkb:Venkat_Subramaniam
gptkb:Vladimir_Kovalchuk
gptkb:Sergey_Kovalchuk
gptkb:Igor_Shishkin
gptkb:Igor_Shcherbakov
gptkb:Dmitry_Shcherbakov
gptkb:Nikita_Zaitsev
gptkb:Mikhail_Shcherbakov
gptkb:Mikhail_Kovalchuk
gptkb:Aleksandar_Seovic
gptkb:Alex_Buckley
gptkb:J._B._Rainsberger
gptkb:Jeppe_Cramon
gptkb:Johan_Vos
gptkb:Kirk_Pepperdine
gptkb:Mark_Reinhold
gptkb:Mikael_Vidstedt
gptkb:Richard_Warburton
gptkb:Rafael_Winterhalter
gptkb:Jesse_Glick
gptkb:Igor_Zaitsev
Vladimir Ivanov
Alexey Shchegolev
Sergey Shcherbakov
Gavin Bierman
JDK Release Team
Sharat Chander
Thomas Stüfe
gptkbp:benefits Reduces boilerplate code.
Reduces boilerplate code for data classes.
Simplifies data modeling.
Simplifies the creation of data-carrying classes.
Real-time monitoring of applications.
Enhances code readability.
Improved type safety.
Facilitates pattern matching.
Reduced pause times
Improved performance for native interoperation.
Increased complexity in memory management.
Reduces boilerplate code for data carriers.
Allows for more controlled inheritance.
Better control over inheritance.
Clearer API contracts.
Enhanced encapsulation.
Improves API design.
Reduced boilerplate.
Reduces the risk of misuse.
gptkbp:can_be_extended_by gptkb:JEP_416
gptkbp:can_be_used_with gptkb:Java_Mission_Control
gptkbp:case_analysis Case studies published.
gptkbp:cause Simplification of the JDK.
gptkbp:challenges Complexity in design.
Backward compatibility.
Documentation.
Learning curve for developers.
Tooling support.
gptkbp:collaborated_with gptkb:Open_JDK_community
Java community projects
Java open-source projects
Java contributors
gptkbp:community_engagement Encouraged for engagement.
gptkbp:community_events Featured in community events.
gptkbp:community_feedback Generally positive.
Positive feedback.
Positive reception.
Mixed responses.
Positive response to deprecation.
Gathered during preview.
gptkbp:community_involvement High community involvement.
Encouraged for feedback.
Open for contributions.
gptkbp:community_support Strong community support.
Active community support.
Active community forums.
gptkbp:compatibility Backward compatible with existing Java code.
No compatibility issues.
Backward compatibility is broken.
gptkbp:complement gptkb:Sealed_classes
Existing monitoring solutions.
gptkbp:concluded_on JDK 16.
Deprecation is a step towards removal.
Removal is beneficial for JDK's future.
gptkbp:conference Discussed in conferences.
gptkbp:conformance Conforms to Java standards.
Follows Java language rules.
Conforms to Java language rules.
gptkbp:consequences Encourages migration to modern frameworks.
Legacy systems may face challenges.
gptkbp:constructor Automatically generated.
gptkbp:contributes_to gptkb:Java_ecosystem
Java ecosystem.
Java performance improvements
Java programming language.
gptkbp:contribution Available on Open JDK.
Guidelines for contributions.
Significant contribution to Java language.
Contributed by Java community.
Contributed to the Java community.
Contributes to JDK modernization.
gptkbp:copy_method Automatically generated.
gptkbp:created 2020-09-15
2019-09-17
gptkbp:data_encapsulation Encourages encapsulation of data.
gptkbp:decided_by Deprecation approved.
gptkbp:declaration_syntax record Person(String name, int age) {}
gptkbp:dependency No external dependencies.
gptkbp:describes JDK 14 Support for the Java SE 14 API Specification
gptkbp:description Enhances the instanceof operator to allow pattern matching.
Introduces a new class type called records.
Provides a new class type called 'record'.
Provides a new class type for immutable data.
Introduces sealed classes and interfaces to restrict which classes can extend or implement them.
This JEP proposes to remove the Java EE and CORBA modules from the JDK.
Provides a new class type for modeling immutable data.
Provides a mechanism for streaming Java Flight Recorder events.
Allows class authors to control which classes can extend a class.
This JEP proposes to remove the Java Management Extensions (JMX) modules from the JDK.
gptkbp:deserialization Supports deserialization.
gptkbp:design Simplicity.
Immutability.
Simplicity and clarity.
Clarity.
Encapsulation of data.
gptkbp:discusses Concurrent processing of thread stacks
Open JDK mailing list.
The removal is part of the ongoing effort to simplify the JDK.
https://openjdk.java.net/jeps/395
JEP 395 was discussed in the Open JDK mailing lists.
gptkbp:educational_resources Educational resources available.
Available for learning.
Books and online courses.
gptkbp:effective_date Java Community Process.
gptkbp:enables Real-time analytics.
More concise code
Pattern matching for records
Destructuring.
Integration with third-party tools.
real-time monitoring of Java applications
gptkbp:encourages Functional programming
Declarative programming style
Functional programming.
gptkbp:end_date 2021-09-14
Not finalized yet.
gptkbp:enhances gptkb:Java_SE_14
API design
Java language
User experience.
Data encapsulation
Java syntax.
Potential for additional features.
Potential for pattern matching.
Debugging capabilities.
observability of Java applications
ZGC capabilities
gptkbp:equals_method Automatically generated.
gptkbp:error_handling Standard Java error handling.
Standard error handling applies.
gptkbp:established Can declare fields.
gptkbp:example if (obj instanceof String s) { ... }
Interfacing with C libraries.
record Point(int x, int y) {}
Defining a sealed class hierarchy.
Code examples available.
Accessing native libraries.
Creating a record for a person.
Direct buffer manipulation.
Memory-mapped files.
Working with large datasets.
record Person(String name, int age) {}
Non-sealed subclass.
Permitted subclasses.
Person p = new Person(" Alice", 30);
Sealed class declaration.
Sealed class with permits.
Sealed interface.
System.out.println(p.age());
System.out.println(p.name());
var person = new Person(" Bob", 25);
gptkbp:exemplifies Data modeling
Data transfer objects.
gptkbp:facilitates Data visualization.
integration with monitoring tools
Data transfer objects
Pattern matching.
Event-driven architectures.
gptkbp:feature Immutable data carriers
Immutable data classes
gptkbp:features gptkb:Records
gptkb:Switch_Expressions
Pattern Matching
Language feature
gptkbp:feedback Gathered from the Java community.
https://mail.openjdk.java.net/mailman/listinfo/jdk-dev
gptkbp:feedback_mechanism Feedback collected from users.
Java mailing lists.
Open for community feedback.
gptkbp:field Final fields are created.
Final fields.
Final by default.
gptkbp:field_access Fields are final.
gptkbp:focus gptkb:Garbage_Collection
gptkbp:follows gptkb:JEP_394
gptkbp:formulation record Class Name {...}
record Class Name(parameters) {}
record Point(int x, int y) {}
Uses 'record' keyword.
Point p1 = new Point(1, 2);
Point p2 = new Point(1, 2);
System.out.println(p);
var p = new Point(1, 2);
gptkbp:future_plans Future directions for records.
Monitor the ecosystem for JMX alternatives.
Remove deprecated modules in future JDK.
gptkbp:future_prospects Community engagement.
Further enhancements planned.
Performance improvements.
Enhancements based on feedback.
Monitor usage of Java EE and CORBA.
Further enhancements based on feedback.
Monitor usage of alternatives.
Integration with other features.
Tooling updates.
Research ongoing in related areas.
gptkbp:has_documentation Comprehensive documentation available.
Available on Open JDK website.
Detailed in JDK documentation.
gptkbp:has_limitations Cannot extend other classes.
gptkbp:has_version Updated in JDK 17.
gptkbp:hash_code_method Automatically generated.
https://www.w3.org/2000/01/rdf-schema#label JEP 395
gptkbp:immutability Records are immutable.
gptkbp:impact Reduces boilerplate code.
Improves maintainability.
Improves data handling.
Applications that depend on these modules will need to be updated.
Java programming practices.
Simplifies data handling in Java.
Simplifies data modeling.
Simplifies the common coding pattern.
Significant impact on Java development.
Enhances performance monitoring tools.
Improves observability of Java applications.
Enhances readability.
Enhances maintainability and readability of code.
Enhances type safety and maintainability.
Removes legacy modules from the JDK.
Users must adapt to new monitoring solutions.
Applications that rely on JMX will need to find alternatives.
gptkbp:impact_on_java Transformative impact on Java.
gptkbp:improves Code readability
performance analysis
Type safety
Application responsiveness
Operational efficiency.
Code readability.
Application performance insights.
diagnostics capabilities
Thread-Stack Processing
gptkbp:includes new features
gptkbp:increased Developer productivity.
gptkbp:industry_adoption Adopted by industry leaders.
gptkbp:influenced_by Scala case classes
Scala case classes.
gptkbp:influences Future Java language features
Future Java features
future JDK versions
Future garbage collection proposals
gptkbp:inspired_by Scala case classes.
gptkbp:integration Easily integrates with existing code.
gptkbp:interface Can implement interfaces.
gptkbp:introduced_in gptkb:JDK_17
gptkb:Java_14
gptkb:Java_16
gptkb:Java_SE_14
gptkb:Java_SE_16
gptkb:JDK_14
gptkb:JDK_16
gptkb:Java_17
gptkbp:involved_technology gptkb:Microservices
gptkb:cloud_computing
gptkb:JNR_(Java_Native_Runtime)
gptkb:JNI_(Java_Native_Interface)
Java SE.
Native Image.
gptkbp:is_a_framework_for Used in various frameworks.
gptkbp:is_a_resource_for Documentation available.
gptkbp:is_about gptkb:Records
gptkbp:is_adopted_by gptkb:Open_JDK_community
gptkb:Java_frameworks
gptkb:Open_JDK
Software companies
Open source projects
Java Community
Java projects
Used in various applications.
Enterprise applications.
High adoption rate.
High among Java developers.
Increasing among developers.
Java 16.
Java community.
Learning curve for new syntax.
Learning curve for new users.
Open-source projects.
Software projects.
Widely adopted in Java applications.
Widely adopted in production systems.
Some challenges in adoption.
Widely adopted in Java projects.
Adopted in various projects.
Java 16 users
Limited adoption in recent years.
gptkbp:is_analyzed_in Software engineers
Technical papers
technical papers
Java analysts
Java articles.
Java research.
gptkbp:is_beneficial_for Developers.
Data analysts.
Quality assurance teams.
System administrators.
Application architects.
Business stakeholders.
Dev Ops teams.
Performance engineers.
Product managers.
Support teams.
gptkbp:is_celebrated_in gptkb:Java_conferences
Java enthusiasts
gptkbp:is_cited_in Java books
Java documentation.
Java literature.
Java SE 14 release notes
Subsequent JEPs
gptkbp:is_committed_to JDK-8261234
gptkbp:is_compared_to Other data structures in Java.
Similar to data classes in Kotlin.
Different from traditional Java classes.
Similar to case classes in Scala.
gptkbp:is_compatible_with gptkb:Java_17
gptkbp:is_connected_to Java standards
gptkbp:is_considered Future Java versions
gptkbp:is_described_as Java experts
Java tutorials
Java Enhancement Proposal document.
gptkbp:is_designed_for production environments
gptkbp:is_discussed_in gptkb:Java_conferences
Java meetups
Java conferences.
Java forums
Java forums.
Java community process
gptkbp:is_documented_in gptkb:JEP
Technical specifications
Online resources
Java Documentation
Java documentation
Java documentation.
Open JDK documentation
Java authors
gptkbp:is_evaluated_by Performance benchmarks
Quality assurance teams
Java experts
Performance analysts
Java assessments.
Java code reviews.
Java performance teams
Java assessments
gptkbp:is_explored_in Research studies
Technical workshops
Java blogs.
Java tutorials.
gptkbp:is_implemented_in gptkb:Java_programming_language
gptkb:JDK_11
gptkb:JDK_14
gptkb:JDK_16
gptkb:Java_Development_Kit_(JDK)
gptkb:Java_Virtual_Machine_(JVM)
gptkb:Open_JDK
Completed
Java runtime
Detailed in the proposal.
JDK 14 implementation
JDK 16 implementation
JDK 16 implementation.
JDK 16.
JDK 17 and later.
Java Development Kit.
Part of the Java language.
Built into the JDK.
Java API for Foreign-Memory Access.
Implemented in JDK 14.
The implementation involves removing the JMX API and related classes.
gptkbp:is_influenced_by gptkb:Kotlin_data_classes
Kotlin data classes.
Java community feedback
previous JEPs
gptkbp:is_integrated_with Java IDEs
Interoperable with existing Java code.
Java distributions
gptkbp:is_motivated_by To provide a compact syntax for declaring classes that are transparent holders for shallowly immutable data.
Java EE and CORBA are no longer part of the Java SE platform.
To simplify the JDK and remove outdated technologies.
Improve the modeling of hierarchies.
Improve the expressiveness of the type system.
Improve the readability of code.
JMX is rarely used in modern applications.
gptkbp:is_part_of gptkb:Java_2_Platform
gptkb:Java_SE_platform
gptkb:Java_SE_14
gptkb:Java_SE_16
Java SE.
JDK 17 features.
Java SE 14 release
Java SE 14 features list
Java 16 release
gptkbp:is_practiced_in Follow best practices for usage.
Use for simple data structures.
gptkbp:is_promoted_by Java advocates
Java advocates.
Java influencers
Java newsletters
Java workshops.
gptkbp:is_referenced_in Java documentation
Java books
Java community discussions.
Java specifications.
subsequent JEPs
gptkbp:is_related_to gptkb:JEP_344
gptkb:JEP_394
Type inference
Garbage collection algorithms
JEP 384: Pattern Matching for instanceof.
JEP 391.
Java SE 14 features
gptkbp:is_reviewed_by gptkb:Java_Community_Process
gptkb:Java_community
Approved
Java experts
JDK Reviewers
Java community.
Java publications
gptkbp:is_supported_by gptkb:Java_18
gptkb:Java_community
Java developers
Java IDEs
Java user groups
Java vendors
Java runtime
Java 16 and later.
Java community.
Java environments
Java libraries.
Java IDEs.
gptkbp:is_taught_in Low learning curve.
gptkbp:is_tested_for gptkb:JUnit
Development environments
Production environments
Extensively tested.
Java QA teams
Java environments
Java testing frameworks.
Java unit tests.
JDK 14 builds
Supported in testing frameworks.
JUnit and other frameworks.
gptkbp:is_used_in Java applications
Java applications.
Cloud applications.
gptkbp:is_utilized_by Enterprise applications
Cloud applications
Microservices.
gptkbp:is_utilized_in Java development.
Java frameworks.
gptkbp:issue_link https://bugs.openjdk.java.net/browse/ JDK-8221210
gptkbp:issues JDK-8221210
JDK-8241234
JDK-8251234
gptkbp:jdkversion gptkb:17
gptkbp:key Simplifies data handling in Java.
gptkbp:key_feature gptkb:Sealed_classes
Permits
Record classes
Compact constructor syntax.
Compact syntax for declaring data classes.
Support for destructuring.
Support for memory allocation and deallocation.
Support for pattern matching.
Support for sealed types.
Automatic generation of equals(), hash Code(), and to String() methods.
Sealed interfaces
Integration with the Java garbage collector.
Access to memory outside the Java heap.
Non-sealed classes
Support for memory access with safety checks.
Permits subclasses to be defined only in the same package or module.
Compact syntax for declaring classes.
Permits clause
gptkbp:latest_version gptkb:JEP_395
1.0
JDK 14 and later.
gptkbp:legacy No longer supported.
gptkbp:library Project Lombok.
gptkbp:modifiers Can be declared with modifiers.
gptkbp:next_edition Expected in future Java versions.
gptkbp:notable_contributor JDK Team
gptkbp:notable_production Encourages adoption of modern frameworks.
Significant impact on development.
gptkbp:offers_workshops_on Workshops conducted on usage.
gptkbp:pattern_matching Potential future feature.
Compatible with pattern matching.
gptkbp:performance Minimal impact.
Optimized for performance.
gptkbp:plot_summary A proposal for record types in Java.
Removal of JMX modules from JDK.
This JEP proposes to deprecate the Java EE and CORBA modules for removal in a future release.
gptkbp:precedes gptkb:JEP_396
gptkbp:project gptkb:Open_JDK
Used in open-source projects.
gptkbp:promotes Immutability
Immutability.
gptkbp:proposed_by gptkb:Open_JDK_Community
gptkb:Pattern_Matching_for_instanceof
gptkb:Brian_Goetz
gptkb:Oracle
gptkb:James_Gosling
gptkb:Mark_Reinhold
JDK Release Team
JEP process.
gptkbp:provides API enhancements
Automatic implementations of equals, hash Code, and to String.
Event buffering.
Low-overhead event collection.
Default implementations for equals, hash Code, and to String.
Concurrent stack processing
Type-safe conditional logic
event data in a continuous stream
gptkbp:provides_support_for Supported by Java compiler.
gptkbp:published_by Java magazines
gptkbp:published_in March 2021
gptkbp:purpose Provide a mechanism to safely access foreign memory outside of the Java heap.
gptkbp:reduces Boilerplate code
Error-prone boilerplate.
Error-prone code
gptkbp:related_concept gptkb:Java_SE
gptkb:Documentation
gptkb:Inheritance
gptkb:Java_Community_Process
gptkb:Java_programming_language
gptkb:Java_Development_Kit_(JDK)
Abstraction
Design principles
Dynamic typing
Object-oriented programming
Software engineering
Interfaces
Refactoring
Agile development
Code review
Continuous integration
Design patterns
Polymorphism
Version control
Static typing
Best practices
Code reusability
Encapsulation
Error handling
Software architecture
Type safety
Code maintainability
Code quality
Software testing
Abstract classes
Class hierarchy
Compile-time checks
Runtime checks
Software lifecycle
Data classes.
ISO/ IEC 23270.
No direct related standards.
gptkbp:related_jeps gptkb:JEP_344
gptkb:JEP_384
gptkb:JEP_386
gptkb:JEP_393
gptkb:JEP_394
gptkb:JEP_396
gptkb:JEP_397
gptkb:JEP_291
gptkb:JEP_406
gptkb:JEP_409
JEP 384, JEP 397.
JEP 384, JEP 394.
gptkbp:related_to gptkb:JEP_384
gptkb:JEP_394
gptkb:JEP_397
gptkb:Z_Garbage_Collector
gptkb:Java_Flight_Recorder
gptkb:Java_Development_Kit_(JDK)
gptkbp:release_date 2021-09-14
March 2020
September 2018
March 2021
September 2021
gptkbp:release_notes Included in JDK 16 release.
Included in JDK release notes.
Included in JDK 14 release notes.
Included in release notes.
JMX modules removed.
gptkbp:released gptkb:JDK_17
gptkb:Java_SE_16
gptkb:JDK_11
gptkb:JDK_14
gptkbp:repository gptkb:Open_JDK
gptkbp:requires Java 8 or higher
JDK 14 or later
Java 16 runtime.
JDK Flight Recorder.
Java Flight Recorder API.
JVM changes
gptkbp:reviews gptkb:Gilad_Bracha
gptkb:Alan_Bateman
gptkb:Brian_Goetz
gptkb:David_Holmes
gptkb:Venkat_Subramaniam
gptkb:Mark_Reinhold
gptkb:Jesse_Glick
2020-10-01
Reviewed by the Java Community Process.
Various contributors.
Various members of the Open JDK community.
Various Java community members.
Community review.
gptkbp:runtime Supported at runtime.
gptkbp:serialization Supports serialization.
gptkbp:significance Marks a shift in Java's evolution.
gptkbp:specification gptkb:Java_Language_Specification
Java Language Specification.
Defines a new syntax for declaring classes.
Java SE 14 API Specification
gptkbp:specifies Java Flight Recorder (JFR) event streaming
gptkbp:status gptkb:Final
gptkb:Preview
Standard Feature
gptkbp:supports gptkb:Kotlin
Destructuring assignment
Record types.
Record patterns
Asynchronous event streaming.
Custom event types.
Multiple output formats.
multiple consumers of event data
gptkbp:target_jdk gptkb:JDK_17
gptkb:JDK_11
gptkb:JDK_14
gptkb:JDK_16
gptkbp:targets gptkb:Java_programming_language
gptkbp:technique equals(), hash Code(), to String() are generated.
gptkbp:title gptkb:Pattern_Matching_for_instanceof
gptkb:Sealed_Classes
gptkb:JFR:_Event_Streaming
gptkb:Records
gptkb:JFR_Event_Streaming
Records (preview)
ZGC: Concurrent Thread-Stack Processing
Records (Preview)
Records (Standard Feature)
Remove the Java EE and CORBA Modules
Foreign-Memory Access API (preview)
Records (standard feature preview)
Records (standard feature)
Deprecate the Java EE and CORBA Modules for Removal
Remove the Java Management Extensions (JMX) Modules
Records (Standard Feature Preview)
gptkbp:to_string_method Automatically generated.
gptkbp:tradition Follows Java naming conventions.
gptkbp:trends Increased use of records.
Trends towards more data-oriented programming.
gptkbp:tutorials Online tutorials available.
Various online resources.
gptkbp:type_of Supported.
Supports type inference.
gptkbp:updates 2020-03-17
gptkbp:usage Used for creating data transfer objects.
Used for configuration settings.
Used for data transfer objects.
Used for simple data structures.
Used in defining restricted class hierarchies.
gptkbp:use_case Type safety.
Extensibility.
Performance analysis.
Code organization.
Data transfer objects.
Troubleshooting.
API design.
Capacity planning.
Data transfer, configuration.
Domain modeling.
gptkbp:used_in Functional programming.
gptkbp:user_base Large user base.
Java developers.
gptkbp:uses Pattern Matching
gptkbp:version_compatibility Compatible with previous versions.
gptkbp:bfsParent gptkb:JDK_17
gptkb:JEP_33
gptkb:Java_SE_16
gptkb:JDK_10
gptkb:JDK_14
gptkb:JDK_15
gptkb:JDK_18
gptkb:JEP_488
gptkb:Java_SE_15
gptkb:Java_10
gptkb:Open_JDK
gptkbp:bfsLayer 5