Skip to main content


Posted by editor on January 20, 2009 at 7:52 AM PST

Has time left the portlet API behind?

Our Feature Articles return today after a hiatus with a look at the Porlet API that might not be what you expect. Rather than offer a tutorial introduction to Portlets (ONJava covered that a few years back), Eric Spiegelberg looks at the history and architecture of portlets and asks a tough question: is this API even viable anymore?

With nearly 10 years of professional experience with both web and portal based projects and having done multiple portal projects as recently as 2007 and 2008, I've spent the last few months evaluating JSR-286 and the portal architecture and unfortunately it is my opinion that for many reasons JSR-286, and the portal architecture in general, is a layer of complexity over servlets that doesn't provide enough benefits or technical "bang for your buck" to warrant an increase in adoption or have a large scale impact on the Java landscape.

What happened? Well, for one thing, Spring happened, and that prompted changes across the enterprise Java landscape, most obviously in EJB 3. While EJB changed with the times, Eric argues that Portlets haven't:

In many ways, the the portal architecture reminds me of EJB in that both can be viewed as a monolithic all-or-nothing approach that dictates an overly large portion of each application layer's design. While EJB was once king in the last half decade, Java itself has undergone a tremendous amount of change. There has been a fundamental design shift (which, rightly or wrongly, is largely credited to the Spring framework) toward layering, separation of concerns, simplification, and most importantly an a la carte "use only as much as you need or want" attitude toward technology. Gone are the days where just because you wanted to wrap your business logic in a stateless session bean you need to use a full Java EE application server, embrace JNDI, and create local, home, and remote interfaces as part of your domain model. Similarly, the portal architecture -- where the integration, service, and presentation tiers have been designed and built for you -- has not caught on as has the usage of frameworks and tools focused and specialized to each specific tier. If you are willing to acknowledge that it was this monolithic all-or-nothing design philosophy that lead to EJB being essentially rejected by the Java community, it is also reasonable to think that the same philosophy has and always will significantly hinder the portal architecture.

Is there hope for portlets? Read the entirety of Eric's history and analysis is in the article JSR-286: The Edge of Irrelevance, and decide for yourself.

One area with fascinating long-term potential is the OpenJDK's Zero and Shark projects. We mentioned these last Summer in the context of a way to bring Java to the Mac, whether Apple likes it or not. The bigger picture is that they could bring Java to any platform: the whole point of Zero is to provide a zero-assembler Java interpreter that could be built on any system with a C compiler. Of course, that has obvious performance limitations, so the Shark project seeks to provide an LLVM-based JIT. In Java Today, Gary Benson has posted an interesting metric that gives a sense of the potential of these projects. In Porting Shark, he writes, "Shark when it's done will be great, a massive improvement over Zero, but LLVM only supports a couple of the platforms people use Zero on. I've wondered a few times how the task of porting LLVM to a new architecture compares with writing a full HotSpot port from scratch. This morning I realised I could get a rough idea by simple counting the lines of x86-specific code, the one port they share." Read on to find out what's the easier port: LLVM or HotSpot.

Eduardo Pelegri-Llopart announces Recordings from Jersey / JAX-RS webinars are now available. "I've been recording our weekly TheAquarium Online Webinars for the last few months using the uStream.TV facilities and I recently spent some time processing the material into different formats and organizing it in the Wiki pages. [...] The recordings for the Jan 15th, 2009 Webinar on JAX-RS, Jersey and REST are now available. This Webinar set included presentations by Marc Hadley and Paul Sandoz, a set of 5 short screencasts, and very good audience participation. The recordings are available in several formats, including FLV, Quicktime, iPod(320x240) and Audio only."

OpenDS is a Sun-sponsored, open-source directory-server project for developing a free and comprehensive next-generation directory service, written entirely in the Java programming language according to the Lightweight Directory Access Protocol (LDAP) and Directory Services Markup Language (DSML) standards. In the article Perspectives on Quality Assurance for OpenDS, QA lead Gary Williams elaborates on the project's testing aspect: opportunities, challenges, guidelines, practices, and measurements.

In today's Weblogs, John Ferguson Smart offers career guidance for the bust in
Capital investement for developers - keep yourself marketable! "Software developers need to invest in their own productivity as well, in their own way. A developer skilled in an out-of-date technology, but ignorant of modern evolutions, may find his or her marketability limited in the future. On the other hand, a developer with up-to-date, well-honed skills will have a much brighter future, and be more likely to cope with hard times."

Jaroslav Tulach reads the reviews in
Irresistible Expectations of Fearful Desire. "For a while I was desperately expecting an important moment. Day by day I've been watching whether it has already happened or not yet. I used to be afraid of the moment to happen. Yet I could not resist to expect it and desirably hope for it to happen soon. Today I've just realized, that the moment happened."

Finally, Curtis Cooley has posted
Yet Another Refactoring Example. "Just in case there are not enough refactoring examples, I've written yet another. This is real code and the walk through is "live." That is, I wrote this while really refactoring the ugly code I had written. Enjoy."

In today's Forums, giorgos_gs thinks big on the eve of the M3DDs by saying that that the
Mobile Developer Alliance should be just the beginning. "It would be great if all of us (The developers, companies and individuals), the Alliance, were united and made a "Developer Store" where we could sell our products straight to the customers without intermediates. I don't say to stop selling from all our cooperating companies, I just propose at the same time to unite and make something of our own."

eingfoan asks about the possible hazards of
changing default charset of existing domain UTF to latin1? might be a prob?
"Is the changing of the default charset e.g. by setting LANG environment variable on linux and rebooting the domain of any danger to ruin the domain? We have sadly installed our new gf instances in UTF-8 which we have not intended to do so because all our old instances are ISO-8859-1. can we change this on the fly?"

mattzyzy wants to know how to use the 64-bit support for Glassfish v3 Prelude. "How to configure 64-bit support Glassfish v3 Prelude ? which 64-bit JDK is recommended for Glassfish v3 Prelude, 5 or 6 ? I notice the need to set it in developer mode or cluster mode in order to fully support 64-bit , and how can this be done , what is the default then?"

Seems like 6u10's deployment features don't suit minka99, who writes in
private jre - how to distribute / install?. "I have an app with a free trial windows distribution that has a suite of click and run examples. It uses java 6.0 update 11. Now I'd like to bundle the jre with the free trial. I want these examples to be easy easy easy. No version issues with java. I don't want to change the users default java installation.I also would like the download to be as small as possible, part of the easy, easy approach. I thought the java kernel installation would provide this. The small size was very attractive. But the kernel is a public not a private jre. If I set an INSTALLDIR for the kernel jre installation and there is a jre elsewhere of the same version it will ignore my kernal install. Then my click and run commands don't work, because the jre is not where they expect it to be. How do I get a private jre?"

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.

Has time left the portlet API behind?