One-pager: GlassFish V3

1. Introduction

1.1. Project/Component Working Name

Glassfish v3

1.2. Name(s) and e-mail address of Document Author(s)/Supplier

Lloyd Chambers, Jerome Dochez, et al

1.3. Date of This Document

01 December 2009

1.4. Name of Major Document Customer(s)/Consumer(s):

1.4.1. The PAC or CPT you expect to review your project:

Web and Application Platform PAC (WAPPAC)

1.4.2. The ARC(s) you expect to review your project:

LSARC

1.4.3. The Director/VP who is "Sponsoring" this project:

Anil.Gaur@sun.com

1.4.4. The name of your business unit:

Software Infrastructure

1.5. Email Aliases:

1.5.1. Responsible Manager:

Abhijit.Kumar@sun.com

1.5.2. Responsible Engineer:

jerome.dochez@sun.com

1.5.3. Marketing Manager:

john.clingan@sun.com

1.5.4. Interest List:

Jerome.Dochez@sun.com, kedar.Mhaswade@sun.com, abhijit.kumar@sun.com

2. Project Summary

This project is Sun's open-source application server, please see the FAQ.

Planning, specification and other documents are online at glassfish.dev.java.net.

2.1. Project Description

This is the release version of GlassFish V3, first seen at ARC as "GlassFish V3 Prelude", see http://sac.eng/arc/LSARC/2008/611. Previous cases (GlassFish V2): http://sac.sfbay/Archives/CaseLog/arc/WSARC/2006/586/

GlassFish V3 is an single-server release of the Glassfish V3 application server. Clustering support is planned for a future release. Customers that require clustering support should continue to use Glassfish V2 until Glassfish V3.clustering is released.

GlassFish V3 is the next version of Sun's Java EE application server. The new features/themes of this release are modularity, extensibility and embeddability. The GlassFish V3 release delivers a full Java EE 6 based web and ejb tier, scripting support, OSGi support, JDBC and persistence API on top of the new modular kernel of GlassFish. In addition, through update center the users will be able to obtain new Java EE 6 APIs and containers (for example, EJB 3.1 and JAX-RS 1.0).

Previous versions of the application server were a monolithic implementation of all the features making upgradability of one particular feature almost impossible to achieve. GlassFish V3 offers a modular environment with any desired degree of granularity, where each module represent a well-defined area of functionality. This change required a rewrite of server management and runtime code to support a module-based environment. Fortunately, most of these underpinnings have little or no direct impact on the deployment of Java EE applications, while at the same time offering the ability to run the "new and exciting" web-based technologies. Furthermore, the "pluggable" nature of Glassfish V3 means that anyone can add new functionality; this was difficult or impossible with Glassfish V2.

A high degree of compatibility with Glassfish V2 has been achieved for this release, but fundamental changes in the infrastructure mean that compatibility ranges from fair to very high to perfect, depending on the area.

2.2. Risks and Assumptions

Backward compatibility — the shift to a modular architecture required a rewrite of key management and runtime areas. Because some of these changes are structural in nature, some areas in the management and monitoring areas "make no sense" in the V3 environment. While GlassFish V3 has excellent support for backward compatibility in terms of deploying applications, management functionality is not entirely backward compatible.

3. Problem Summary

3.1. Problem Area

Provide a compelling Java EE application server targeting a wide range of deployment environments, from handheld devices to large server farms.

3.2. Justification

A high performance, scalable, customizable and embaddable Java EE application server is key to Sun's web strategy

Glassfish V3 will provide a compelling Java EE environment to suite a wide range of performance and footprint requirements.

4. Technical Description

4.1. Details

This release support Java EE 6. It extends and continues the Java EE support
seen in previous releases. See section 2.1.

4.2. Bug/RFE Number(s)

See Issue Tracker at glassfish.dev.java.net.

4.3. In Scope

Java EE 6 and a wide variety of web technologies.

4.4. Out of Scope

4.5. Interfaces

Interface taxonomy: www.opensolaris.org/os/community/arc/policies/interface-taxonomy/

4.5.1 Exported Interfaces

The notation "**" as applied to Java packages here means all classes and sub-packages. All Glassfish V3 jars live in $INSTALL_DIR/glassfish/modules/, which by default is the user’s home directory.

The included jars/modules/APIs are not intended for standalone use outside of the Glassfish V3 environment, and as such should be understood as “Private”. The interface taxonomy as specified below refers to the usage within the Glassfish V3 runtime environment.

Exported Interfaces

Interface

Stability
V3

Former
Stability

Comments

File Layout Uncommitted   Please see the packaging one-pager and file-layout one pager.
domain.xml Uncommitted Evolving Contents are no longer defined by a DTD and can be dynamic depending on installed modules.
domain.xml DTD n/a Evolving A DTD is no longer be used in GlassFish V3
'asadmin' CLI Committed Committed Heavily used. See command reference. Largely compatible with GlassFish V3 command set.
'asadmi' CLI output Not an Interface Not an Interface Output is for humans.
Admin GUI Not an Interface Not an Interface Web-based GUI.
       
JDK 1.6 Committed n/a Standard

Java EE 6

Committed

n/a

Standard. See java.sun.com/javaee/.

