About Java, virtual machines and Baja
Much of the software is written in Java, which means that it is platform independent.
The software runs on embedded controllers using the QNX operating system and the IBM J9 Java Virtual Machine (JVM) and runs on Microsoft Windows desktop operating system platforms, as well as Linux and Solaris using the HotSpot JVM.
Virtual machine
It is possible to compile code once and run it on any platform due to a layer of software that exists between the machine and the software called the Java virtual machine (JVM). The framework uses the Java VM as a common runtime environment across various operating systems and hardware platforms. The core framework scales from small embedded controllers to high end servers. The framework runtime is targeted at Java 8 Standard Edition, Compact 3 profile for runtime components. The user interface toolkit and programming tools are targeted at Java 8 Standard Edition.
There are a number of different virtual machines for different platforms on which the NRE is running, but the NRE itself, and all of its modules, are the same regardless of platform. The VM is responsible for defining how the software works with a given set of hardware-how it talks to a LonWorks adapter, how it talks to the communications port, how it interacts with the operating system, among other tasks.
Baja
The Baja (Building Automation Java Architecture) core framework is designed to be published as an open standard. This standard is being developed through Sun's Java Community Process as JSR 60. This JSR is still an ongoing effort, but it is important to understand the distinction between Baja and the Niagara Frame work®.
Fundamentally Baja is an open specification and the Niagara Framework is an implementation of that specification. As a specification, Baja is not a set of software, but rather purely a set of documentation.
The Baja specification will include:
Standards for how Baja software modules are packaged
XML schema for the component model;
The component model and its APIs
Historical database components and APIs
Alarming components and APIs
Control logic components and APIs
Scheduling components and APIs
BACnet driver components and APIs
LonWorks driver components and APIs
Over time many more specifications for features will be added to Baja. But what is important to remember is that Baja is only a specification. The framework is an implementation of that specification. Furthermore you will find a vast number of features in the framework that are not included under the Baja umbrella. In this respect the framework provides a superset of the Baja features.