Welcome!

Java Authors: Pat Romanski, Liz McMillan, Elizabeth White, Dana Gardner, Jim Kaskade

Related Topics: Java

Java: Article

Under the Hood of a J2EE Application Server

Under the Hood of a J2EE Application Server

I recently had the opportunity to talk with many Java users about the current release and their general experiences with the platform. One of those developers told me that he didn't use J2SE but his J2EE VM sometimes caused problems.

Now most of you know that there is no such thing as a J2EE JVM. From my own experience with J2EE application servers, many do a good job hiding this from you. It can be difficult to work out which version of J2SE you are using, let alone know that J2SE is behind the scenes.

In this issue we are focusing on J2EE. If you are a core J2SE developer, there are some great tips and techniques that apply equally to J2SE and J2EE.

As a quick refresh, the J2SE platform contains the Java runtime and many of the core libraries that are used in your J2EE application. The Java runtime also contains client-side classes such as Swing. If those classes are not referenced by your application (which is normally the case), then they're not loaded at runtime. To compile Java programs use the javac compiler, which can be redistributed with the Java runtime and is also available in the Java developer kit.

One of the key technologies is the core XML library. In J2SE 5.0, the JAXP 1.3 library is bundled and includes support for XML 1.1, DOM Level 3, and SAX 2.0.2.

One new library in J2SE 5.0 that should be familiar to you is the addition of the Java Management Extension, JMX. JMX has been used in J2EE to monitor and manage J2EE applications using MBeans. The JMX framework has been extended in J2SE 5.0 with a remote interface and also has some system MBeans and a mini MBeanServer that can be used to monitor low memory conditions. This same monitoring information is published via the SNMP protocol as well.

The other side of monitoring is application profiling. The core technology here has been JVMPI, the Java profiling interface. JVMPI is still supported in J2SE 5.0 but is superseded by the new JVM TI tools interface, which provides finer-grained and less intrusive profiling. Your existing profiling tools will require updates to support the JVM TI interface, but the benefits of improved profiling will repay the investment in newer tools.

The support for network-aware distributed objects is also provided in J2SE using technologies such as RMI, JNDI, and CORBA. There have been minor increments in J2SE 5.0 for each of these technologies. One change that makes J2EE developers' coding a little easier is that RMI no longer needs a separate stub creation step.

The Java language changes, of course, apply to J2SE and J2EE and the same javac compiler is used to build both types of applications. Later releases of J2EE will be able to take advantage of features like metadata to automate many tasks, including generating deployment descriptors.

For those developers who use JavaServer Pages, the newer javac compiler will work as before. There was a proposal to increase the maximum method length due to some side effects from some of the early JSP implementations. The 64K restriction still exists but modern JSP compilers no longer run into that barrier.

Another area that is easy to overlook is database access. The JDBC framework is again delivered in J2SE. In J2SE 5.0 the addition of implementations for disconnected rowsets allows you to pass rows from your database and manipulate them without needing to maintain a live database connection. This technology even allows you to convert the database results to XML, provide updates using XML, and then resynchronize those changes at a later time.

It shouldn't be a surprise that the Java runtime is also responsible for the compilation of bytecodes and the threading framework. Many existing J2EE application servers provide support for a thread pool. In J2SE 5.0 the concurrency library also provides a choice of user space thread pools, which are portable across application servers.

J2EE application servers will also be able to provide more control over worker thread tasks by taking advantage of the new future tasks.

What does this mean for J2EE application developers? Well, regardless of the frameworks you use, J2SE 5.0 is going to bring two waves of improvements.

The first wave is updates to the libraries, such as XML, that are used by J2EE in the core platform. The second wave is to then exploit the advantages of the new features by the J2EE 5.0 platform and its components. I'm sure you'll agree that there is plenty to look forward to whether you consider yourself a J2EE developer, J2SE developer, or both.

More Stories By Calvin Austin

A section editor of JDJ since June 2004, Calvin Austin is an engineer at SpikeSource.com. He previously led the J2SE 5.0 release at Sun Microsystems and also led Sun's Java on Linux port.

Comments (1) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
noname 12/30/04 01:16:53 PM EST

With a title like Whats under the hood of a J2EE AppServer I was expecting some system-level details about J2EE AppServers...not whats new in JDK5