Jisp: Java Indexed Serialization Package
A small, embedded database engine written in Pure Java
Jisp has been replaced by Itzam/Java. While support continues for existing licensed customers, all future development effort will be put into the smaller, faster, and more flexible Itzam/Java package.
These pages will remain available for people who are still using Jisp.
Jisp is an
embedded database engine designed for programmers
who need indexed access to data. Written in Pure Java and tested for
portability, Jisp provides a simple, direct solution when an
enterprise-class database system is too big or expensive for the task at
hand.
In terms of technology, Jisp uses B-tree indexes to provide keyed access to variable-length serialized objects stored in files. The framework allows new index alogorithms to be added; data can be indexed on almost any data type.
I wrote Jisp in Pure Java for maximum portability across platforms. When you build an application with Jisp, the source code is in your hand, letting you control precisely how your data are related and accessed. This is a tool for people comfortable with defining their database relationships "on the metal".
Jisp is designed for standalone or embedded applications, where an enterprise-class database is not a reasonable option. I use enterprise-class databases, and don't for a moment believe I've replaced them with Jisp. What I have done is create a tool for applications that don't lend themselves to "heavy" solutions like Oracle, SQL Server or Access. I've used Jisp in developing vertical-market databases and peer-to-peer systems; other people have used Jisp in projects ranging from WAP applications to the Apache project.
Jisp is small (43K as a JAR extension), flexible, and free under the GPL license. Commercial licensing includes support and custom software development services.
Key Features
 
- Jisp supports keys and data of any Serializable type and length. You can even mix key types in the same index, referencing some data by strings and others by numbers.
- Full capabilities for linking Jisp database tables into relational or network databases, via cross-indexing.
- Databases may be indexed by any number of keys.
- Keys can be any Java class that implement the appropriate interface. You can define a key based on a data structure, for example. All relationships can be programmed specifically for the needs of your application.
- Jisp comes with a complete set of classes for B-Tree indexing of variable-length, serializable records in external files. The extensible architecture lets you extend Jisp's indexing capabilities with additional algorithms.
- Indexes can enforce unique keys, or allow duplicate keys.
- Jisp supports record filters, and comes with a Huffman-based compression filter. You can add other filters to Jisp's framework to handle automatic encryption or translation to and from a database.
- Javadoc-generated API documentation. You can view the complete documentation for Jisp, online.
- Indexed data does not need to be homogenous; data files can contain mixed serialized types, all using the same or mixed indexes.
- Jisp has a small footprint; its JAR extension file is only 43K bytes in size.
- Jisp is very portable, being written in Pure Java. I have successfully tested Jisp on Macintosh, UltraSparc, and Intel systems running Linux, Windows, and OS X.

