Java, much like any other open source system, suffers from the paradox of choice - too many choices confuse people and makes them like the overall product or system less. There are numerous Java packages out there that do a number of things and it sometimes becomes very difficult for a developer starting on a project to figure out which combination of libraries are needed to meet the requirements.
Here's a list of interesting and useful projects that I have come across so far, ordered by the specific business need. While there are a number of comparison sites for libraries within a particular group, this is more of a subjective view of the libraries that I prefer.
Business Need | Package |
---|---|
Validate US postal information (City, State, Zip) | JPostal![]() |
Unit testing module | JUnit![]() |
System or Integration testing with a Wiki-like interface - very helpful for transactional systems | Fitnesse![]() |
Application framework without the overhead of J2EE | Spring![]() |
Logging mechanism | Log4J![]() |
Process Microsoft Office Documents | Apache POI![]() |
PDF creator / generator | iText![]() |
Reporting Engine | Jasper Reports![]() |
Database mapping | Hibernate![]() |
Search Engine | Lucene![]() |