" /> Dreams of a Rarebit Fiend: July 2004 Archives

« June 2004 | Main | August 2004 »

July 30, 2004

Political Discourse

ComeToOurSide.jpg
(click to enlarge)
Apparently this is what passes for political discourse now. I passed this thing at a major intersection on my way home from work yesterday.

July 26, 2004

Make A Hologram Of An Object That Doesn't Exist

MedCosm CGHMaker (computer generated hologram construction kit) is software that will calculate what the interference pattern would look like for a given object and then allow you to print that interference pattern onto a cheap overhead transparency to make your own hologram. Said hologram can then be projected with a cheap laser pointer for viewing.

Knowing how difficult it can be to produce a hologram (huge sand tables to prevent vibration and other setup are not unusual), this looks like an easy way to play with something fun.

July 24, 2004

Tonic Look And Feel

Here's a kind of nice replacement look and feel you can use in a Java application instead of Metal, it's called Tonic and there are lots of screenshots on the site to let you know what it looks like in action as well as the ubiquitous demo you can launch via Java Web Start to see it in action.

My (Wiki) Toolbox

Michael Gloegl has taken my toolbox entry from a few weeks ago and turned it into a big wiki page. I'll be adding a permanent link to it from my resources page and updating the wiki with my own additions and changes rather than continuing to keep an outline that is only of use to me.

July 16, 2004

Show Me Your Skeleton And I'll Show You Mine

Normally when I'm about to start a new Java project I go and get my skeleton project and make a copy of that to the correct directory name to get started. Maybe you call your skeleton something else, a template, a prototype, whatever but I'm curious if you have one. Mine consists of an already created directory structure, a build.xml file that serves as a good starting point, a handful of libraries that appear in 100% of all my apps (logging, unit testing, etc.), the shell of a ReadMe.html, etc..

Download newProject.zip

Personally I don't think this is much of a solution. What I wish I had was something that was like what the old Visual Studio did. It had a wizard that you could step through and it would ask you a set of questions before producing what was largely the same application skeleton every single time :) Why don't we have something better than that for eclipse, NetBeans, etc. It wouldn't have to be proprietary to any one particular vendor because the core code would be agnostic to any IDE. It would be a set of instructions to ask some questions and generate files.

You could have templates for a web app, a Swing app, an SWT app, and a console app. Each one would be responsible for creating directories, writing out a build script, asking you the name of the application, the packages where the files would be put, features for that particular kind of application, etc. Where is this feature? It's not complicated, most of it could be done by scanning through some XML that told you which directories to create, some Velocity templates that created all of the files you needed, etc. and yet the two IDEs I've worked with the most (eclipse and NetBeans) seem more focused on helping you create individual files but not starting points for entire applications. NetBeans did have the ability to create a simple Swing app but all it created was a file or two of Java, no build structure, place to put documentation, etc.

I do know about AppFuse and Equinox and I think they are really cool. However, correct me if I'm wrong, but I don't believe that even those offer a wizard to tailor anything in their skeletons. Where there are choices mentioned in the documentation (e.g. iBATIS and Spring for AppFuse) they are just more documentation on what you can change, not a checkbox that you check and the change is made for you. The closest they seem to come is changing some names via ant when you create a new instance.

I can anticipate one of the biggest objections likely to be raised to this. If we do this, then how many developers are going to become dependent upon the crutch of wizards creating the shell of an application for them and they won't understand the very IOC container or persistence framework, etc. they are using because they didn't have to set it up. If that is your objection then I agree, but I'm not sure it makes sense to deprive the more skilled developers of the tools because others might abuse them. I'm betting with a little collaboration we could come up with some killer starting points that would be tailor made to cut time off the front of a new application.

July 13, 2004

Coming Up in Firefox 1.0

Firefox 1.0 is not available yet, the latest is still 0.9.2. Neil's World - More on new Firefox features gives an overview on some of what you can expect to see coming in the next version.

I was initially lukewarm on Firefox but I have to say that as time has gone on I've become a big fan. It's small, it's to the point. It makes an ideal replacement for Microsoft's Internet Explorer for those who do not need the Usenet newsreader, email, or HTML editing capabilities of the full-blown Mozilla app.

July 11, 2004

Dancing Bears And Macs

