| 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: High performance and time-deterministic (real-time) util / lang / text / io / xml base classes. Context programming in order to achieve true separation of concerns (logging, performance, etc). A testing framework addressing not only unit tests but also performance and regression tests as well. Straightforward and low-level parallel computing capabilities with ConcurrentContext. Struct and Union base classes for direct interfacing with native applications (e.g. C/C++). World's fastest and first hard real-time XML marshalling/unmarshalling facility. Simple yet flexible configuration management of your application.
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 `StringBuilder`, `ArrayList` or `HashMap`). Developers may achieve true separation of concerns (e.g. logging, configuration) through Context Programming or by using classes such as Configurable. Javolution classes are fast, very fast (e.g. Text insertion/deletion in `O[Log(n)]` instead of `O[n]` for standard `StringBuffer/StringBuilder`). All Javolution classes are hard real-time compliant and have highly deterministic behavior (in the microsecond range). Furthermore (unlike the standard library), Javolution is RTSJ safe (no memory clash or memory leak when used with Java Real-Time extension). Javolution makes it easy for concurrent algorithms to take advantage of multi-processors systems. Javolution's real-time collection classes (map, list, table and set) can be used in place of most standard collection classes and provide numerous additional capabilities. 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 most platforms from the simplest J2ME CLDC 1.1 to the latest J2EE 5.0 with parameterized types. Javolution is a pure Java Solution (no native code), small (less than 300 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 5.4.3 - December 10, 2009 (maven integrated)
The simplest way to use Javolution is through Maven with the following dependency in your POM.xml
          <dependency>
              <groupId>javolution</groupId>
              <artifactId>javolution</artifactId>
              <version>5.4.2</version>
          </dependency>
The latest Javolution artifact is deployed to the java.net repository
The standard binary distribution (above) targets the J2SE 1.5+ platform and can be directly built from the project source and Maven. 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
j2me | J2ME - CLDC 1.1+ | For mobile and other embedded devices. J2SE interfaces are in the j2me.* package.
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 ).
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 comparative test of Javolution StAX-Like reader/writer with standard StAX
test | J2SE 1.6+ | Executes built-in tests in TestContext (validation)
time | J2SE 1.6+ | Executes built-in tests in TimeContext (performance)
Once built, the library can be used as a normal library (no bootclasspath necessary). The library is also self-executable (for benchmarking purpose). Here are the benchmark results on Windows.
Runtime Environment: Any (J2ME CLDC, J2SE, J2EE, GCJ, Excelsior JET) 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 - Maven Plugin to format/colorize Java code in API documentation.
Articles related to Javolution (previously known as: J.A.D.E. Java Addition to Default Environment): XML.com parser benchmark shows Javolution is one of the world fastest parsers! Realistically Real-TimeTM JavaWorld article on Javolution and multi-core processors. Fully time deterministic JavaTM paper presented to AIAA Space 2007 conference. Validating Java for Safety-Critical Applications (AIAA Space 2005 Conference). Collection Classes for Real-Time and High-Performance Applications (pdf) Introduction to Javolution RTSJ-Compliant Collections Classes. Turbo-Charging Java for Real-Time Applications (July 2004 issue of Java Developer Journal) Dr Dobb's: J.A.D.E. article published in the 2001 February issue of Dr Dobb's Journal. Known projects using Javolution: Resoa - Open Source project for SOA & Cloud computing J Science - Java Tools and Libraries for the Advancement of Sciences. Glimworm - I.T. Firefly CMS Product ALMWorks - Bug-tracking systems, Deskzilla and JIRA Client. Open For Business - Open source enterprise automation software project. RADlab - Similator for radiation detection and measurement experiments. jgame - Real-time and embedded gaming API. MathEclipse - A symbolic mathematics engine written in Java. JRoboOp - Java package for robotics simulation with visualization of a 3D robot model. JMulTi - Time Series Analysis with Java. JStatCom - A Software Framework for Data Based Analysis. OVal - Object Validation Framework. (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.
November 5, 2009: Javolution 5.4 Fixed XMLFormat initialization cycle [5.4.3] Fixed shared FastMap memory leak [5.4.2] Fixed J2ME incompatibilities problems [5.4.2] Fixed issues 62, 63 [5.4.1] Reflection now support multiple class loaders (e.g. OSGI environment) [5.4.0] Configurable can be read from properties (text) or from xml [5.4.0] Struct support bit field crossing word boundaries [5.4.0] Arbitrary size BitField has been added [5.4.0] Bug in XMLStreamReaderImpl has been corrected [5.4.0] March 30, 2009: Javolution 5.3 Javolution now available from the java.net repository [5.3.1] Full Maven integration. [5.3.0] Reworked the complete testing framework (for real-time applications) [5.3.0] Added FastBitSet [5.3.0] Added PoolContext [5.3.0] ObjectFactory automatically reset Reusable instances when recycled (no need to override cleanup) [5.3.0] Improved ConcurrentContext performance [5.3.0] J2ME support now requires CLDC 1.1 - The J2ME build command is: ant j2me [5.3.0] August 19, 2007: Javolution 5.2 Fully time deterministic Java paper presented to AIAA Space 2007 conference Added the WebServiceClient base class (no WSDL file required) [5.2.4] New testing package to facilitate testing and code benchmark [5.2.0] Added convenience method to retrieve an ObjectFactory implementation for any class (ObjectFactory.getInstance(Class)) [5.2.0] Default context implementations (e.g. LogContext, StackContext, HeapContext) are now configurable [5.2.0] July 4, 2007: Javolution 5.1 Simplified concurrent contexts to accept any `Runnable` [5.1.0] Added `Text.print()` and `Text.println()` methods to output Text instances without creating intermediate `String` instances [5.1.0] Added method to force the size of a FastTable [5.1.0] Added static method to set/get the TextFormat associated to any particular class/interface [5.1.0] Any type for which the TextFormat is known can be represented as a XML attribute [5.1.0] May 6, 2007: Javolution 5.0 Major Relase! Here are the most important changes: Separation of concerns: Two new contexts have been added, the AllocatorContext and the SecurityContext. The `PoolContext` (too generic) has been replaced by the StackContext whose implementation can be based on thread-local queues (default) or `ScopedMemory` (RTSJ). The `RealtimeObject` base class is superceeded by the Realtime interface. New ValueType interface for immutable objects which can be referenced by copy and can always be allocated on the "stack"! New ArrayFactory to allocates/recycle variable sizes arrays. "Stack" allocation is independent from the array's size and significantly faster than "heap" allocation. December 22, 2006: Javolution 4.2 Added XMLSerializable tagging interface [4.2.8] New interface `ConcurrentExecutor` for concurrency [4.2.0] Added Index class (facilitates mapping between primitive types and `Object`) [4.2.0] November 30, 2006: Javolution 4.1 Lossless formatting/parsing of floating point numbers in TypeFormat [4.1.0] Immediate recycling capability for reusable classes (e.g. collections, TextBuilder, ...) [4.1.0] September 18, 2006: Javolution 4.0 Classes renamed as per coding standard (e.g. XmlFormat => XMLFormat) [4.0.0] May 1, 2006: Javolution 3.7 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] 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] August 29, 2005: Javolution 3.5 New and improved XML Serialization/Deserialization July 4, 2005: Javolution 3.4 Smoother capacity increase for FastMap [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] 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]
|  |  | Comments : Mailing Lists Project Owner : Jean-Marie Dautelle Revision : December 10, 2009
Java is a trademark of Sun Microsystems, Inc