 |
|
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!
- High-Performance - Hardware accelerated computing (GPUs) with
ComputeContext.
- Minimalistic - Collection classes,
supporting custom views,
closure-based iterations, map-reduce paradigm, parallel computations, etc.
- Optimized - To reduce the worst case execution time documented through
annotations.
- Innovative - Fractal-based structures to maintain
high-performance regardless of the size of the data.
- Multi-Cores Ready - Most parallelizable
classes (including collections) are either mutex-free (atomic)
or using extremely short locking time (shared).
- OSGi Compliant - Run as a bundle or as a standard library. OSGi
contexts
allow cross cutting concerns (concurrency, logging, security, ...) to be addressed at run-time
through OSGi published services without polluting the application code
(Separation of Concerns).
- Interoperable - Struct and
Union base classes for
direct interfacing with native applications. Development of the Javolution C++ library
to mirror its Java counterpart and makes it easy to port any Java application
to C++ for native compilation (maven based) or to write Java-Like code directly in C++
(more at Javolution C++ Overview)).
- Simple - You don't need to know the hundreds of new Java 8 util.* classes,
most can be built from scratch by chaining Javolution
collections or
maps.
No need to worry about configuration,
immutability or code bloating !
- Free - Permission to use, copy, modify, and distribute
this software is freely granted, provided that copyright notices are preserved
(BSD License).
|
 |
|
|
- 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 with
documented real-time
behavior.
- Javolution makes it easy for
concurrent algorithms
to take advantage of multi-processors systems.
- Javolution's real-time collection classes
(map,
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 is fully integrated with OSGi
but still can be used as a standard Java library.
- Javolution can be either a Pure
Java Solution or a Pure Native Solution (C++ mirror),
small (less than 400 KBytes jar) and fully produced through maven (Java and C++).
|
Coming soon (end of June) Java &
C++
v7.0 on Maven Central!
|
|
The simplest way to use Javolution is through Maven
with the following dependency in your POM.xml
<dependency>
<groupId>org.javolution</groupId>
<artifactId>javolution</artifactId>
<version>7.0.0</version>
</dependency>
The Javolution project is currently being migrated to GitHub
in the form of three sub-projects (Java, C++ mirror and C++ Test/Benchmark). The C++ mirror library is a static library
which can be install/deployed
using the Maven Native Plugin
(Visual C++ and Linux platform supported).
|
The standard Java distribution is an OSGi bundle
which can also be used as standalone Java library. The C++ distribution includes a port of standard Java classes, Javolution
classes, OSGi and JUnit. Below
is the table of correspondance between the Java packages and Javolution C++ namespaces.
|
Java Packages
|
C++ Namespace
|
C++ Port Comments/Limitations |
java.lang
|
java::lang |
Includes Thread, Class<T>, Enum<T> etc.
|
org.javolution
|
org::javolution |
Holds Javolution classes: FastMap<T>, FastTable<T>, FastSet<T> etc |
org.osgi
|
org::osgi |
OSGi Support.
|
junit.framework
|
junit::framework |
JUnit 3.8 port (public domain) |
Developers may download
the cpp-test project which illustrates the use of OSGi and JUnit in C++. |
Runtime
Environment: Any (Android, J2SE, Native Windows/Linux)
Compilers: All (including Visual C++, GCC)
Build tool: Maven
OpenCL Binding: JavaCL
Issues Tracking: GitHub Issue
Style Guide:
Coding Standard Addendum.
Preferred Environment:
Eclipse (Import Project from Git, e.g.
https://github.com/javolution/javolution ).
|
 |
|
|
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.
Known projects having a C++ port of their Java library or specifications based on Javolution:
- OSGi - Included in Javolution core distribution
- JUnit - Included in Javolution core distribution
(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="http://javolution.org/css/img/javolution.png"></a>); this is of course
purely optional. |
 |
|
|
- July 2nd, 2017: Javolution 7.0 (maven central)
FractalArray/FastTable: insertion/removal in O(log(n)) instead of O(n) for ArrayList
SparseArray/FastMap/FastSet: insertion/removal in O(1) instead of O(Log(n)) for SortedMap
- March 19, 2017: Javolution C++ 7.0
Our initial benchmark
shows a 30x speed improvement for "value-type" objects (immutable such as Double,
Integer, Complex numbers).
We are now on GitHub
- December 22nd, 2013: Javolution 6.1
Support for GPU accelerated high precisions scientific computing algorithms/applications
(ComputeContext).
Implementation based on JavaCL
(if random crash on Linux, follow this
link).
- August 18, 2013: Javolution 6.0
Includes fractal classes, Java 8 support (collections), real-time annotations,
OSGi pluggable contexts, perfometer, mirror C++ library, etc.
Most backlog issues have been fixed !
- May 6, 2007: Javolution 5.0
Deprecated release.
- September 18, 2006: Javolution 4.0
Classes renamed as per coding standard (e.g. XmlFormat => XMLFormat)
- March 3, 2005: Javolution 3.0
Introduction to context programming.
- October 4, 2004: Javolution 1.0
Spin-off of Java Addition
to Default Environment [1.0.0]
|
|
 |