There's an old saying that goes, "We do not applaud because the dancing bear dances well, we applaud because the dancing bear dances at all." Every once in a while though, you encounter a dancing bear who also dances well. PearPC - PowerPC Architecture Emulator is just such a bear. I had read about it on Slashdot a few weeks ago as no doubt many of you had, but I was keen to try it out for myself to see if I could get it to work at all and if I could then how well would it perform on a machine that I built more than three years ago.

The answers were that it was actually quite easy to get working, the most difficult part was digging up a copy of Mac OS X to make use on it (as that is really the only OS I would have any interest in running though the PearPC software supports others) and though I had expected glacial performance, it was actually quite acceptable on an AMD 1600+. Below I've included a screenshot of the OS X installation procedure informing me of its system requirements. It says that I must have a PowerPC G3, G4, or G5 but I beg to differ :)

BTW, one other site not to be missed is PearPC.net. Their step by step guide to getting it running had me going in no time.

July 09, 2004

Hmm, Maybe We Were Both Wrong...

OK, I interviewed three people today for positions at my company. As one of the questions in the interview I thought I'd give them my list of the names of ten "obscure" Java projects and see which ones they could describe. My hypothesis going in was that: a) Everybody would get some of the easy ones like Velocity and Lucene (after all, they are Apache projects) and b) I would prove my critics wrong because nobody would get all of them right or even eight out of ten.

None of the people in question listed less than several years of Java work and most claimed good knowledge of various J2EE technologies like JDBC, JSP, Servlets, and EJBs. Based on the interviews, they weren't very strong candidates but two of them were so-so.

At the end of the third interview not one of them had come up with even a one sentence description of any of the ten items that came close to the project. I got one who referred to Lucene as that "text formatting thing", I think he may have confused it with Velocity. Another referred to Apache XML-RPC as something to do with Apache's web services stuff, "like SOAP." Grand total I had gotten maybe six guesses and/or mumbles about the items and that is as close as it came folks.

I'm curious to see if anyone next week will be able to identify any of them and if anybody else has any interviewing to do, what are your results?

July 08, 2004

My Java Toolbox Circa 7/2004

OK, this needs work, I took the outline file I keep in JOE (the Java Outline Editor, yay!) and put it's OPML through a hastily generated XSLT to produce the following mess. No doubt I can now receive a volume of criticism for poor formatting.

Note: I've moved the list to the extended entry so it doesn't all show up on the main page of my weblog. I've also fixed the first few bugs I found in the list (no doubt the first of many. I'll keep working on the formatting and fixing bugs until it is fairly readable.

Agents

Cougaar

Cougaar has a Java-based architecture for the construction of large-scale distributed agent-based applications. It is the product of a multi-year DARPA research project into large scale agent systems and includes not only the core architecture but also a variety of demonstration, visualization and management components to simplify the development of complex, distributed applications.

Aglets

IBM Aglet Kit

Hawaii Aglet Server

Artificial Intelligence/Expert Systems

JGAP: The Java Genetic Algorithms Package

JESS

JOONE - Java Object Oriented Neural Engine

JSR-94

Weka

Bayes & Naive-Bayes Classifiers

Classifier4J

Naiban

Authentication and Authorization

Acegi Security System for Spring

OSUser2

Tapestry

JAAS

JAAS in Tomcat

Clients

Virtual File System

Email

Java POP3 Email Proxy

MAILMILL

HTTP

HttpClient

URLFetch Java

HTTP Proxies

Muffin

Surfboard Proxy Framework

PAW

Internet Protocols

Jakarta Commons/Net

RSS

News retrieval from hundreds of websites via their RSS syndication files.

fetchrss

fetchrss polls weblogs (rss feeds) and e-mails the updates, one message per updated entry. The effect is comparable to the weblog author e-mailing you personally. fetchrss can run in the background on your desktop or server.

HotSheet

Informa

RSS4j

RSSLibJ

RSSLibJ is a Java class library designed primarily to generate RSS data in various formats, based on a simple object model.

Connected Graphs

GEF

JGraph

JGraphT

Arakne Network Editor

Documentation

Bouvard & Pecuchet

Xref-java2html

QDox

JEX

Encryption

The Bouncy Castle Crypto API

Cryptix

Frameworks

Components and Services

Carbon

HiveMind

Jicarilla

A compact, powerful, extensible and performant component-oriented software framework written in java, and a collection of components developed for this framework. Jicarilla utilizes and supports inversion of control, seperation of concerns, seperation of interface from implementation, contract-based programming, aspect-oriented programming and event-based programming. To get the buzzwords out of the way :D

