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
Artificial Intelligence/Expert Systems
JGAP: The Java Genetic Algorithms Package
JESS
JOONE – Java Object Oriented Neural Engine
JSR-94
Weka
Bayes & Naive-Bayes Classifiers
Authentication and Authorization
Acegi Security System for Spring
OSUser2
Tapestry
JAAS
Clients
Virtual File System
HTTP
HTTP Proxies
Internet Protocols
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 😀
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
Socket Communications
Graphics
Batik
OpenMap
Piccolo
TinyPTC
ZVTM: Zoomable Visual Transformation Machine
Barcode Generation
Charting
EXIF
Images
Links
Icons
Links
-
http://sourceforge.net/projects/icon-collection/
-
http://developer.java.sun.com/developer/techDocs/hi/repository/
JDBC
Java based
IDEs
Reporting
Generation of reports from databases or other data sources.
Intercepting and Modifying Commands
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
Log View/Filtering
Chainsaw
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
XML Databases
Program Distribution
IzPack
Packlet
Java Web Start/JNLP
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
Pipelines
Remote Procedure Calls
Hessian
SwitchRMI
SOAP
XML-RPC
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
HTTP
J2EE
Portal
WebDAV
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.
Windows System Tray Integration
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
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
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.
Very nice (and long list) – even discovered some new ones, I am going to take a look at SwitchRMI as this seems to solve something I have been looking for lately.
What do you think about putting the list to some Wiki somewhere, so it can be continuously maintained?
Impressive.
Flume, BeautyJ, Tapestry, Naiban are all new to me.
Thanks,
Carlos
What about the new version of Chainsaw instead of LumberMill?
It’s available via Web start:
http://logging.apache.org/log4j/docs/chainsaw.html
Very nice and long list. I discovered a lot of interesting stuff! Thanks!
Very nice list. Bravo.
I mentioned it on my webiste too.
Java Toolbox as Wiki
John Munsch gave me permission to publish his Java Toolbox in a Wiki form. So I basically just took the list John published and made it available here.
It still needs some cleaning up which I will do sometimes in the next weeks. Feel free to add you…