genjava / articles / Jakarta Commons Sandbox
Jakarta Commons - The State of the Sandbox
created 2003-10-17, updated 2003-11-27
The Commons Sandbox has two reasons for existence. Firstly it's a development area for Jakarta Commons, an area where new components may be played with before being voted in as full components. Secondly it's an incubation area for new components from outside Jakarta.
The sandbox is also a big blob of unknown. This is bad in my view as there are gems amongst the muck so I have decided to write a state of the sandbox commentary which I will attempt to keep updated. Please remember that a fair amount of this is opinion based, my opinion, but I am open to any corrections and suggestions.
I will list each component and explain the purpose, some of the current issues
and maybe even the gossip of each component. I will add a personal opinion,
but hopefully it will be obvious. The order of the components is first by maturity, then alphabetical. I include all modules in the cvs-sandbox, not just
the ones technically in the Jakarta-sandbox.
[Apologies for speaking of myself in the 3rd person, it felt right]
DEVELOPMENT FORK
- cli
- The CLI guys are using their sandboxed version to work on the 2nd version of the system in an easy to maintain development fork.
READY FOR PROMOTION
[Obviously my opinion]
- email
- Spawned by the Turbine project, the email component was written by John McNally and Jon Stevens over two years ago but has never seen a release. Despite this state, it does appear to have a user base as bugs are reported and reality should be recognised with a release. Michael Davey suggests "Email could benefit from incorporating the Ant email classes prior to release. "
LIVE
- attributes
- A component from Leo Sutic and the Avalon.apache.org guys. It provides a simple API to runtime metadata attributes such as doclets and is based on code written by Jon Tirsén for Nanning.
- bzip2
- An implementation of bzip2 in Java. It came from the Ant project and has been hanging around in the Sandbox for 18 months now.
- chain
- A new component from Craig McClanahan. It is an implementation of the 'Chain of Responsibility' pattern and looks pretty lively.
- compress
- A Tar and Zip implementation. Within Apache code has moved from Ant to Avalon to Commons IO and now to Commons Compress.
- convert
- Code taken from BeanUtils by Henri Yandell, and some new management code written around it.
- functor
- A component creatd by Rodney Waldhoff. Functors are simple object implementations of a function.
- hivemind
- A new project from Howard Lewis Ship, of Tapestry fame. It is described as a dynamic services and configuration microkernel and is very active.
- io
- Another child of the Util component. A lot of code was added from Avalon, but sifting through it all and getting unit tests in place is a thankless long task.
- jex
- A framework for scripting languages in Java from Dmitri Plotnikov. [dead?]
- jrcs
- An RCS implementation created by Juancarlo Añez. It has suffered from being hidden in sandbox and is likely to leave Jakarta to return to Juancarlo's control.
- launcher
- Created out of commons-daemon a year ago, launcher is meant to be just that, a Java application launcher.
- mapper
- Mapper is an abstract api to a data store created recently by David Graham.
- messenger
- A JMS-helping API created by James Strachan. It has been in the sandbox for a long time without any need for further development.
- naming
- Extraction of the in memory JNDI implementation from Jakarta Tomcat by Henri Yandell.
- periodicity
- Jeff Prickett is the only name attributed to this component, it is a web-based calendaring system centered around the iCalendar RFCs. It's been quiet for a year now.
- primitives
- Primitives is a new component from the Collections component which provides, chiefly Collection-style, classes for Java primitives. [Work out what the difference is between this and the Commons primitives]
- reflect
- Lang has a proposed reflection sub-package which has now been promoted to a new proposed component of its own. It's helper code to make Java reflection far simpler, and comes originally from BeanUtils.
- resources
- A two-year old helper API for internationalisation of message strings from Craig McClanahan.
- sql
- A component for working with databases and generating DDL that came out of the Turbine and Torque projects.
- threadpool
- A threadpool system from James Strachan. Thread Pools have to be handled differently to usual pools and so this exists to meet that need.
- vfs
- A virtual file system component from Adam Murdoch. It treats sources such as zips, http and a file-system under a single API.
COMA
- filters
- A component submitted by Glenn Nielsen to host a series of Filters for Tomcat. It has never caught on however and appears to be stagnant. I suspect the reasons for this are tied to the same reasons that caused the Jakarta Taglibs project to stagnate.
- grant
- A series of hacks to Ant to allow for better classpath/property resolution control. Created and used by Maven, dIon Gillard suspects that later Ant releases make it unnecessary.
- graph2
- David Peugh's rewrite of the graph package. Both graph and graph2 were driven by Maven I believe, but neither have ended up in use. [dead?]
- http
- A few classes originally found in the Util component and moved to the more focused http component. The main problem it has is that there is very little there. [suggest for httpclient?]
- joran
- Submitted by Ceki Gülcü, it laid some groundwork for an XML based Java configuration tool. Currently it is being worked on inside the log4j project and may one day turn up in the Commons: http://cvs.apache.org/viewcvs/jakarta-log4j/src/java/org/apache/joran/.
- jux
- A component containing common junit extensions. Commons Collections now has a junit jar that may be built, so I wonder if this will go into jux someday. Jux seems to be driven by Rodney Waldhoff, but it's slumbering currently. [investigate]
- proposal
- Not a component, this is a piece of work from Scott Sanders which may be used to generate the initial documentation for a commons component.
- rupert
- Another two-year old project, this time from Geir Magnusson Jr. Rupert was a temporary name for a series of webapp tools.
- scaffold
- A component from the Struts project. Wish I could figure out what this did :)
- servlet
- When the util component was split up, the RequestUtils class went into this component. However, nothing has changed since.
- threading
- A two year old proposed component, it provides threading utilities to make it easier to work in multiple thread environments. Submitted by Craig McClanahan.
- workflow
- Another two year old project. It contains a workflow engine to manage and execute scripts, codified in XML.
- xmlunit
- Yet again, a two year old project, this time from Rodney Waldhoff. Not too sure what it's for, I assume some kind of JUnit for XML. Erm.
- xo
- An XML to Bean mapper that takes an XML file and maps it to a Java Bean. This came from Turbine eighteen months ago.
DEAD
- altrmi
- This is a component that Paul Hammant brought to Jakarta. It is a reimplementation of RMI to be simpler, but is no longer in Jakarta Commons. It is now in the Apache Incubator: http://incubator.apache.org/projects/altrmi/.
- amend
- This is a dead module submitted by Rodney Waldhoff. It's not really a component but instead a move to modify the Commons Charter. It doesn't specify whether the amendment was successful or not.
- armi
- An early name of altrmi. @see altrmi.
- cache
[confirm death]
- A Rodney Waldhoff component from the early days of Commons. It hasn't had any
work in the last 2 years since its initial import.
- cadastre
- Peter Donald killed this off 2 years ago. Originally from Avalon, it was a JNDI framework with Memory and RMI implementations.
[is this in Avalon now?]
- cjan
- Geir Magnusson Jr's first work in Commons on a dependency handling jar system. It was superceded by jjar.
- clazz
- Originally from Stephen Colebourne, this component saw a lot of activity a year ago. It is an introspection and class manipulation API.
[why did this stagnate?]
- graph
- A first attempt at a graph package. This was replaced by graph2.
- jdbc2pool
- This merged with dbcp.
- jjar
- Geri Magnusson Jr's second set of work on a dependency management engine for Java. It lost the will to live when Maven was kicked off, although I personally felt it had a lot going for it.
- morphos
- Morphos was a proposed component from Nicola Ken Barozzi, amongst others. It aimed to perform file transformations, beginning with XML files. The reasons for its death need to be found in the mail list.
- pattern
- A component led by Stephen Colebourne which aimed to provide the implementations to various standard Java patterns. It was killed and its contents folded into various other components, mainly Lang.
- services
- Another component from Struts. This is a component that provides a standard way to plug services in, I think.
- simplestore
- Gerhard Froehlich submitted this project. Its aim was to provide a store interface, much like the proposed mapping component.
- util
- The util component used to house lots of Java classes. So many that the chances of a release happening were low due to the varying levels of maturity. Two years ago the project's code formed the original basis of the Lang, Codec, IO and Servlet components, while other code was sent to the Collections component. The component was finally killed off 8 months ago.
PROMOTED
- betwixt
- codec
- configuration
- daemon
- digester
- discovery
- el
- fileupload
- jexl
- jpath
- Changed name to jxpath.
- lang
- latka
- latka-webapp
- Merged into latka.
- logging
- modeler