 |
|
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.4 - March 9, 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.4</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. |
 |
|
|
 |
|
|
Articles related to
Javolution (previously known as: J.A.D.E. Java
Addition to Default Environment):
Known projects using Javolution:
- Resoa - Open Source project for SOA & Cloud computing
-
JScience - 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 FastMap iteration error [5.4.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
- 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]
|
|
 |