Adding real-time capabilities to Java

Instead, Java requires all constant identifiers and functions (methods) to be encapsulated within class declarations. Java provides standardized support for multiple threads (lightweight tasks) and automatic garbage collection of dynamically allocated memory. Further, Java fully specifies the behavior of every operator on every type, unlike C and C++ which leave many behaviors implementation-dependent. These changes were designed to improve software scalability, reduce software development and maintenance costs, and to achieve full portability of Java software. Anecdotal evidence suggests that many former C and C++ programmers have enthusiastically welcomed these language improvements. One distinguishing characteristic of Java is its execution model. Java programs are first translated into a fully portable standard bytecode representation. The bytecode is then available for execution in any environment that provides support for a Java virtual machine. A Java virtual machine is simply a system of software that understands and executes the standard Java bytecode representation. All major operating systems now support execution of Java programs, including Windows 95, NT, and CE, Solaris, HPUX, IRIX, AIW, and MacOS. To prevent viruses from being introduced by a foreign Java bytecode program, the Java virtual machine includes a Java bytecode analyzer that verifies the bytecode but does not contain requests that would compromise the local system. By convention, this bytecode analyzer is applied to every Java program before it is executed. Bytecode analysis is combined with optional runAdding Real-Time Capabilities to Java