Nablarch 5 to 6 Migration Guide¶
Table of contents
- Major differences between Nablarch 5 and 6
- Prerequisites
- Overview of migration steps
- Details of migration steps
- Nablarch version upgrade
- Compatible with Jakarta EE
- Change Java EE dependency to Jakarta EE
- Update Java EE specification implementation library
- Update gsp-dba-maven-plugin
- Change waitt-maven-plugin to jetty-ee10-maven-plugin
- Change nablarch-testing-jetty6 to nablarch-testing-jetty12
- Change javax namespace to jakarta namespace
- Change XML schema specification to Jakarta EE 10 schema
- Change tag library namespace to Jakarta EE 10 namespace
- Migration procedure of JSR352-compliant Batch Application
- Appendix
This document will explain how to migration a project created with Nablarch 5 to Nablarch 6.
Important
Nablarch 6 version 6/6u1 is a pre-release version, and 6u2 will be the first version after the official release. Therefore, the procedures described here assume that you are upgrading from the latest version of Nablarch 5 to Nablarch 6u2. When upgrading to 6u3 or later, additional steps may be required in addition to those explained here. Be sure to check the upgrade procedure by referring to the release notes for 6u3 or later in order.
Major differences between Nablarch 5 and 6¶
Supports Jakarta EE 10¶
Nablarch 6 supports Jakarta EE 10.
Jakarta EE is the name after Java EE was transferred to the Eclipse Foundation and is the successor to Java EE.
Basically, the Java EE specifications have been transferred as they are, but with Jakarta EE 9, there has been a major change in that the namespace has changed from javax.*
to jakarta.*
.
Therefore, in order to migrate a project created with Nablarch 5 to Nablarch 6, it is necessary not only to upgrade Nablarch but also to make project compatible with Jakarta EE 10.
Also, backward compatibility cannot be maintained due to namespace changes, etc., so an application server compatible with Jakarta EE 10 is required to run on application server.
Changed required Java version to 17¶
Nablarch 6 modules are compiled with Java 17, so you will need Java 17 or higher to work.
Prerequisites¶
The instructions here assume that you have already upgraded to the latest version of Nablarch 5.
For projects created with an older version, first upgrade to the latest version of Nablarch 5, then migrate to Nablarch 6. See Nablarch 5 release notes for details on the modifications required to upgrade to the latest version of Nablarch 5.
Additionally, in order to operate, an application server that supports Java 17 or higher and Jakarta EE 10 is required, so it must be operated in an environment that supports these.
Tip
In addition to upgrade to the latest version of Nablarch 5, it will also need to be supported for use with Java 17 or higher. See Nablarch 5 setup procedure for instructions on how to respond.
Overview of migration steps¶
To get a Nablarch 5 project migrate to Nablarch 6, roughly two modifications are required:
- Nablarch version upgrade
- Compatible with Jakarta EE
The first “Nablarch version upgrade” refers to changing the version of Nablarch used in the project from 5 to 6.
The second, “Compatible with Jakarta EE”, refers to making the project compatible with Jakarta EE 10. This includes changes to namespaces introduced in Jakarta EE 9, and changes libraries that depend on Java EE to Jakarta EE-compatible versions.
Each specific procedure will be described below.
Details of migration steps¶
In this section will explain in detail each of the migration steps required when migration a Nablarch 5 project to Nablarch 6.
Depending on the project, unnecessary steps may be included, but in that case, select and read as appropriate (for example, Change waitt-maven-plugin to jetty-ee10-maven-plugin and Change nablarch-testing-jetty6 to nablarch-testing-jetty12 are steps specific to web projects, so there is no problem in skipping them in batch projects).
Nablarch version upgrade¶
The version of each module that makes up Nablarch is managed by BOM, so you can upgrade Nablarch by changing the version of BOM.
Change <version>
in pom.xml
where Nablarch’s BOM is loaded, as shown below.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.nablarch.profile</groupId>
<artifactId>nablarch-bom</artifactId>
<version>6u2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
...
</dependencies>
</dependencyManagement>
Compatible with Jakarta EE¶
Change Java EE dependency to Jakarta EE¶
Java EE API dependencies (dependency
) must be changed to those of Jakarta EE.
For example, a typical example is Java Servlet.
The dependency
of Java EE API is different and not unified depending on the jar provider and version.
Therefore, it cannot be determined mechanically from groupId
.
Which dependency
is a Java EE API must be determined from groupId
, artifactId
, classes included in the jar, and so on.
For your reference, archetypes and examples provided by Nablarch changes listed below.
In addition, in example applications, by reading the BOM provided by Jakarta EE, it is possible to avoid specifying the version individually. It is recommended to read BOM because it reduces the trouble of checking the version and mistakes in specification, and makes management easier.
<dependencyManagement>
<dependencies>
...
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-bom</artifactId>
<version>10.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Additionally, Correspondence table between Java EE and Jakarta EE specifications is listed as an appendix at the end of this page as a reference for changing dependencies that are not listed in the modification examples.
What is dependency
in Jakarta EE is described on each specification page, so please check it (for example, Jakarta Servlet 6.0 specification page (external site) shows jakarta.servlet:jakarta.servlet-api:jar:6.0.0
in “Maven coordinates”).
Java Servlet → Jakarta Servlet¶
Before modification
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>...</version>
<scope>provided</scope>
</dependency>
After modification
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
JSP → Jakarta Server Pages¶
Before modification
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>...</version>
<scope>provided</scope>
</dependency>
After modification
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<scope>provided</scope>
</dependency>
JSTL → Jakarta Standard Tag Library¶
Before modification
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>javax.servlet.jsp.jstl-api</artifactId>
<version>...</version>
</dependency>
After modification
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
</dependency>
JPA → Jakarta Persistence¶
Before modification
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jpa_2.0_spec</artifactId>
<version>...</version>
</dependency>
After modification
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
</dependency>
JAX-RS → Jakarta RESTful Web Services¶
Before modification
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>...</version>
</dependency>
After modification
<dependency>
<groupId>jakarta.ws.rs</groupId>
<artifactId>jakarta.ws.rs-api</artifactId>
</dependency>
Common Annotations for the Java Platform → Jakarta Annotations¶
Before modification
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>...</version>
</dependency>
After modification
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
</dependency>
Update Java EE specification implementation library¶
If you have embedded Java EE specification implementation library in your application, replace them with those from Jakarta EE.
To find out which dependency
is Java EE specification implementation library, you need to investigate each dependency
individually.
Also, if it is found to be a Java EE specification implementation library, what the dependency
of the Jakarta EE compliant version of that implementation library will be depends on the implementation library.
Therefore, it is necessary to check the official site etc. for each implementation library used in the project.
For your reference, archetypes and examples provided by Nablarch changes listed below.
Compatible implementations are also introduced on each Jakarta EE specification page, so please refer to those as well. (For example, the Jakarta RESTful Web Services 3.1 specification page (external site) lists Eclipse Jersey as a compatible implementation. 3.1.0 is introduced)
Bean Validation → Jakarta Bean Validation¶
Before modification
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.3.6.Final</version>
</dependency>
After modification
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>8.0.0.Final</version>
</dependency>
JSTL → Jakarta Standard Tag Library¶
Before modification
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>...</version>
</dependency>
After modification
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>3.0.0</version>
</dependency>
JAX-RS → Jakarta RESTful Web Services¶
Before modification
<dependencyManagement>
<dependencies>
...
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>...</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
</dependency>
After modification
<dependencyManagement>
<dependencies>
...
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>3.1.8</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
</dependency>
JMS → Jakarta Messaging¶
Before modification
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>...</version>
</dependency>
After modification
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>artemis-server</artifactId>
<version>2.37.0</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>artemis-jakarta-server</artifactId>
<version>2.37.0</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>artemis-jakarta-client</artifactId>
<version>2.37.0</version>
</dependency>
Update gsp-dba-maven-plugin¶
gsp-dba-maven-plugin (external site) is preinstalled in nablarch-example-web and other projects built from archetypes.
This plugin provides a function (generate-entity
) to generate Java entity classes from database table metadata.
Since Java EE annotations such as JPA are set in this entity class, it cannot be used as is in the Jakarta EE environment.
Since gsp-dba-maven-plugin is compatible with Jakarta EE in 5.0.0, change <version>
of gsp-dba-maven-plugin in pom.xml
.
<plugin>
<groupId>jp.co.tis.gsp</groupId>
<artifactId>gsp-dba-maven-plugin</artifactId>
<version>5.1.0</version>
<configuration>
...
Furthermore, in order to use the generate-entity
of the gsp-dba-maven-plugin that supports Jakarta EE, it is necessary to add dependency
and JVM arguments.
See the gsp-dba-maven-plugin guide (external site) for details.
As described above, an entity for which Jakarta EE annotations are set will be generated.
Change waitt-maven-plugin to jetty-ee10-maven-plugin¶
The waitt-maven-plugin (external site) is preinstalled in nablarch-example-web and other web application projects built from archetypes. This plugin provides the ability to easily deploy and run your project’s code on an embedded server (such as Tomcat). However, this plugin is not compatible with Jakarta EE, so change it to jetty-ee10-maven-plugin which provides similar functionality and also supports Jakarta EE.
Before modification, waitt-maven-plugin is set in pom.xml
in nablarch-example-web as follows.
Before modification
<plugin>
<groupId>net.unit8.waitt</groupId>
<artifactId>waitt-maven-plugin</artifactId>
<version>1.2.3</version>
<configuration>
<servers>
<server>
<groupId>net.unit8.waitt.server</groupId>
<artifactId>waitt-tomcat8</artifactId>
<version>1.2.3</version>
</server>
</servers>
</configuration>
</plugin>
Change this to jetty-ee10-maven-plugin as follows.
After modification
<plugin>
<groupId>org.eclipse.jetty.ee10</groupId>
<artifactId>jetty-ee10-maven-plugin</artifactId>
<version>12.0.12</version>
</plugin>
Now you can deploy and run your application code on Jetty.
If you want to actually run it, you can start Jetty with the following command.
mvn jetty:run
Change nablarch-testing-jetty6 to nablarch-testing-jetty12¶
If your web application project uses NTF (Nablarch Testing Framework), use the module nablarch-testing-jetty6
to run the embedded server in your JUnit tests.
Jetty 6 launched with this module does not support Jakarta EE.
Jetty supports Jakarta EE 10 with Jetty 12, so you need to change it to use nablarch-testing-jetty12
which can start Jetty 12.
Tip
Java 11 or higher projects use nablarch-testing-jetty9
to launch Jetty 9, but this is also not compatible with Jakarta EE, so it is necessary to change to nablarch-testing-jetty12
.
First, modify pom.xml
as follows.
<dependency>
<groupId>com.nablarch.framework</groupId>
<artifactId>nablarch-testing-jetty12</artifactId> <!-- Change the artifactId to nablarch-testing-jetty12 -->
<scope>test</scope>
</dependency>
Next, modify the part that defines the components of HttpServerFactory
as follows.
Before modification
<component name="httpServerFactory" class="nablarch.fw.web.httpserver.HttpServerFactoryJetty6"/>
After modification
<component name="httpServerFactory" class="nablarch.fw.web.httpserver.HttpServerFactoryJetty12"/>
In case of nablarch-example-web, the above settings exist in src/test/resources/unit-test.xml
.
With the above, the embedded server that is started when NTF is executed is switched to the version that supports Jakarta EE.
Change javax namespace to jakarta namespace¶
The namespace changes that came with Jakarta EE 9 will also be applied to the application code. The general flow of handling namespace changes is described below.
1. Code that is import
in javax
namespace causes a compilation error, so change to jakarta
namespace.
1. Grep the whole project with javax
and find out where there are no compilation errors.
2. Judge whether the location found in the search is a Java EE namespace
3. If it is a Java EE namespace, replace javax
with jakarta
Details are described below.
javax
descriptions often appear in import
statements in Java source code.
With the modifications made so far, Java EE dependencies have been removed and replaced with Jakarta EE dependencies, so import
in the javax
namespace causes compilation errors.
Therefore, first check where the compilation error occurs and change to jakarta
namespace.
However, javax
appears not only in import
statements, but also in places where compilation errors do not occur.
For example, the key javax.servlet.forward.request_uri
for obtaining the request URI before forwarding in Java Servlet is specified as a character string, so a compilation error does not occur (This key should be changed to jakarta.servlet.forward.request_uri
for Jakarta Servlet).
In addition, even if it is described in JSP or configuration file, it will not be a compilation error, but it will be subject to correction.
Therefore, to check for the presence of the javax
namespace, you must do a Grep search of the entire project.
Next, for the location hit by javax
, determine whether it is really a Java EE namespace.
For example, if you search nablarch-example-web with javax
, the following description will be hit.
import javax.validation.ConstraintValidator;
This is where the Bean Validation class is import
, so it can be judged as a Java EE namespace.
On the other hand, the following description also hits.
import javax.crypto.SecretKeyFactory;
This is not a Java EE namespace because it imports the classes related to cryptographic processing included in the standard library.
In this way, even if javax
is hit, you cannot simply judge that they are all Java EE namespaces.
Namespaces for each specification are listed in the appendix Correspondence table between Java EE and Jakarta EE specifications on this page, so refer to this to determine if the hit javax
is Java EE.
If it can be determined that it is a Java EE namespace, replace javax
with jakarta
.
Below is an example of replacing import
with jakarta
.
import jakarta.validation.ConstraintValidator;
With the above modifications, nablarch-example-web can now run on an application server that supports Jakarta EE 10.
Change XML schema specification to Jakarta EE 10 schema¶
XML files such as web.xml
specify an XML schema, but change this to a schema compatible with Jakarta EE 10.
Schemas provided in Jakarta EE 10 can be found at Jakarta EE XML Schemas (external site) .
Before modification
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
After modification
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
web-app_6_0.xsd"
version="6.0">
Change tag library namespace to Jakarta EE 10 namespace¶
In the JSP file, the tag library namespace is specified using the taglib directive, but change this to a namespace compatible with Jakarta EE 10. You can check the namespaces provided in Jakarta EE 10 at Jakarta Standard Tag Library 3.0 (external site) .
Before modification
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
After modification
<%@ taglib prefix="c" uri="jakarta.tags.core" %>
Migration procedure of JSR352-compliant Batch Application¶
All execution control platforms provided by Nablarch can be migrate using the procedure described in the previous section.
However, for Jakarta Batch-compliant Batch Application only, JBeret, which is used as implementation compliant with JSR352, and related libraries are complicated to update, so an additional explanation is given here.
When a JSR352-compliant Batch Application is generated from an archetype, dependency
is set in pom.xml
as shown below up to Nablarch 5.
Before modification
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>...</version>
</dependency>
...
<!-- Minimum required dependencies for JBeret -->
<dependency>
<groupId>org.jboss.spec.javax.batch</groupId>
<artifactId>jboss-batch-api_1.0_spec</artifactId>
<version>...</version>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>...</version>
</dependency>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>...</version>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.transaction</groupId>
<artifactId>jboss-transaction-api_1.2_spec</artifactId>
<version>...</version>
</dependency>
<dependency>
<groupId>org.jberet</groupId>
<artifactId>jberet-core</artifactId>
<version>...</version>
</dependency>
<dependency>
<groupId>org.jboss.marshalling</groupId>
<artifactId>jboss-marshalling</artifactId>
<version>...</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>...</version>
</dependency>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-core</artifactId>
<version>...</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-security-manager</artifactId>
<version>...</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>...</version>
</dependency>
<!-- Dependencies for JBeret to work with Java SE -->
<dependency>
<groupId>org.jberet</groupId>
<artifactId>jberet-se</artifactId>
<version>...</version>
</dependency>
<dependency>
<groupId>org.jboss.weld.se</groupId>
<artifactId>weld-se</artifactId>
<version>...</version>
</dependency>
<!-- Dependencies when outputting logs with Logback -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>...</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>...</version>
</dependency>
When migrate to Nablarch 6, modify this as follows.
After modification
<dependency>
<groupId>org.glassfish.expressly</groupId>
<artifactId>expressly</artifactId>
<version>5.0.0</version>
</dependency>
...
<!-- Minimum required dependencies for JBeret -->
<dependency>
<groupId>jakarta.batch</groupId>
<artifactId>jakarta.batch-api</artifactId>
</dependency>
<dependency>
<groupId>jakarta.inject</groupId>
<artifactId>jakarta.inject-api</artifactId>
</dependency>
<dependency>
<groupId>jakarta.enterprise</groupId>
<artifactId>jakarta.enterprise.cdi-api</artifactId>
</dependency>
<dependency>
<groupId>jakarta.transaction</groupId>
<artifactId>jakarta.transaction-api</artifactId>
</dependency>
<dependency>
<groupId>org.jberet</groupId>
<artifactId>jberet-core</artifactId>
<version>2.1.4.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.marshalling</groupId>
<artifactId>jboss-marshalling</artifactId>
<version>2.1.3.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.5.3.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-core-impl</artifactId>
<version>5.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-security-manager</artifactId>
<version>2.2.2.Final</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.1.1-jre</version>
</dependency>
<!-- Dependencies for JBeret to work with Java SE -->
<dependency>
<groupId>org.jberet</groupId>
<artifactId>jberet-se</artifactId>
<version>2.1.4.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.weld.se</groupId>
<artifactId>weld-se-core</artifactId>
<version>5.0.1.Final</version>
</dependency>
<!-- Dependencies when outputting logs with Logback -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.11</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.5.6</version>
</dependency>
What to do if an error occurs during execution¶
When NoClassDefFoundError occurs¶
org.jboss.weld.exceptions.WeldException
at org.jboss.weld.executor.AbstractExecutorServices.checkForExceptions (AbstractExecutorServices.java:82)
...
Caused by: java.lang.NoClassDefFoundError
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method)
...
Caused by: java.lang.NoClassDefFoundError:Could not initialize class org.jboss.weld.logging.BeanLogger
at org.jboss.weld.util.Beans.getBeanConstructor (Beans.java:279)
If a stack trace like the one above is output during execution and an error occurs, you can resolve the error by placing slf4j-nablarch-adaptor
after Logback in the classpath order.
When running with Maven, you can change the classpath order by placing slf4j-nablarch-adaptor
in pom.xml
below Logback.
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>...</version>
</dependency>
<!-- Place slf4j-nablarch-adaptor below Logback -->
<dependency>
<groupId>com.nablarch.integration</groupId>
<artifactId>slf4j-nablarch-adaptor</artifactId>
<scope>runtime</scope>
</dependency>
Appendix¶
Correspondence table between Java EE and Jakarta EE specifications¶
Java EE | Short name | Namespace prefix | Jakarta EE |
---|---|---|---|
Java Servlet | javax.servlet |
Jakarta Servlet (external site) | |
JavaServer Faces | JSF | javax.faces |
Jakarta Faces (external site) |
Java API for WebSocket | javax.websocket |
Jakarta WebSocket (external site) | |
Concurrency Utilities for Java EE | javax.enterprise.concurrent |
Jakarta Concurrency (external site) | |
Interceptors | javax.interceptor |
Jakarta Interceptors (external site) | |
Java Authentication SPI for Containers | JASPIC | javax.security.auth.message |
Jakarta Authentication (external site) |
Java Authorization Contract for Containers | JACC | javax.security.jacc |
Jakarta Authorization (external site) |
Java EE Security API | javax.security.enterprise |
Jakarta Security (external site) | |
Java Message Service | JMS | javax.jms |
Jakarta Messaging (external site) |
Java Persistence API | JPA | javax.persistence |
Jakarta Persistence (external site) |
Java Transaction API | JTA | javax.transaction |
Jakarta Transactions (external site) |
Batch Application for the Java Platform | jBatch | javax.batch |
Jakarta Batch (external site) |
JavaMail | javax.mail |
Jakarta Mail (external site) | |
Java EE Connector Architecture | JCA | javax.resource |
Jakarta Connectors (external site) |
Common Annotations for the Java Platform | javax.annotation |
Jakarta Annotations (external site) | |
JavaBeans Activation Framework | JAF | javax.activation |
Jakarta Activation (external site) |
Bean Validation | javax.validation |
Jakarta Bean Validation (external site) | |
Expression Language | EL | javax.el |
Jakarta Expression Language (external site) |
Enterprise JavaBeans | EJB | javax.ejb |
Jakarta Enterprise Beans (external site) |
Java Architecture for XML Binding | JAXB | javax.xml.bind |
Jakarta XML Binding (external site) |
Java API for JSON Binding | JSON-B | javax.json.bind |
Jakarta JSON Binding (external site) |
Java API for JSON Processing | JSON-P |
|
Jakarta JSON Processing (external site) |
JavaServer Pages | JSP | javax.servlet.jsp |
Jakarta Server Pages (external site) |
Java API for XML-Based Web Services | JAX-WS | javax.xml.ws |
Jakarta XML Web Services (external site) |
Java API for RESTful Web Services | JAX-RS | javax.ws.rs |
Jakarta RESTful Web Services (external site) |
JavaServer Pages Standard Tag Library | JSTL | javax.servlet.jsp.jstl |
Jakarta Standard Tag Library (external site) |
Contexts and Dependency Injection for Java | CDI |
|
Jakarta Contexts and Dependency Injection (external site) |
Dependency Injection for Java | javax.inject |
Jakarta Dependency Injection (external site) |