Summary: This document provides information about the extension providing JEE analysis support.
Please see JEE - Required third-party software.
This extension provides support for JEE.
Please see the following pages for information about new features/changes, fixed bugs, changes that will impact results etc.:
|Language / Framework||Supported||Supported Versions|
|Presentation layer frameworks||Java Server Faces (JSF)|
This includes the support of the following third-party JSF libraries:
|Persistence layer frameworks||Hibernate|
|Other frameworks||Spring IoC|
Java 9 support
Private Methods in Interface
From Java 9 onward, users can write private methods in interfaces using the private access modifier as shown in following sample of code. These methods are now supported by the JEE Analyzer:
- Starting with Java 9, new concepts of modules are introduced directly in-between packages and class loaders. It encapsulates packages and the classes there in.
- A specific module-info.java is used for module declaration and a new syntax has been introduced for this purpose.
Java 10 support
Java 10 extends type inference to declarations of local variables with initializers and introduces the use of 'var' for the purpose of local-variable type inference. This makes local variable definitions clear and concise. See the examples below.
Enlighten will also display the resolved types as seen below
Java 11 support
This JEP will allow "var" to be used when declaring the formal parameters of implicitly typed lambda expressions. This aligns the syntax of lambdas with Java 10's local-variable type inference. Instead of writing this:
We’ll be able to write this in Java 11:
Annotations can also be applied to the lambda formal parameters:
Enlighten's code viewer will display the resolution of var for lambdas. A sample is shown below:
The new APIs introduced in Java 11 will also be resolved in Enlighten. For example, here are some of the new String APIs:
Java 14 support
This feature extends switch so it can be used as either a statement or an expression, and so that both forms can use either traditional case labels (with fall through) or new case ->labels (with no fall through), with a further new statement for yielding a value from a switch expression.
Before the new support:
After the new support:
For more details refer: JEP 361: Switch Expressions
Java 15 support
The text block has been standardized in Java 15 with no further changes from its second preview state in Java 14.
For more details refer: JEP 378: Text Block
Java 16 support
Pattern Matching for instanceof
This feature, introduced in Java 14, is now standardized in Java 16. In this release, pattern variables are no longer implicitly final, and it's a compile-time error if a pattern
instanceof expression compares an expression of type
S with a pattern of type
S is a subtype of
For more details refer: JEP 394: Pattern Matching for instanceof
This feature, introduced in Java 14 as a preview feature, has now been standardized in Java 16 with minor improvements on the changes made in the second preview in Java 15.
For example, the record defined below automatically contains a constructor, accessor methods, and implementations of hashCode(), equals() and toString():
For more details refer: JEP 395: Records
Java 17 support
This feature provides a mechanism to control which classes or types are permitted to extend or implement a class or interface respectively.
For more details refer: JEP 409: Sealed Classes
Java 18 support
JEE supports the latest APIs from JDK 18.
Analysis configuration for Java JDK 9 - 18
By default, AIP Console/CAST Management Studio will not specifically offer JDK 9 - 18 options in the Java Version configurations setting (see JEE - Analysis configuration). Instead, the CAST will assume that that latest version of the JDK has been used to compile the application source code - and in this case, "Latest" includes support for Java 9 - 18.
- Function Points (transactions): a green tick indicates that OMG Function Point counting and Transaction Risk Index are supported
- Quality and Sizing: a green tick indicates that CAST can measure size and that a minimum set of Quality Rules exist
|Function Points (transactions)|
|Quality and Sizing|
|CAST AIP release||Supported|
Supported DBMS servers
This extension is compatible with the following DBMS servers:
Dependencies with other extensions
Some CAST AIP extensions require the presence of other CAST AIP extensions in order to function correctly. The JEE Analyzer extension requires that the following other CAST AIP extensions are also installed:
- Web services linker service (internal technical extension)
Download and installation instructions
Application qualification information
Please see: JEE - Application qualification specifics
Prepare and deliver the source code
Please see: JEE - Prepare and deliver the source code
Analysis configuration and execution
Please see: JEE - Analysis configuration and execution and all child pages:
- JEE - Analysis configuration
- JEE - Analysis of pure Java applications
- JEE - Handling action classes
- JEE - Framework analysis tips
- JEE - Advanced customization of a JEE analysis
- Customize the cast-tag.extensions.xml
- Manage annotations
- Manage XML configuration files
- Manage properties files
- Manage JSP Tag Files
- Manage JSP custom tags
- JEE - Environment Profiles
- JEE - Run and validate analysis
What analysis results can you expect?
Please see: JEE - Analysis results
The vast majority of rules provided for the JEE Analyzer are embedded in CAST AIP - see JEE - Structural rules for more information. In addition, some rules are also provided with the extension:
Current known limitations
See also JEE Analyzer - Technology support notes.
Avoid static field of type collection (7562)
When calculating a snapshot for applicationusing JSE 5.0, the Quality Rule "Avoid static field of type collection (7562)" does not list as "Very High Risk Objects" classes that are or inherit from a Generic collection. The Quality Rule lists only the non generic form of collections. For example static attributes of type java.util.Collection<E> will not be reported as a violation.
Persistence: Avoid table and column names that are too long (portability) (7706)
- JEE application using the Java Persistence API (JPA), e.g. in the form of Hibernate.
- A table or column name is not specified in the annotations of the JPA entity.
Symptoms: The JPA entity is not listed as a "Very High Risk" object in the results.
No link bookmarks generated
When Java Methods are defined inside a JSP file, no link bookmarks are generated (bookmarks can be seen in CAST Enlighten or in the Dynamic Link Manager). Example of a Java Method defined in a JSP file: