Welcome to Chronus, the user-friendly object persistance layer for
a) What is Chronus?
Chronus is an
easy to use Object Persistance Layer for Java objects. Chronus is completely transparent, which means
that their is no editing of your code neccesary in order to save your objects.
b) What is a Persistance Layer,
you may ask?
Chronus can save and load ANY object for you, without you having to worry about any of the details.
c) What can I use
save any java object, for example: plain objects, datastructures, beans, and even complete
instances of a program.
d) Why is Chronus
different than existing solutions?
from existing products in four ways: Chronus is EASY, it's FAST
and it requires NO SETUP and it's FREE!
If you would
like to save Java Objects there are a few alternatives available,
extract the information from the object to be saved and write the
information to a database or to a file(s). This approach has several
drawbacks. Firstly you will be "reinventing the wheel",
because there are already products that can do this. If you are
using the database approach you will be faced will the task of database
setup and table design, not even to mention all the SQL statements
that will have to be embedded in your code. As you might know, string
concatenation involved in producing the SQL statements can be quite
a resource-intensive operation, affecting the overall performance
of your program. If, however, you will be using the file based approach,
then you will be faced with quite a different set of dillema's.
You will have to choose whether to use one single file or a file
for each object. You would have to devise a file format and you
whould have to create code to write to and parse from the file.
File IO is also extremely slow compared to memory operations.
2. You could
use existing Object/relational persistence programs. These programs
allow the persistance of objects to SQL tables without the knowledge
of SQL statements. The program basically generates the SQL statements
for you. The problem is however that although free software is available
for this task it requires the objects to be "mapped" to
the database. This involves among other things: database setup,
table creation and driver registration with your mapping program.
Description of your objects and the mapping of their variables to
certain columns. This usualy happens with the use of xml files.
This requires some knowledge of SQL and XML. Some programs even
have their own alternative to the SQL language wich has to be learnt.
In my experience this involves a substantial learning curve. This
option is still unneccesarily slow because an sql statement is performed
for each field inside each object and proves unwieldy in comparison
You could use
Chronus. This involves adding the Chronus.jar to your classpath
and using it as you would a hashtable. Chronus takes care of the rest!
e) How does Chronus
implements the map interface, wich means that its use is exactly
the same as the use of any other map-implementing objects, like
hashtables and hashmaps.
Chronus stores a
object by serializing it into a database and saving it under a its name.
When you want to save an object you call the put method
with a key and your object. The encoded object is then saved into
an autmatically created HSQL database under its key. When you want
to load your object at a later time you call the get method, giving
it the key to your object, you then cast it to your object type and Voilla!
Your object is ready to use.
The only requirement that
chronus makes is that all custom objects implement the Serializable interface. This,
however, does not involve any actual implementational programming,
its simply a process of adding the line "implements java.io.Serializable" to
your class definition.
f) How about performance?
Chronus currently uses
HSQL for object persistance and is therefore exceptionally fast,
averaging 0.5 milliseconds to save a String object and 0.02 milliseconds
for loading the same object. This is during multiple saving and
loading, which minimizes initial connection overhead. For single
saving and loading the initial database connection overhead is higher
although performance is still very fast.
g) Isn't this too simplistic?
Chronus's philosophy is to provide a non-intrusive way to solve the persistance
problem. We also believe in extensibility. We are currently working on ways to make Chronus extendable while providing default implementations
so you do not have to worry about details if you don't want to...
h) Is Chronus really
Chronus is completely
free and is registered under the GNU GPL license.
i) Where can I
Is there any
tutorials for Chronus?
Sure there are,
scroll all the way up, and click on tutorials on the titlebar!