 |
|
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:
|
 |
|
|
- 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).
- 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 ).
- Javolution classes
are fast, very fast (e.g. Text
insertion/deletion in
O[Log(n)] instead of O[n] for standard
String/StringBuffer/StringBuilder ).
- 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.
- Javolution makes it easy for
concurrent algorithms
to take advantage of multi-processors systems.
- Javolution's collection classes
(map,
list,
table and
set) are all
RTSJ-Compliant
and support concurrent access without synchronization!
- 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
- Javolution
provides Struct and
Union classes for
direct interoperability with C/C++ applications.
- 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.
- 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. |
 |
|
|
 |
|
|
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]
|
|
 |