In readable english, Jicarilla provides a platform for developing a wide range of applications and software components. Think of Jicarilla as the glue between your classes, beans, components and/or services. Jicarilla can be used for building and glueing together a wide variety of applications. Whether you build web services, server applications, servlets, enterprise javabeans, desktop applications, or applets, Jicarilla will make it easier.

Keel

Merlin

The Merlin project deals with the broad area of service and component management. The Merlin system is a container that provides comprehensive support for the management of complex component-based systems. Merlin uses a component meta-model to facilitate the automated assembly and deployment of components.

NanoContainer (see also PicoContainer)

PicoContainer

Spring

Mule

Mule is a light-weight messaging framework. It can be thought of as a highly distributable object broker that can seamlessly handle interactions with other applications using disparate technologies such as Jms, Http, Email, and Xml-Rpc.The Mule framework provides a highly scalable environment in which you can deploy your business components. Mule manages all the interactions between components transparently whether they exist in the same VM or over the internet and regardless of the underlying transport used.

Mule was designed around the Enterprise Service Bus enterprise integration pattern, which stipulates that different components or applications communicate through a common messaging bus, usually implemented using Jms or some other messaging server. Mule goes a lot further by abstracting Jms and any other transport technology away from the business objects used to receive messages from the bus.

Web Application

Cocoon

Struts

Tapestry

WebMacro

Socket Communications

SocketTalk

Graphics

Batik

OpenMap

Piccolo

TinyPTC

ZVTM: Zoomable Visual Transformation Machine

Barcode Generation

Barbecue

JBarcodeBean

Charting

Cewolf

JFreeChart

Chart 2D

JOpenChart

EXIF

Jhead

exifExtractor

Images

Links

PDF

iText

PDFBox

Icons

Links

http://sourceforge.net/projects/icon-collection/

http://developer.java.sun.com/developer/techDocs/hi/repository/

JDBC

Java based

Axion

McKoi

HSQLDB

Redbase

IDEs

DbVisualizer

Squirrel

Reporting

Generation of reports from databases or other data sources.

JFreeReport

DataVision

Mondrian

Intercepting and Modifying Commands

P6Spy

JSP

the display tag library

LDAP

http://salt.sourceforge.net/

Logs

Jestr

Jestr--pronounced like "jester"--is a Java Reflection-based library that provides an extensible framework for defining the way objects are "stringified"--that is, converted into String's for display and logging purposes. It allows the application to define how objects are stringified just by editing a properties file. The style of stringification can be adjusted at runtime, either in a blanket fashion or just for individual classes, class hierarchies, and package hierarchies. Jestr is configurable using a properties file called jestr.properties, which models log4j.properties and should look reasonably familiar to those accustomed to Log4J.

Logging

Just4log

Log4j

Log View/Filtering

Chainsaw

Lumbermill

Misc

Java Object Cache

JOCache is a Java library that implements strict object caching.

It's strict in that each cache enforces two limits in a very strict and predictable way.

Very Large Hashtable

JOTM

Java FEC (Forward Error Correction) Library

SiteMesh

SiteMesh is a web-page layout and decoration framework and web- application integration framework to aid in creating large sites consisting of many pages for which a consistent look/feel, navigation and layout scheme is required.

Xephyrus Flume Pipeline

Flume is a component pipeline engine. It allows you to chain together multiple workers into a pipeline mechanism. The intention of Flume is that each of the workers would provide access to a different type of technology. For example, a pipeline could consist of a Jython script worker followed by a BeanShell script worker followed by an XSLT worker.

The pipeline workers can contain any custom code, however the intention behind Flume is that the workers would implement different scripting languages. This provides a means of separating distinct functionality of the work-flow. For example, if Al understands the business flow and Betty is really good at making it look good, Al could write his piece in Jelly and Betty could do her work in XSL. The pipeline could then execute Al's script, then do Betty's transformation, spewing out some nice document.

JReleaseInfo

The JReleaseInfo AntTask generates a java source file with getter methods for the build date of the program, a build number or the version.

Multimedia

Peer-to-Peer

Blitz JavaSpaces

The purpose of the Blitz project is to further the use of JavaSpaces and JINITM through the provision of essential resources such as:

JXTA

JavaGroups

Instant Messaging

Echomine Muse