JMS, JAX-WS 2.2, JAXB 2.2, JACC 1.1, JCA 1.6, JTS/JTA 1.1, Servlet 3.0, JSP 2.2, JSTL 1.2, EL 1.1

JSR 45 Committed n/a Debugging Support for Other Languages
JSR 77 Committed Standard Java EE management
JSR 88 Committed Standard Java EE deployment

JSR-208

Committed

Standard

Java Business Integration (JBI)
JSR 250 Committed n/a Common Annotations for the JavaTM Platform
JSR 299 Committed n/a Web Beans
JSR 303 Committed n/a Bean validation.
JSR 311 Committed n/a

The JavaTM API for RESTful Web Services

JSR 317 Committed n/a Java Persistence API
       
Metro Uncommitted   See metro.dev.java.net.
Jersey Uncommitted   See jersey.dev.java.net.
JPA 2.0 (EclipseLink) Uncommitted   See www.eclipse.org/eclipselink/
JRuby/Rails Volatile   Evolves outside Glassfish V3. Web site.
Groovy/Grails Volatile   Evolves outside Glassfish V3.
jMaki Ajax framework Volatile   Evolves outside Glassfish V3.
       
Hundred Kilobyte Kernel (HK2) Uncommitted n/a For module developers onl, part of Glassfish project. See hk2.dev.java.net
glassfish-api Uncommitted n/a

All interfaces in glassfish-api are Uncommitted by default unless otherwise specified.

org.glassfish.internal.api.**
com.sun.appserv.**

glassfish-internal-api Volatile n/a

All interfaces in glassfish-internal-api are Volatile by default unless otherwise specified.

org.glassfish.internal.**
org.glassfish.flashlight.**

Glassfish Management api (gmbal~gf_common)

• AMX

• Probe provider statistics

• Statistics classes

Committed n/a

See the Specification for AMX compliant MBeans.

org.glassfish.external.amx.**
org.glassfish.external.probe.**
org.glassfish.external.statistics.**

jar name: management.api.jar

Gmbal Uncommitted n/a

Implementation technology used internally for MBeans

org.glassfish.gmbal.**

jar name: gmbal.jar

AMX convenience interfaces, client proxy code.
Uncommitted Evolving

Proxy interfaces vary with implementor of MBeans and are subject to change as the underlying configuration changes.

Specific packages and classes are annotated in javadoc explicitly with @Taxonomy to any override stability level.

org.glassfish.admin.amx.intf.**
org.glassfish.admin.amx.intf.**
org.glassfish.admin.amx.j2ee.**

jar files: amx-core.jar, amx-config.jar, amx-j2ee.jar

Embedded API Uncommitted n/a TBD
Security TBD   TBD
       

4.5.2 Imported interfaces

 

Imported Interfaces

Interface

Stability

Former Stability

Comments

JDK 1.6 Committed n/a  
Java EE 6 Committed n/a

Formerly Java EE 5.

jar file: javaee.jar
DTrace      

OSGI

Standard

n/a

See http://osgi.org and one pager.

Grizzly web/IO framework Committed n/a See java.net page.
Apache Derby Volatile n/a Used for samples.
Jersey      
MQ IPS package for glassfish Contracted Committed Private n/a Need contract for glassfish special package. Details.
ANTLR Volatile  

antlr-repackaged.jar.

 

4.6. Doc Impact

Greatly revised documentation will be shipped with the product to cover the expanded feature set. It will explain the differences of GlassFish V3 compared to Glassfish V2 as well as the compatibility issues.

4.7. Admin/Config Impact

A high level of compatibility with Glassfish V2 has been achieved in most nearly every area. Some administrative areas are incompatible due to fundamental design changes (modularity), the most notable example being AMX (JMX support).

The admin CLI 'asadmin' is largely compatible with V2.

The GUI has been overhauled and reworked for Glassfish V3.

4.8. HA Impact

Clustering is not supported in GlassFish V3.

4.9. I18N/L10N Impact

The usual internationalization guidelines are being followed.

4.10. Packaging & Delivery

Please see the packaging one-pager and file-layout one pager. They can also be found in the case directory.

4.11. Security Impact

Standard Java EE security is in place, consistent with Glassfish V2.

Administrative tools 'asadmin' CLI and GUI use approaches the same as GlassFish V2.

JMX support might not support TLS/SSL in this release, depending on schedule.

4.12. Compatibility Impact

The product maintains compatibility with previous evolving and standard interfaces.

A high degree of compatibility is maintained, but the Change Control Committee has recorded and documented the incompatibilities that exist (primarily in the administrative tools due to the change in product architecture).

4.13. Dependencies

None.

5. Reference Documents

  1. GlassFish - https://glassfish.dev.java.net/

  2. Java EE - http://java.sun.com/javaee/

  3. WSIT - http://wsit.dev.java.net/

  4. JBI - http://openesb.dev.java.net/

  5. SPECJAppServer2004 - http://www.spec.org/jAppServer2004/

  6. Glassfish V2 (WSARC/2006/586)
    http://sac.sfbay/Archives/CaseLog/arc/WSARC/2006/586

  7. Hundred Kilobyte Kernel (HK2) [part of GlassFish codebase]
    https://hk2.dev.java.net/

6. Schedule

Scheduled for customer release in December 2009.