Specification: Jakarta EE Core Profile

Version: 10.0

Status: Final

Release: June 02, 2022

Copyright (c) 2022 Eclipse Foundation

Eclipse Foundation Specification License

By using and/or copying this document, or the Eclipse Foundation document from which this statement is linked, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:

Permission to copy, and distribute the contents of this document, or the Eclipse Foundation document from which this statement is linked, in any medium for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the document, or portions thereof, that you use:

  • link or URL to the original Eclipse Foundation document.

  • All existing copyright notices, or if one does not exist, a notice (hypertext is preferred, but a textual representation is permitted) of the form: "Copyright (c) [$date-of-document] Eclipse Foundation, Inc. <<url to this license>>"

Inclusion of the full text of this NOTICE must be provided. We request that authorship attribution be provided in any software, documents, or other items or products that you create pursuant to the implementation of the contents of this document, or any portion thereof.

No right to create modifications or derivatives of Eclipse Foundation documents is granted pursuant to this license, except anyone may prepare and distribute derivative works and portions of this document in software that implements the specification, in supporting materials accompanying such software, and in documentation of such software, PROVIDED that all such works include the notice below. HOWEVER, the publication of derivative works of this document for use as a technical specification is expressly prohibited.

The notice is:

"Copyright (c) [$date-of-document] Eclipse Foundation. This software or document includes material copied from or derived from [title and URI of the Eclipse Foundation specification document]."

Disclaimers

THIS DOCUMENT IS PROVIDED "AS IS," AND THE COPYRIGHT HOLDERS AND THE ECLIPSE FOUNDATION MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

THE COPYRIGHT HOLDERS AND THE ECLIPSE FOUNDATION WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.

The name and trademarks of the copyright holders or the Eclipse Foundation may NOT be used in advertising or publicity pertaining to this document or its contents without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders.

1. Introduction

This specification defines the Jakarta™ EE Core Profile (“Core Profile”), a profile of the Jakarta™ Platform, Enterprise Edition specifically targeted at smaller applications built around microservices.

1.1. Target and Rationale for the Core Profile

The Core Profile is targeted at developers of modern cloud applications with focus on a minimal set of APIs that support microservices with a focus on enabling implementations that make use of ahead of time complitation build to minimize startup time and memory footprint.

It is worth noting that Core Profile products are allowed to ship with more technologies than the required ones. It is conceivable that products will offer a choice at installation time/or build time between different configurations, some richer in extensions, or even allow for complete customization beyond the required core (“à la carte” installation).

1.2. Determining Applicable Requirements

Profile definitions can be quite terse, amounting to little more than a list of required technologies and a (possibly empty) set of additional requirements, beyond those entailed by all the referenced specifications.

As dictated by the general rules for Jakarta EE profiles in the Platform specification, products that implement the Core Profile must honor:

  1. all requirements of the common requirements section that applies to all profiles;

  2. all requirements of this specification;

  3. all requirements of the individual component specifications;

  4. all requirements in the Jakarta EE Platform specification that are conditional on the presence of a specific technology or combinations of technologies.

Let’s look at some examples of requirements from each grouping.

For the first one, the Jakarta EE Platform specification mandates support for Java™ Platform, Standard Edition 11 API. Because of this, all Core Profile 10.0 APIs must support the Java™ Platform, Standard Edition 11 API.

In the second category one can point out the that Jakarta XML Binding support is not required for Jakarta RESTful Web Services in the Core Profile. (see Additional Requirements).

The third category is hopefully self-explanatory. For example, Core Profile products must implement the Jakarta RESTful Web Services API, which in turn means they need to satisfy all the requirements listed in the Jakarta RESTful Web Services specification.

The fourth category is the most complex. The Jakarta Core Profile TCK attempts to validate the ability to combine the individual component specifications into composite test applications.

1.3. Acknowledgements for Jakarta EE 10.0

The Jakarta EE 10.0 specification was created by the Jakarta EE Platform Specification Project with guidance provided by the Jakarta EE Working Group.

2. Core Profile Definition

This chapter defines the contents of the Jakarta™ EE 10.0 Core Profile.

2.1. Required Components

The following technologies are required components of the Core Profile:

  • Jakarta Annotations 2.1

  • Jakarta Contexts and Dependency Injection (CDI) 4.0 (CDI Lite section)

  • Jakarta Dependency Injection 2.0

  • Jakarta Interceptors 2.1

  • Jakarta JSON Processing 2.1

  • Jakarta JSON Binding 3.0

  • Jakarta RESTful Web Services 3.1

2.2. Optional Components

The optional Jakarta XML Binding support in Jakarta RESTful Web Services implementations is not required for the Core Profile.

Jakarta Expression Language support is not required in Jakarta Contexts and Dependency Injection Lite implementations since this is part of the Full CDI specification.

The Java SE section of the CDI 4.0 specification is not required for Core Profile implementations. Only Full CDI implementations are required to support the (CDI) Java SE API classes.

2.3. Additional Requirements

There are currently no requirements on the deployment packaging of core profile based applications.

Appendix A: Revision History

A.1. Changes in Final Release EE 10

  • Initial version

Appendix B: Related Documents

This specification refers to the following documents. The terms used to refer to the documents in this specification are included in parentheses.

Java™ Platform, Standard Edition (Java SE specification), v11. Available at: https://www.jcp.org/en/jsr/detail?id=384

Java™ Platform, Standard Edition, v11 API Specification. Available at: https://docs.oracle.com/en/java/javase/11/

Jakarta™ RESTful Web Services Specification, Version 3.1. Available at: https://jakarta.ee/specifications/restful-ws/3.1

Jakarta™ Annotations Specification, Version 2.1. Available at: https://jakarta.ee/specifications/annotations/2.1

Jakarta™ Interceptors Specification, Version 2.1. Available at: https://jakarta.ee/specifications/interceptors/2.1

Jakarta™ Contexts and Dependency Injection Specification (CDI Lite section), Version 4.0. Available at: https://jakarta.ee/specifications/cdi/4.0

Jakarta™ Dependency Injection Specification, Version 2.0. Available at: https://jakarta.ee/specifications/dependency-injection/2.0

Jakarta™ JSON Processing Specification, Version 2.1. Available at: https://jakarta.ee/specifications/jsonp/2.1

Jakarta™ JSON Binding Specification, Version 3.0. Available at: https://jakarta.ee/specifications/jsonb/3.0

Jakarta™ EE Working Group (https://jakarta.ee/about/working-group/)