Because real-time programming requires a time-predictable standard library.
"The ability to simplify means to eliminate the unnecessary so that the necessary may speak."
                                                           Hans Hofmann,
Introduction to the Bootstrap, 1993

 
 
Javolution real-time goals are simple: To make your application faster and more time predictable!
That being accomplished through:
 
 
  1. Objects can be preallocated or allocated on the "stack" and automatically recycled. With Javolution, your application is busy doing the real work not memory management (e.g. Javolution xml StAX-like reader/ writer can be 3-5x faster than conventional XML parsers only because they do not waste 2/3 of the CPU doing memory allocation/garbage collection).
  2. Javolution classes are simple to use, even simpler than most JDK classes. You don't need to guess the capacity of a TextBuilder, FastTable or a FastMap, their size expand gently without ever incurring expensive resize/copy or rehash operations (unlike StringBuffer, ArrayList or HashMap).
  3. Javolution classes are fast, very fast (e.g. Text insertion/deletion in O[Log(n)] instead of O[n] for standard String/StringBuffer/StringBuilder).
  4. All Javolution classes are hard real-time compliant and have highly deterministic behavior (in the microsecond range). For applications based upon the Real-Time Specification for Java (RTSJ) normal threads and NoHeapRealtimeThread may share objects preallocated/recycled in immortal memory.
  5. Javolution makes it easy for concurrent algorithms to take advantage of multi-processors systems.
  6. Javolution's collection classes (map, list, table and set) are all RTSJ-Compliant and support concurrent access without synchronization!
  7. Any Java class can be serialized/deserialized in xml format in any form you may want, also no need to implement Serializable or for the platform to support serialization
  8. Javolution provides Struct and Union classes for direct interoperability with C/C++ applications.
  9. Javolution runs on any platform from the simplest J2ME CLDC 1.0 with no garbage collector to the latest J2EE 1.5 with parameterized types.
  10. Javolution is a pure Java Solution (no native code), small (less than 200 KBytes jar file) and free; permission to use, copy, modify, and distribute this software is freely granted, provided that copyright notices are preserved (BSD License).
   Javolution Version 4.0.2 - October 12, 2006

 
 
The standard binary distribution (above) targets the J2SE1.5+ platform. For others platforms, the library should be rebuilt from the sources using the provided Ant script. Here is a summary of the platforms supported:

Ant Target
Platform
Description
1.0
CLDC 1.0+ The library is built without floating point support.
J2SE interfaces are in the j2me.* package.
1.1
CLDC 1.1+ The library includes floating point support.
J2SE interfaces are in the j2me.* package.
1.4
J2SE 1.4+ J2SE interfaces are in the regular java.* package.
1.5
J2SE 1.5+ Parameterization of relevant classes (e.g. collections)
javolution.lang.Appendable and javolution.lang.Enum are moved to the java.lang.* package.
1.6
J2SE 1.6+ Includes performance comparison with standard StAX
gcj
GNU Compiler for Java J2SE interfaces are in the regular java.* package.
Includes org.xml.sax.* classes.
Generates a native dynamic library ( javolution.so ).
Once built, the library can be used as a normal library (no bootclasspath necessary). The library is also self-executable for versioning, testing and benchmark purpose.

java -jar javolution.jar version (shows version information)
java -jar javolution.jar test (performs self-tests)
java -jar javolution.jar perf (runs benchmark)

Here are the benchmark results on Windows platforms.
 
 
Runtime Environment: Any (J2ME CLDC, J2SE, J2EE, GCJ)
Compilers: All (including GNU Compiler for Java)
Build tool: Apache Ant
Collaborative Tool: java.net (code development, comments, issues, bug reporting).
Style Guide: Coding Standard Addendum.
Preferred Environment: Eclipse (UTF-8 Encoding) and NetBeans
Plug-In: JavoClipse (v1.0.48) - Eclipse plug-in to generate xml formats from source code.
                (questions/comments can be sent directly to the javoclipse mailing list)
Others: colapi.jar - Tool to format/colorize Java code in API documentation.

 
 
Articles related to Javolution (previously known as: J.A.D.E. Java Addition to Default Environment): Known projects using Javolution:
  • JScience - Java Tools and Libraries for the Advancement of Sciences.
  • Open For Business - Open source enterprise automation software project.
  • MathEclipse - A symbolic mathematics engine written in Java.
  • JMulTi - Time Series Analysis with Java.
  • JStatCom - A Software Framework for Data Based Analysis.
