Write Now, Run Anytime
PraxisCORE is a modular JVM runtime for cyberphysical programming, supporting real-time coding of real-time systems. It is the heart of PraxisLIVE. With a distributed forest-of-actors architecture, runtime code changes and comprehensive introspection, PraxisCORE brings aspects of Erlang, Smalltalk and Extempore into the Java world ... a powerful platform for media processing, data visualisation, sensors, robotics, IoT, and lots more!
A forest of actors
PraxisCORE is based on the actor model, adapted to the needs of real-time media and data processing. Components (actors) exist in an unlimited number of trees, communicating via asynchronous lock-free messages. In addition, PraxisCORE supports lightweight synchronous dataflow between siblings for real-time data processing. Each tree root handles message dispatch and scheduling.
Real-time code changes
PraxisCORE is designed from the ground up to support runtime code changes. Asynchronous code compilation and introspection, with carefully designed state retention, allows for behaviour to be swapped atomically into a running system without pauses or "glitches". PraxisCORE treats code as data, allowing for powerful real-time meta-programming capabilities.
Distributed by design
Trees can be easily distributed across multiple processes or a network without code changes. Service discovery and resource loading are integrated into the runtime. Timing sensitive tasks can be run in separate VM's with optimum memory configuration. Projects on small devices (like the Pi) can be developed remotely or run in a cluster.
Modular runtime
PraxisCORE is highly modular - use just the core actor system, or bring in as many modules from the standard PraxisLIVE distribution as you need. Available pre-existing modules include support for audio and video processing, live data visualisation, working with TinkerForge sensors and electronics, and controlling projects via custom GUIs, MIDI and OSC.
Individual components can be easily exported in plain text, shared and reused across projects. A growing library of pre-built custom components is available to use, alongside those which ship with the runtime.
Powerful IDE
While PraxisCORE is a Java API, the recommended way to build projects is inside PraxisLIVE. Built on top of the Apache NetBeans IDE, the PraxisLIVE IDE inherits world-class code editing functionality. On top of that it provides live visualisation and editing of actor graphs; and live introspection and editing of properties.