Skip to main content


Posted by editor on November 25, 2008 at 7:21 AM PST

Is Java too big for its own good?

Much of Java's appeal can surely be attributed to the massive number of libraries available for it. Not only is SE itself rich with functionality, but you can also add on to it in the form of EE, or the many third-party libraries, frameworks, and what have you.

The question is, has SE's bundle of functionality gotten too big? If I count the "All Classes" frame of the Java SE 6 javadocs correctly, there are nearly 3,800 public classes. Aside from the mental burden of grasping so much functionality, there are also technical concerns to this to this bulk.

OpenJDK Principal Engeineer Mark Reinhold takes a minute to consider the implications of The massive, monolithic JDK, in a recent blog, he considers the costs of having this huge bundle of functionality at your fingertips.

The JDK is big—and it’s also deeply
interconnected. It has been built, on the whole, as a monolithic software
system. In this mode of development it’s completely natural to take
advantage of other parts of the platform when writing new code or even just
improving old code, relying upon the flexible linking mechanism of the Java
virtual machine to make it all work at runtime.

Over the years, however, this style of development can lead to unexpected
connections between APIs—and between their implementations—leading in
turn to increased startup time and memory footprint. A trivial command-line
“Hello, world!” program, e.g., now loads and initializes over 300
separate classes, taking around 100ms on a recent desktop machine despite yet
more heroic engineering efforts such as class-data
. The situation is even worse, of course, for larger

So now what? Recent developments such as JDK 6u10's Java Kernel can help a little, but the underlying problem really needs to be addressed directly:

The most promising way to improve the key
metrics of download time, startup time, and memory footprint is to attack the
root problem head-on: Divide the JDK into a set of well-specified and
separate, yet interdependent, modules.

The process of restructuring the JDK into modules would force all of the
unexpected interconnections out into the open where they can be analyzed and,
in many cases, either hidden or eliminated. This would, in turn, reduce the
total number of classes loaded and thereby improve both startup time and
memory footprint.

So what do you think? Will modularization save Java? Mark thinks it could help not just the runtime, but even libraries and applications. "Doing so might also enable us to address some other longstanding problems related to the packaging and delivery of Java code."

Also in Java Today,
The Mobile, Media, and Embedded Developer Days conference has posted the initial agenda for January's two-day event. Co-organizer Terrence Barr blogs about the selection process: "clearly, the conference has already gained a reputation in the industry ... the quality and number of submissions this year was impressive. We had much more content than we could possibly squeeze into two days and so our review committee worked hard (thanks, guys!) to pick a set of talks, presentations, and speakers that we believe provide a compelling and stimulating cross-section of what's happening in the industry today."

A new SDN article by Wajih Ahmed and Marina Sum demonstrates Federated Single Sign-On for Google Apps in OpenSSO. "With OpenSSO, Sun's open-source Web access management project, you can implement federation for applications, such as Google Apps, for single sign-on (SSO) in just a few steps. Google Apps are widely adopted by enterprises for email, calendar, and collaboration through Google Docs, Google Video, and so forth. This article steps you through the federation process, whereby OpenSSO acts as the identity provider (IdP) and Google Apps as the service provider (SP). Security Assertion Markup Language (SAML) version 2 serves as the SSO protocol for creating a Circle of Trust on the IdP."

Om today's Weblogs, Santiago Pericas-Geertsen repeats the announcement that the Call for Papers Is Open for JavaOne 2009. "In case you missed it, the call is open for JavaOne 2009 submissions and the deadline is December 19th, 2008. Contrary to the last few years, the conference will be in early June in 2009, so there's plenty of time for your travel plans but not a lot of time to prepare your abstracts!"

Jim Driscoll brings more client-side functionality to JSF in Another JSF 2.0 Ajax Component: Editable Text. "I was sitting in at a talk on Ajax components the other day, and they mentioned the Flickr style editable text. I thought - I wonder how hard that would be as a component in JSF 2.0? The answer: Not too bad, about 100 lines of code. Here it is."

And Rama Pulavarthi takes a look at
New Web Services Features in Netbean 6.5
Netbeans 6.5 is recently released. Along with tons of new features, it has some enhancements for Web Services development. The foremost is that with Netbeans 6.5, you can easily develop Web Services applications and deploy on to Glassfish V3. There are are other features like configuring WS-Addressing, and exposing a SOAP based Web service as REST service through GUI caught my attention.

In today's Forums, anzy is looking to configure HA on two machines in Active-Standby mode. "From glassifsh's HA docs what I could make out is that the servers participating in HA have to be running in lb mode thus mandatorily supporting HA in actiove -active mode. What if my application can run in active-active mode because of few components facing cynch issues but I still wnat them to be part of HA with other server taking up the responsibility only if one goes down. To be precise if I have 5 applications(.war) to deploy,3 are to be needed in active-active and 2 in active-stand by mode. How do I ahieve this, does glassfish support it?"

Paul Wilson offers the M3DDs a
Developer Days Feedback Tool. "Hi Developer Days Planning Team, my name is Paul Wilson and I am a student at Stanford University and I wanted to share with the Java Mobile. Media and Embedded Developer Days a feedback tool that I am working on with some fellow students called HaveASec. We have been to many tech conferences in the valley, and we have been surprised to see that in 2008 paper surveys are still in use. HaveASec allows conference organizers to collect similar feedback directly from the cell phone and laptops of each attendee."

demonduck remains outraged at the handling of the applet lifecycle events, as recounted in the followup Re: Lifecycle methods in new Plugin. "But you broke compatibility when you changed the original applet lifecycle. The original lifecycle called init(); start(); stop() and destroy() at specific times. You changed that lifecycle to call init()/start() together and stop()/destroy() together. Now you are telling us that you are concerned about compatibility problems -- non-existent problems most likely -- with applets written using the new lifecycle???? Which applets are you concerned about? Can you provide us with a list of "complex applets" that you are "basically required" to support? Why weren't you concerned about breaking compatibility with the original applet lifecycle. Again you dismiss, denigrate and rationalize away all our concerns just so you don't have to take responsibility for your poor engineering practices."

dgovoni is looking to customize Metro in
WS-TRUST/STS special message handling.
"I am using the default STS in metro, but need to affect and initiate a RSTR response from a message handler on the STS that performs some authorization. Or, if the STS has a plugin for some authorization, I will use that. In my design, the message handler looks at the inbound STS request and would like to return a response with a reason for denying the request. My question is: How can this capability be added to the Base STS impl in Metro? Is there a plugin I can do for this? How can I short circuit the STS conversation and return a special response from a handler? Is that the correct approach?"

Current and upcoming Java

Registered users can submit event listings for the href=""> Events Page using our href="">events submission form.
All submissions go through an editorial review before being posted to the

Archives and Subscriptions: This blog is delivered weekdays as
the Java
Today RSS feed
. Also, once this page is no longer featured as the
front page of it will be
archived along with other past issues in the href=""> Archive.

Is Java too big for its own good?