This is just what the name says - a collection of disparate utility classes, in source code, to be used or modified under LGPL. They're fairly independent from each other. You can download source and compiled jar from sourceforge.
Most of the classes are JDK1.2/1.3 compatible. However, for new classes or when adding functionlity, I now use 1.4 features so you may need to rework some bits (typically, I make now extensive usage of the root exceptions present in 1.4 Throwables) to compile under JDKs previous to 1.4.
Javadoc is here. Here some news.
(You may also be interested in my Java Command line options and arguments parsing library, Flat file parsing library, or file & directory polling component which come in separate packages).
Some interesting ones:
- An Axis Object Serializer to easily serialize objects generated by Apache Axis' wsdl2java tool to XML.
- A Telnet client library which is not a GUI client, but rather a set of classes to efficiently perform a conversation via a telnet interface.
- A JDBC Connection factory which allows to load JDBC driver (and create connections) from arbitrary locations not previously set in classpath. In particular, this class allows to discover JDBC drivers dynamically and make them visible to the DriverManager even if they are not loaded by the system classloader.
- An improved (and finally, open-source) version of the Asynchronous listening framework I wrote in 1998 and
since used in many situations. This package allows to send and receive concurrent signals (events) from arbitrary objects.
- A WatchDog class, with JMX instrumentation. A watchdog periodically executes some checks and executes some action depending on the result.
- A small SAX-based framework to handle XML configuration (cfr. DispatcherHandler and related classes). The framework allows to process nested parts of an XML document with different specialized SAX handlers, so that independent handlers can be writtenr, reused and plugged in for independent configuration elements residing in the same XML document.
- An object lister to produced human-readable descriptions of arrays, collections etc. It uses either the toString() method or a method chosen by the user to produce the object description, and allows various formatting options.
- A Symbol table to define symbols and evaluate strings containing them.
- A java package explorer to gather package/class information at runtime. Notably, it allows to find where in the file system a particular class or package is living.
- An Object Pool. Its basic operations are acquire(), release() and renew() - and it does pool objects. :)
- A Thread Pool. Any Runnable object can be associated to a thread, which runs it, and then is available for another. The JMX instrumentation for both pools is avaialble, just have to organize the packaging - so ask if u need.
- A dynamic class file finder which emulates Java 2 class-searching mechanism, and its related dynamic class loader, which allows to redefine or modify the classpath at runtime.
- A simple constant pool reader which extracts information from Java .class files. I wrote this back in '98, where there was little or nothing around. Nowadays, if you want a sophisticated library for exploring bytecode,you may want to look at Apache's BCEL. However, this class is compact, complete, and does the job - so I keep using it.
- A method signature analyzer which extract type names from Java method specifications. Just a little parsing helper.
- A time interval class that (surprisingly) manages time intervals (as opposed to instants, which is the job of java.util.Date). Again, an old class, and much of the functionality today's replaced by Calendar and DateFormat in a much more generic way. But if you're not especially interested in supporting chinese calendars it may still be useful.
- A fancy PrintWriter with indentation, which I use when I want to care for the look of the output (typically, in log files or so). It just allows you to set the "current" indentation of the printout, and happily forget about prefixing stuff with spaces.
- A JPanel based output stream which allows you to see a textarea into JPanel's as - guess - an OutputStream. Yes - sic - I lost the source code of this (and other classes) and had to decompile it. So you won't find the fancy comments I'd orginally written. :(
- A <pack> ant task (source) to compute the dependencies in a set of classes and pack together the results in a JAR file (this is loosely based on my previous cpacker but made in a much simpler way, avoiding the trouble of actually instantiating Class objects just to look into them).
- An environment variables helper class to access and readenvironment variables from Java and automate transposition to system properties.
- Other stuff regarding queues, etc.
An ant build.xml file is provided to build. Make sure you have a /temp directory (or change the value of the tempdir property in the build.xml) to build. A J2EE.jar is provided to successfully compile EJB-related utilities. It just contains EJB2.0 interface classes. If you have questions or want to report bugs, send a mail to me.
- March 2008 - updated links in this page so that they work again :)
- April 2005 - Added AxisObjectSerializer
- March 2005 - PathNormalizer updated to support UNC names under windows.
- March 2005 - I finally managed to commit the correct build.xml