What is POJava?

POJava is a set of small light-weight Java libraries addressing common business-oriented software development needs. Each of the currently three libraries is designed with some guiding principles in mind: Keep it small and simple. Avoid unnecessary dependencies.

POJava gets its name from "Plain Old Java". Like "Plain Old Telephone Service" or "Plain Old XML", it's pretty basic stuff. Here's how it's organized.
POJava Utility This base jar provides common functions for string and binary conversions, such as compression, encryption, and encoding. It also includes tools for accessing, validating, and altering data using reflection, external process invocation, and language binding. It currently also supports the DateTime package, which is being spun off into its own project POJava DateTime.
POJava DateTime The DateTime library provides an immutable object, "DateTime", intended to improve upon Java's native Date, Timestamp, Calendar, and SimpleDateFormat classes. DateTime's most prominent feature is its ability to parse dates and times from a wide variety of formats and languages. DateTime is a business-oriented library, intentionally very small, but easily supporting time zone conversions, American or European ordering of month and day, ISO8601 dates, relative dates and date-based math. It also provides integrated formatting with built-in extensions such as a choice of fractional seconds to any length rather than just milliseconds, and a choice of BC/AD vs. BCE/CE to describe eras.
POJava Persistence This library provides database-to-object (ORM) and object-to-xml conversions in both directions. It depends only on POJava, so it also has a very small footprint.

What's new and cool in POJava?

POJava's DateTime class was recently moved into its own library. This will keep it focused on one well-defined task, supporting business use of Date and Time. Keeping it separate helps ensure that it stays small in the future (under 32K with no dependencies!) and keeps it safely away from concerns such as whether encryption is supported and in what countries.

Generated Documentation

POJava 2.8.0 JavaDocs POJava provides utilities for managing data using simple POJOs (Plain Old Java Objects).
Persistence 2.6.0 JavaDocs POJava Persistence provides a persistence layer for Object Relational Mapping between Java and a wide array of database platforms. It also provides Object to XML serialization and deserialization to simplify the conversion of your objects into a portable form.

Hand-written Documentation

How to use POJava DateTime...

Date and Time Easily parse freeform text Date and Time in multiple languages and formats.
Format Date and Time Output Output DateTime values using your own custom formats.

How to use POJava Utilities...

Compression Use Zip compression to fit more into the same space.
Number Base Encoding Base-64 or Hex-encode your binary data for document portability.
Unit testing with JNDI Use JNDIRegistry to populate a test-friendly InitialContext.
Running External Programs Use the ProcessTool to more safely execute external programs, capturing both stdout and stderr in separate threads.
Encryption Encrypt and decrypt your data using AES encryption and simple key management.

How to use POJava Persistence for...

XML Serialization Stream your Objects to XML. Retrieve and rehydrate them back into Objects, preserving complex circular references.
Object Relational Mapping Make your Data Access Objects simple, secure and speedy.