Javolution is a real-time library aiming to make Java or Java-Like/C++ applications faster and more time predictable. Indeed, time-predictability can easily be ruined by the use of the standard library (lazy initialization, array resizing, etc.) which is not acceptable for safety-critical systems. The open source Javolution library addresses these concerns for the Java platform and native applications. It provides numerous high-performance classes and utilities useful to non real-time applications as well. Such as:
- Collections classes, supporting custom views, closure-based iterations, map-reduce paradigm, parallel computing, etc.
- Worst-case execution time behavior documented using Realtime Java annotations
- Fractal structures to maintain high-performance regardless of the size of the data
- OSGi contexts allowing cross cutting concerns (concurrency, logging, security, ...) to be addressed at run-time through OSGi published services without polluting the application code (separation of concerns)
- Algorithmic parallel computing support with concurrent contexts and general-purpose computing on graphics processing units with compute context
- Struct/Union base classes for direct interfacing with native applications
- Perfometer utility class to measure worst-case execution time with high precision
- XML Marshalling/unmarshalling facility capable of direct serialization/deserialization of existing classes (no intermediate data structure required)
- StAX-like XML reader/writer which does not require object creation (such as String) and consequently faster than standard StAX
- Simple yet powerful configuration management for your application.
Since version 6.0, Javolution makes it easy to port any Java source code to C++ for cross-platform native compilation. OSGi and JUnit have been ported and are included with the core C++ distribution.
All modules (Java and native) are built using maven. Javolution can be used either as an OSGi bundle (preferred) or as a standalone library.
External links
- Javolution website
- Fully Time Deterministic Java – AIAA Space 2007 Conference
- Validating Java for Safety-Critical Applications – AIAA Space 2005 Conference
- Turbo-Charging Java for Real-Time Applications Archived 2009-02-05 at the Wayback Machine – Java Developer Journal Article
References
Fully Time Deterministic Java http://arc.aiaa.org/doi/abs/10.2514/6.2007-6184 ↩
javolution.util http://javolution.org/apidocs/javolution/util/package-summary.html#package_description ↩
Collection Views http://javolution.org/apidocs/javolution/util/FastCollection.html ↩
Realtime Annotation http://javolution.org/apidocs/javolution/lang/Realtime.html ↩
Fractal Table http://javolution.org/apidocs/javolution/util/FastTable.html ↩
OSGi Contexts http://javolution.org/apidocs/javolution/context/package-summary.html#package_description ↩
Concurrent Contexts http://javolution.org/apidocs/javolution/context/ConcurrentContext.html ↩
"Compute Contexts". Archived from the original on 2013-12-29. Retrieved 2013-12-27. https://web.archive.org/web/20131229110939/http://javolution.org/apidocs/javolution/context/ComputeContext.html ↩
Struct/Union http://javolution.org/apidocs/javolution/io/Struct.html ↩
Perfometer Utility[permanent dead link] http://javolution.org/apidocs/javolution/testing/Perfometer.html ↩
XML Marshalling/unmarshalling Facility http://javolution.org/apidocs/javolution/xml/package-summary.html#package_description ↩
StAX-Like Readers/Writers http://javolution.org/apidocs/javolution/xml/stream/package-summary.html#package_description ↩
Javolution Configuration Management http://javolution.org/apidocs/javolution/lang/Configurable.html ↩
"Javolution C++ Overview" (PDF). Archived from the original (PDF) on 2013-10-01. Retrieved 2013-08-19. https://web.archive.org/web/20131001181951/http://javolution.org/src/site/doc/Javolution_Cpp_Overview.pdf ↩
Javolution Usage Overview http://javolution.org/apidocs/overview-summary.html#overview_description ↩