Echomine Muse is a library intended to make communication across a wide variety of protocols (including Jabber, Napster, Gnutella, and more) easy and somewhat consistent.

Object Persistence

Hibernate

Jing DAO Framework

Prevayler

SwarmCache

SwarmCache is a simple but effective distributed cache. It uses IP multicast to efficiently communicate with any number of hosts on a LAN. It is specifically designed for use by clustered, database-driven web applications. Such applications typically have many more read operations than write operations, which allows SwarmCache to deliver the greatest performance gains. SwarmCache uses JavaGroups internally to manage the membership and communications of its distributed cache.

Object-XML Binding

Castor

Digester

Jato

JiBX

XML Databases

eXist

Xindice

Program Distribution

IzPack

Packlet

Java Web Start/JNLP

Java Web Start

Netx

Reading and Writing XML

Utilities

txt2xml

NekoHTML

jaxen

Element Construction Set

The Element Construction Set makes it easy for you to build structured XML from a series of calls to objects. It tries to make sure you can't generate something that is not well-formed at the least, even if it is not necessarily well structured. I've used this in the past and found it easy to use but it seems to have fallen from favor. The last time I looked there wasn't much new activity and most people I work with tend to push for using JDOM for this purpose.

VMTools

Library functions to find differences between XML documents and represent those differences as a series of edit operations (again in XML form). Sample code is provided to make it easy to not only find the differences but also to patch an existing file to make it look like a new one.

Parsing

Binary XML

JAXP

JDOM

dom4j

Pipelines

xBeans

Clover ETL

Transmorpher

Remote Procedure Calls

Hessian

SwitchRMI

SOAP

Apache Axis

GLUE

XML-RPC

Apache XML-RPC (formerly the Helma XML-RPC library)

Scheduling

Jcrontab

Scripting

BeanShell

Bean Scripting Framework

Simkin

Searching

Lucene

Jakarta Lucene is a high-performance, full-featured text search engine written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform.

Relevant links

Server Administration

Servers

Java Service Wrapper

JMX

JMX offers a simple way for you to package server components so you can make them administrable locally or remotely. JBoss and many other server packages now make their components MBeans (managable beans) just to get this functionality.

Consider it seriously for any server software you might be building.

MC4J Management Console

XtremeJ

MX4j

JBossMX

JMX Homepage (Reference JMX Implementation Available Here)

AdventNet Agent Toolkit Java/JMX Edition

Modeler Component

JMX taglib

JMX4Ant

XMOJO

Email

MrPostman

HTTP

Jetty

Jo

J2EE

JBoss

SecurityFilter

Portal

eXo

Jetspeed

jportlet

Pluto

WebDAV

Slide

Swing

Date & Time Selector Component (commercial)

Can be customized to pick Date, Time or Date & Time.

Unavailable dates can be set. User selection is disabled for unavailable dates.

Clock needles can be dragged to change time.

Class Library includes separate Calendar Panel and Clock Panel for other use.

Unlimited runtime distrubution without any royalty

FoxTrot

Glazed Lists

Suppose you have a list of 1,000 objects to browse. With Glazed Lists, you can:

Java Bean Calendar Control

JCascadedPane

JCalendar

JCalendarCombo

JFontChooser

The Kiwi Toolkit

New controls for Swing (including a tree table, date control, etc.)

L2FProd.com Common Components

A set of new Swing components including a font chooser, directory chooser, property sheet panel, and a really cool task pane.

Embedded Editors

Ekit

Ekit is a free open source Java HTML editor applet and application. The Ekit standalone also allows for HTML to be loaded and saved, as well as serialized and saved as an RTF. It is approaching its first production release version.

JXMLPad

JXMLPad is a pure Swing java component/framework for editing XML/XHTML document.

Look and Feel

Want to change the look of your Java application. Here are some ways to do it.

Oyoaha lookandfeel

SkinLF

Metouia look & feel

Windows System Tray Integration

Java System Tray Manager

Windows Tray Icon - Java Implementation

Templates

Canvas

Canvas is a template generator based on the Groovy language. It uses the familiar Velocity Java API to bind variables and allows you to use the full expressivity of Groovy inside your templates.

FreeMarker

vDoclet

Velocity

XDoclet

XSLT

Tools

UI Compiler

Build

Ant

Anthill

CruiseControl

Maven

Profiling

Extensible Java Profiler

JAMon

