Java is quickly becoming the most widely adopted software technology in computer history. At its current growth rate, by the year 2000 more installed platforms will be running Java than all versions of Microsoft Windows. The number of Java programs is growing at a corresponding pace, as its `Write Once, Run Anywhere’ promise entices developers to expand into enterprise applications.
A whole new group of embedded devices is being developed around Java processors (JavaChips) by companies like Nortel, Sun and NEC. With the infiltration of Java and the Internet, the embedded market is now witnessing the creation of new `smart’ devices that can communicate with one another over a network. These embedded products – web TVs, smart phones, and network computers – are taking advantage of the platform- and location-independence of Java.
As with traditional embedded devices, cost and size are key. Also, designers must deal with issues like bandwidth, network security, performance, power management, GUIs and interoperability. All these are important to industrial control.
Developers of embedded software are discovering that Java provides development standards where currently none exist. Its platform independence has important implications too, particularly where re-usable code is an advantage. It eliminates issues such as users with different software versions, complex upgrade procedures and software patches.
But what is Java? It’s a small, reliable, portable, distributed, real time operating environment for all networked devices and embedded systems. Software developers writing in Java can ignore the target processor and use an open standard to write anything. Java is robust and requires very little memory. It includes exception handling and has multi-threading and security features.
Key to Java is the role of the Java Virtual Machine (JVM), which is required to run any Java application. This is a clearly defined set of rules and resources which every Java application needs to run. The JVM spec includes the instruction set, the data types, an operand stack, a constant pool, a method area and a garbage heap. These resources provide the byte-code engine to process the Java byte-code. It really is a `virtual’ processor – software pretending to be hardware, but including features normally implemented by a kernel.
Most of Java’s features already exist in combinations of languages like C++ and Smalltalk. But they were not all available in one environment. Now, platform independence and the object-orientated nature of Java makes reusing code feasible, and cuts development time. For example, 3SOFT claims to have reduced debugging time by 50% using Java.
Connectivity is a vital part of modern control. Sun’s philosophy is that real computing power comes with the network. This power can be, and is, realised with other operating systems and languages – but Java was designed to network with devices of every performance level. It’s a standard with no forced upgrade path; it will be added to, but the basics won’t change. The structure allows for progress and additional functionality.
Industrial networks include sensors and actuators, the infrastructure (routers, hubs, etc) and the front end (operator consoles, database servers). Within this framework, the function of each node is defined through programs distributed or downloaded over the network.
If all devices were designed to operate Java code it would mean a new level of flexibility being added to every device. The products become `future proof’ – as resident code in embedded applications can be upgraded over the network, modifying the function to suit new applications or new legislation. For example, because the devices can be reconfigured, collecting and logging data could be done by a sensor which was initially set up to operate simply as a detector.
Not every device on a network is industrial – and Java allows seamless integration with other Java-based appliances. This makes systems more reliable, faster to produce and lower cost. Many semiconductor companies have committed to deliver a variety of Java hardware for applications that include handheld devices and desktop stations – and there are opportunities to take off-the-shelf silicon and incorporate it in control equipment. Sun is encouraging OEM developers to adopt Java.
While the success of the JavaChip family is directly linked to the success of Java technology, given the tremendous ramp-up around this technology in the short time since its introduction, there is no reason to believe that it will do anything but prevail.