(Let us know if your project uses Javolution and you would like it to be listed here)

Javolution's users can also show their support with the "Powered By Javolution" button:



(e.g. <a href="http://javolution.org"><img src="javolution.png"></a>);
this is of course purely optional.
 
 
  • September 18, 2006: Javolution 4.0
    Faster parsing/formatting of primitive types (TypeFormat) [4.0.2]
    Corrected error when parsing double (TypeFormat) [4.0.1]
    There are many new features in this major release:
    • A new configuration plug-in class (Configurable class)
    • XML stream reader/ writer (StAX-like)
    • Faster, Simpler, Meaner... XML marshalling/unmarshalling (using the StAX-like classes)
    • Explicit object recycling now works in the default heap context
    • Faster object recycling (yes it can be even faster)
    • Refactoring and renaming (yes it breaks backward compatibility but it should be the last time ;) )
    • More I/O classes (e.g. AppendableWriter, CharSequenceReader)
    • ...
  • May 1, 2006: Javolution 3.7
    Xml corrections and NetBeans support (Java Project with existing Ant script) [3.7.10]
    Added sorting capabilities (quick sort) to FastTable [3.7.8]
    Shared FastMap are now valid to substitute to ConcurrentHashMap (see util FAQ) [3.7.7]
    Benchmark results with Mustang VM (JDK1.6-Beta2) [3.7.6]
    FastCollection.unmodifiable() may return more specialized types, e.g. FastSet.unmodifiable() returns an unmodifiable Set, FastList.unmodifiable() returns an unmodifiable List, etc. [3.7.6]
    Added persistent constructor to FastMap, FastSet, FastList and FastTable [3.7.5]
    Added the Immutable tagging interface [3.7.3]
    Javolution is now the first library to be fully integrated with the RTSJ Memory Model. If any container (collection, context, etc.) is allocated in a non-heap memory area and its capacity increases, the extension part is allocated in the same memory area (see also Reusable) [3.7.0]
    Faster document parsing with CharSet and TypeFormat [3.7.0]
    Contexts can now be used to reduce "worst-case" execution time (see realtime package) [3.7.0]
  • September 26, 2005: Javolution 3.6
    Added StandardLog class to leverage java.util.logging capabilities [3.6.9] [3.6.10]
    Class initialization at start-up to avoid initialization delays at runtime [3.6.7] [3.6.8]
    Powerful/flexible logging context [3.6.7] [3.6.8]
    Wilfried Middleton added useful C# String operations to the Text class [3.6.7]
    Gregory Arakelian JavoClipse release! See tools above.
    Direct support for xml cross references (to avoid expanding objects already formatted) [3.6.5]
    Minor additions to Struct class [3.6.3] [3.6.4]
    Comparison graph illustrating real-time characteristic of FastMap [3.6.3]
    Contexts now work with NoHeapRealtimeThread [3.6.3]
    Fixed shared FastMap issues [3.6.1] [3.6.2]
    Object-Local contexts which can be inherited by threads executing their methods [3.6.0]
  • August 29, 2005: Javolution 3.5
    Fixed attributes non-reset issue when parsing xml [3.5.5]
    Reinstated namespace support for packages (xml serialization) [3.5.4]
    Support for dynamic change of classes aliases and formats during xml serialization/deserialization [3.5.4]
    Added the (very useful) LocalMap class [3.5.4]
    New and improved XML Serialization/Deserialization
  • July 4, 2005: Javolution 3.4
    Smoother capacity increase for FastMap [3.4.0]
    Linux benchmark results instead of Windows [3.4.0]
    Easier creation of StackReference for functions returning more than one value [3.4.0]
  • June 24, 2005: Javolution 3.3
    Completed library parameterization.
  • May 4, 2005: Javolution 3.2
    Improved xml serialization/deserialization (added support for name-based associations) [3.2.0]
    Realtime xml pull parser (no object creation and up to 5x the speed of standard XPP parsers) [3.2.0]
  • March 12, 2005: Javolution 3.1
  • March 3, 2005: Javolution 3.0
  • February 4, 2005: Javolution 2.2
  • December 19, 2004: Javolution 2.1
  • October 4, 2004: Javolution 1.0
    Spin-off of Java Addition to Default Environment [1.0.0]
Javalobby.org Comments : Mailing Lists
Project Owner : Jean-Marie Dautelle
Revision : October 12, 2006

Java is a trademark of Sun Microsystems, Inc