SystemJ is a system-level design and programming language which brings concurrency to the doorstep of millions of program and software systems developers. The language enables effortless and safe use of concurrency in design of complex software systems, while removing the need of dealing with delicate details of operating systems and low-level mechanisms for synchronization and communication of concurrent behaviors. As such, it promotes top-down decomposition of software systems into smaller and easier understandable and manageable units, which re then, thanks to seamless concurrency, integrated bottom-up into the final system.
By allowing system designers and programmers to use asynchronous and synchronous concurrency on specification level, and letting powerful compiler technology to generate safe code for a wide range of execution platforms, it raises horizons for the development of new applications for systems which range from powerful multicore servers and workstations, via common desktops and laptops, to the variety of mobile platforms and even embedded systems. Same SystemJ programs can be compiled for different targets with practically no change.
Besides powerful constructs for description of concurrency, SystemJ allows full use of Java for programming usual sequential behaviors, describe data types and objects and their transformations, thus making it particularly appealing to Java programmers. This way, SystemJ gives a new dimension and even new life to Java.
Novice to the concurrent world can master the language and apply the concepts in matter of few weeks. SystemJ Technologies provides the training for those who need in-depth expertise and want to step up on the learning curve.
SystemJ allows composition of software behaviors (usual programs) into extremely safe synchronous concurrent groups or asynchronous groups which execute at their own speed in very natural and easy way. Besides concurrency, the language provides rich set of mechanisms and statements to describe reactivity between concurrent parts of SystemJ program as well as between program and its environment (e.g. man machine interface, networks, physical world represented through simple hardware interfaces).
Moreover, multiple SystemJ programs can be easily composed into bigger software systems and then deployed on centralized or distributed execution platforms, thus allowing development of distributed computing applications using only one language.
The language has been tried on a wide range of applications such as distributed surveillance systems, collaborative computing applications, networked computer games, complex systems simulations, distributed applications that involve mobile computers and phones, implementation of middleware without using heavy specialized products, as well as individual embedded systems or networks that include sensor networks.
The condition to run SystemJ in its current implementation is the availability of Java Virtual Machine or any smaller variation. The language is actually portable to all types of Java virtual machines which include J2ME and Android’s Dalvik. SystemJ does not require an operating system to run, but typically runs on any of the common Windows, Linux and MacOS platforms in order to use rich set of support for devices and networking operating systems offer.
SystemJ comes with a suite of tools within Eclipse IDE, which include selection of compilers and debuggers depending on need of the system developers. An integrated development environment, SystemJ Developer is provided within Eclipse IDE and provides for further extensions which are in the development.
In order to illustrate the use of language we provide a number of initial demo applications with their corresponding source code. Programmers are encouraged to use this code and try their own ways of implementing complex behaviors using powerful mechanisms of SystemJ. These examples use desktop version of SystemJ compiler that targets full JVM.
In order to learn more you can proceed here.