Migrating APIs and specifications

Migrating application programming interfaces (APIs) and specifications involves moving to the current Java™ level as well as to other technologies that WebSphere® Application Server Version 9.0 supports. If your existing applications currently support different specification levels than are supported by this version of the product, you might have to update at least some aspects of the applications to comply with the new specifications.

In many cases, IBM® provides additional features and customization options that extend the specification level even further. If your existing applications use IBM extensions from earlier product versions, you might have to migrate your applications to use the same kinds of extensions in Version 9.0.

WebSphere Application Server Version 9.0 supports Java Platform, Standard Edition (Java SE) 8 and Java Platform, Enterprise Edition (Java EE) 7. See Programming model APIs and specifications for a summary of the specifications and API documentation supported in current and prior product releases.

For more information about items that are deprecated in WebSphere Application Server Version 9.0, see Deprecated, stabilized, and removed features.

Best practice: Rather than manually looking through your applications for API and specification changes, scan your applications for any required changes by using the Migration Toolkit for Application Binaries and the WebSphere Application Server Migration Toolkit.

The application binary scanner provides a detailed migration analysis report for your application, so that you can better understand the type and scope of changes that the application might require. When you migrate your applications, the Eclipse-based migration toolkit provides quick fixes to automatically update your source when possible and provides detailed help for items that must be manually updated.

Java EE 7 behavior changes

All applications that run on WebSphere Application Server Version 9.0 must use the Java EE 7 implementation of a technology except for JAX-RS and JPA. For JAX-RS and JPA, the product configuration defaults to Java EE 7, but you can update your configuration to use the Java EE 6 implementation. For some technologies, migrating to Java EE 7 might introduce behavior changes, as detailed in the following table.

Table 1. Behavior changes between Java EE 6 and Java EE 7
Technology Behavior changes
Bean Validation 1.1 No behavior changes from Bean Validation 1.0.
Common Annotations for the Java Platform 1.1 No behavior changes.
Concurrency Utilities for Java EE No behavior changes.

If you previously used asynchronous beans or CommonJ Timer and WorkManager, consider migrating to Concurrency Utilities for Java EE because those technologies are deprecated. See Examples to migrate to EE Concurrency from Asynchronous beans and CommonJ.

Contexts and Dependency Injection for Java (CDI) 1.2 This specification introduces some behavior changes from CDI 1.0 See Contexts and Dependency Injection 1.2 behavior changes.
Enterprise JavaBeans (EJB) 3.2 No behavior changes from EJB 3.1.
Expression Language (EL) 3.0 For EL 3.0, the specification was developed independent of the JSP specification, where it was previously defined.

Although the specification introduced several new features, there was only one known behavior change. In EL 3.0, the default coercion for nulls to non-primitive types except String returns a null value. For example, a null that is coerced to a Double now returns a null value, whereas before it returned 0.0.

For more information, see the JSR 341 - Expression Language 3.0 specification.

Java API for RESTful Web Services (JAX-RS) 2.0 This specification introduces some behavior changes from JAX-RS 1.1. See JAX-RS 2.0 behavior changes.

For information about changing your configuration to use the Java EE 6 JAX-RS 1.1 implementation, see Coexistence of JAX-RS 2.0 with JAX-RS 1.1.

Java EE Connector Architecture (JCA) 1.7 No behavior changes from JCA 1.6.
Java Database Connectivity (JDBC) 4.1 No behavior changes from JDBC 4.0.
Java Message Service (JMS) 2.0 This specification introduces some behavior changes from JMS 1.1. See Support for JMS 2.0 features in WebSphere Application Server version 9.0.
Java Persistence API (JPA) 2.1 This specification introduces some behavior changes from JPA 2.0. See Java Persistence API 2.1 behavior changes.

For information about changing your configuration to use the Java EE 6 implementation, see Identifying and modifying the JPA specification level.

Java Servlet 3.1 This specification introduces some behavior changes from Servlet 3.0. See Servlet behavior changes.
Java Transaction API (JTA) 1.2 No behavior changes from JTA 1.1.
JavaServer Faces (JSF) 2.2 This specification introduces some behavior changes from JSF 2.0. See JavaServer Faces 2.2 feature functions.
JavaServer Pages (JSP) 2.3 No behavior changes from JSP 2.2.
Message Driven Beans (MDB) 3.2 No behavior changes from MDB 3.1.