JAMon offers a set of functions which can be called to record performance data (both duration and number of times executed). The data can be reviewed using an admin JSP.

JRat: the Java Runtime Analysis Toolkit

Version Control

JSVN

Testing

Customer Acceptance Testing

Unit Testing

Swing GUI Testing

Source Code Reformatting

BeautyJ

Jalopy

Jalopy is a source code formatter for the Sun Java programming language. It layouts any valid Java source code according to some widely configurable rules; to meet a certain coding style without putting a formatting burden on individual developers.

Workflow

Bonita

Bonita is a flexible cooperative workflow system, compliant to WfMC specifications, based on the workflow model proposed by the ECOO Team, which incorporates the anticipation of activities as a more flexible mechanism of workflow execution.

Bossa

JaWE

JaWE (Java Workflow Editor) is the first open source graphical Java workflow process editor fully according to WfMC specifications supporting XPDL as its native file format and LDAP connections. It can be used to edit / view every XPDL file which conforms to WfMC specifications.

jBpm

OpenEmcee

The "OpenEmcee Microflow Engine for Java" is an open source framework (Released under MPL 1.1) for developing flexible, manageable, and adaptable applications. It aims to allow application developers to develop well-engineered business-logic intensive application domain software. Drafting from the "Model" and "Controller" layers of the "Model-View-Controller" pattern, it allows developers to separate the business context of their application from their core business functions.

This separation of context from core implementation encourages development of software units which are easily reusable and require no or little modification to business critical code when implementing new functionality. Also, these units of work ("tasks") can be easily reused in future projects.

Open For Business

OpenWFE

Jakarta Commons Workflow Project

OSWorkflow

Shark

The Shark project delivers a workflow server with a difference. Shark is completely based on standards from WfMC and OMG using XPDL as its native workflow definition format. Storage of processes and activities is done using Enhydra DODS.

werkflow

A Different Obscure Java Project List

Carlos Perez took exception to many of the items I included in my own list of obscure Java projects from yesterday. I'm very pleased that he chose to do his own (wonderfully titled :) ) Manageability - Top Ten Truly Obscure But Useful Java Projects. I hope others do the same to shine the spotlight on projects which they believe aren't getting the mainstream attention they deserve.

July 07, 2004

My Top Ten Obscure Java Projects

I spend a lot of time on the web watching for useful stuff because I believe that knowing about some of it ultimately saves me more time than it costs me to keep up to date on what's new. Among the things I found are projects which, in my opinion and mine alone, don't get much respect, mention, or recognition. Hence, here's my top ten list of projects which I've mentioned to people and gotten a, "Huh, never heard of it," in response.

If you've seen all ten of them, bravo for you, please don't write me to ask, "How could you include _______! I use it all the time." Instead just leave me a comment at the end including a project I left off the list which should have been included. Then maybe everybody will learn something.

