Summary

To further meet enterprise users needs, Ubuntu server should provide a Java application server stack that could scale up to a full J2EE ("Java EE") stack. There are several solutions, but they all require lots of packaging work to be done before starting packaging the Java EE server itself.

Release Note

Ubuntu server now features a complete, high-performance and modular Java EE server stack that you can use to deploy all your Java applications and web services.

Rationale

Java development (web applications, beans, web services...) is very common in the enterprise world.

Ubuntu server currently doesn't provide an integrated Java EE server stack and it is up to the user to install manually a third-party application server, especially if they want to use more than just a servlet container.

To make it easier for those users and increase Ubuntu server adoption in the enterprise world, we could integrate and support a Java EE server stack in main.

However, through tool-sets such as Spring, deployment of complex enterprise applications on lightweight containers such as Tomcat has gained a-lot of momentum so discussion needs to take place as to whether supporting a full JEE stack adds sufficient value to Ubuntu given the packaging complexity.

Use Cases

Josh is a Java developer and wants to deploy his latest web applications on a test server to show his boss how well he did. He quickly sets up an Ubuntu machine and installs the web application server, without needing the bloat of a full Java EE stack.

A few month later, Josh migrated his web applications as web services. He can upgrade his test installation so that it now supports the required Java EE features.

Martin works at Made-up Co., a company developing Java components that are used as middleware in Java application servers. He wants to provide an easy way for customers to demonstrate and evaluate Made-up software. He decides to ship ready-to-run Ubuntu JEOS VMs including the Ubuntu Java EE server stack, integrated with their middleware software and demos.

Julia looks for the ideal deployment environment for her company web applications in production. She needs a scalable, high-performance, supported and Java-EE-certified stack. After careful testing, she picks up Ubuntu Server as the best tool for the job.

Design

Requirements

Potential choices

The complete list of candidates and feature matrix can be found in the "discussion" section below.

JOnAS, Geronimo, JBoss 5 and Glassfish v3 (also JEE6 compliant) all provide Java EE 5 compliant solutions.

JOnAS, Geronimo and Glassfish v3 are based on a next-generation OSGi architecture. JBoss is a well-established FOSS solution which was always designed with modularity in mind.

All four JEE application servers rely on maven build processes. These could be supported by using the maven-debian-helper toolset; however this package and it dependents are current not in main (only in universe).

Including a Java EE application server in Ubuntu is not a small task, and that a lot of prerequisite tools and dependencies must be packaged first.

Proposed implementation

Go, no-go

Platform needs

maven-debian-helper would need to move to main which is not an insignificant task in itself.

Outstanding Issues

BoF agenda and discussion

Tomcat 6

Type :

Servlet container

License :

Apache License v 2.0

Builds from source :

Yes

Packaged :

Yes - in main

Maintainability :

Good

Compatibility :

Servlet/JSP : 2.5/2.1

Current version :

6.0.29 (6.0.28 currently in main)

Link :

http://tomcat.apache.org/

Geronimo

Type :

Modular (Servlet container or J2EE application server, uses Tomcat or Jetty)

License :

Apache License v 2.0

Builds from source :

Yes (TBC), but pulls lots of deps that might not

Packaged :

No (some spec packaging for generic use)

Maintainability :

Good, reactive upstream

Compatibility :

J2EE v5

Current version :

2.1.6

Link :

http://geronimo.apache.org/

Compile XREF

geronimo-2.1.6-dependencies-compile-xref.txt

Runtime XREF

geronimo-2.1.6-dependencies-runtime-xref.txt

Test XREF

geronimo-2.1.6-dependencies-test-xref.txt

Provides XREF

geronimo-2.1.6-dependencies-provides-xref.txt

Unique XREF

geronimo-2.1.6-dependencies-uniq-xref.txt

Running Geronimo :

Building Geronimo :

Packaging Geronimo :

GlassFish v2

Type :

J2EE application server

License :

CDDLv1 + GPLv2 with exceptions (see here)

Builds from source :

No

Packaged :

No (some aspects in universe)

Maintainability :

Need review post purchase by Oracle

Compatibility :

J2EE v5

Current version :

V2 UR2

Link :

https://glassfish.dev.java.net/

Current packaging:

Running glassfishv2:

GlassFish v3

Type :

Modular (Servlet container or J2EE application server)

License :

CDDLv1 + GPLv2 with exceptions (see here)

Builds from source :

No

Packaged :

No (uses Maven)

Maintainability :

Need review post purchase by Oracle

Compatibility :

J2EE v6 (support J2EE v5 apps)

Current version :

v3.0.1

Link :

https://glassfish.dev.java.net/

Compile XREF

glassfish-3.0.1-dependencies-compile-xref.txt

Runtime XREF

glassfish-3.0.1-dependencies-runtime-xref.txt

Unique XREF

glassfish-3.0.1-dependencies-uniq-xref.txt

JOnAS 5

Type :

J2EE application server

License :

LGPL 2.1

Builds from source :

yes (Maven2 used to generate the bundles and the distribution)

Packaged :

No

Maintainability :

Supported by OW2 (consortium including FT & Bull)

Compatibility :

JavaEE 5

Current version :

5.1.3

Link :

http://wiki.jonas.objectweb.org/xwiki/bin/view/Main/

Runtime XREF :

JONAS_5_1_4-dependencies-runtime-xref.txt

Compile XREF:

JONAS_5_1_4-dependencies-compile-xref.txt

Unique Dependency XREF

JONAS_5_1_4-dependencies-uniq-xref.txt

JBOSS AS 5

Type :

J2EE application server

License :

LGPL

Builds from source :

see below

Packaged :

Partially (older version and incomplete)

Maintainability :

Questionable

Compatibility :

J2EE 5

Current version :

5.1

Link :

http://www.jboss.org/jbossas/

Runtime XREF :

jboss-5.1.0.GA-src-dependencies-runtime-xref.txt

Compile XREF:

jboss-5.1.0.GA-src-dependencies-compile-xref.txt

Unique Dependency XREF

jboss-5.1.0.GA-src-dependencies-uniq-xref.txt

Note that XREF contains a dependency on a large number of other JBoss projects so is 'first level' only from a compile perspective.

Building JBOSS AS :

Jetty 6.1

Type :

Servlet container

License :

Apache 2.0

Builds from source :

Yes

Packaged :

Yes (universe)

Maintainability :

Good upstream

Compatibility :

Servlet/JSP 2.5/2.1

Current version :

6.1.25

Link :

http://www.mortbay.org/jetty-6/


CategorySpec

ServerTeam/Specs/JavaApplicationServers (last edited 2010-10-20 14:51:04 by host81-153-227-1)