My Top Ten Obscure Java Projects

  1. JiBX - In a sense, this is not that obscure. After all, there was a four part series of articles about JiBX on the IBM site. But where I think it seems to blend into the wallpaper is that there are a hundred different XML persistence mechanisms out there for Java. Every week you see a new one that somebody rolled for some project added to Freshmeat.net. But JiBX is different than any
    other one out there I've seen, including popular ones like Castor and Digester, because it puts Java byte code directly into the classes themselves to perform conversion to and from XML. As a result, performance blows away anything else I've seen. If you have to convert large volumes of XML to Java objects or vice versa and do it at high speed, this is the ticket. However, if you need flexibility in parsing an existing XML format into Java objects I'd still have to give the nod to Digester, it seems to be
    able to handle a lot of odd structure.

  2. Bean Scripting Framework - As hard as it is for me to believe that this is obscure, it really seems to be. What if I told you that for a couple of hours of your time you could
    expose internal components from one of your programs for control by different scripting languages and that people could then create scripts to work with those components in languages with which they are already familiar like JavaScript, Python, Rexx, etc. This used to be an old IBM project but even after it made a move to Apache its profile still didn't seem to increase that much.

  3. the display tag library
    - How many web based applications display tables? Yeah, pretty much all of them.
    DisplayTag makes displaying a really really nice table easy. It handles alternating line highlighting, pagination, and altering the appearance of items in the table through the use of a simple table decorator class. This is a tag library that anyone who has to build web applications needs to have in the repertoire right along side the JSTL.

  4. Batik - I've extolled the virtues of Batik before in this weblog. You've got an vector graphic rendering library that can work at a huge range of scales. It handles standard XML Scalable Vector Graphics (SVG) format files and they have pretty much the same level of expressiveness as PostScript. It's written entirely in Java and you can incorporate it
    into your application. Wow. Simply wow.

  5. Anthill - When you want to start having automated builds for your application, Anthill is probably the easiest way to go. It allows you to take the already existing Ant build script you should already have for your application and make it run on a regular schedule. It can automatically notice when there are changes to your code within a CVS source repository, check out the latest version of the code, build it using Ant, and perform post processes like JUnit tests or moving build products to a directory for download. Best of all, when a build fails to compile or fails JUnit tests Anthill will let you know via email so you can fix the problem. I love the way Anthill is simply built on top of most projects already existing build process so it can often be implemented and running in a couple of hours. A commercial version is available that has more features than the open-source version if you need them.

  6. Lucene - An indexing and searching library you can embed into your application. I like the fact that it will let you distinguish between text that you need to be able to search upon but not necessarily store (e.g. the body of an HTML page) vs. something you want to both search on and store (e.g. the title of that web page).

  7. Velocity - A straightforward, easy to use boilerplate system where you can create textual template files and then fill in portions of the text with values you set. Perfect for sending out emails, generating HTML, SVG, XML, and who knows what else without having to write a bunch of parsing code to handle your own template formats. I've used this in two different projects now and both times I ended up pleased.

  8. Prevayler - Easily the most controversial entry in the list. After breaking out with grandiose claims of huge performance improvements over relational databases and SQL, many dismissed this storage technology. Personally, I think that's a mistake. Prevayler is not for every program. It really only works if you can fit all of the data you are trying to persist in memory. If 32GB databases are your stock-in-trade, move along, it's not for you. On the other hand, if you have just a few megabytes of data to store and it will easily fit in memory then this is a good way to add storage of that data, have high speed access, and continue using internal data structures like Lists, Maps, etc. that you may already have rather than being forced to map to RDBMS table structures.

  9. Picocontainer - This is one of the lesser known of the newly popular "Inversion of Control" (IOC) or "Dependency Injection" containers. Spring is probably the best known of these type of object containers. Picocontainer is just an extremely lightweight container for putting a bunch of Java objects together and having each one get the other objects it needs in order to perform its functions. In many Java applications this is accomplished by hard wired code at the start of the program that creates each object and then passes references to other objects. Or worse, each object is left to its own devices and is allowed to get its own references to other objects or create them and the result tends to be very untestable code with a lot of dependencies. With Picocontainer the constructors on the objects specify the other objects they need and/or a set of interfaces for which they need object that implement those interfaces. The container is responsible for creating objects, doing so in the correct order, and connecting them up to satisfy those requirements. Spring is more flexible and powerful, but also significantly larger than the ~50K weight of Pico.

  10. Apache XML-RPC - SOAP is all well and good for making function calls over the Internet. It is interoperable across languages, implementations, yadda yadda. It's also overkill for 80% of what most developers want to do (i.e. make a couple of simple calls to remote websites). XML-RPC is a much simpler XML format that is perfect for this and I can guarantee you that you'll be able to create servers which can be called from many more languages than an SOAP service simply because just about any language you can find has an XML-RPC implementation. SOAP's complexity ensures that many more obscure scripting languages have no client side implementation. Also, the simplicity in implementation carries over into simplicity of use. You could build both a simple server and client within an hour of picking up the library.

July 02, 2004

HotSheet Release 1.0.7

HotSheet has gone on a diet and is now down to just a little over 500K. That makes for a nice quick download even for dial-up users. I'm not going to claim that it's not going to gain some weight back soon but I've been cleaning up the code with an eye to a lot of new development and also trying to keep its size in line with the amount of functionality the end user is getting.

The best part is that I'm approaching the end of my cleanup process and I'll be starting on adding new features and making the whole program easier to use next week.

Servlet and JSP Performance

It's a single test rather than a whole suite of tests which might reveal more about the different servers, but this Servlet Performance Report is a really interesting read if you have to do servlet or JSP work regularly.

In particular I found it interesting that Tomcat 5 had performance that was that good, even compared to some commercial competitors. That brings up the quality of all the products including it as well, like JBoss and Sun's Java System Application Server (what a catchy name).

Let's hope that BEA's WebLogic is included next time (or perhaps added ex post facto).