FedEx Ship, free from Federal Express Corp., is an excellent program. When I click on the "ship" icon and type a few letters of the recipient's name, FedEx Ship fills in the rest of the address. Then I click the "ship" button, and the program calls the FedEx server through my computer's modem. It logs in my account number and the airbill address. It downloads a unique airbill number, and tells the server to email the recipient that my package is coming. Then it logs off and prints both the completed airbill and a receipt off my printer. I drop the package off later in a FedEx box.
Because FedEx produced a new version of the software that is Y2K compliant, I needed to replace the software I had. I could have upgraded the software without deleting the existing version on my computer. Because my computer runs on Microsoft Windows NT 4 Workstation (Service Pack 3), overwriting the existing version would have saved me the trouble of deleting a mess of DLL, INF, and INI files splattered all over my hard drive, plus deleting miscellaneous device drivers and subdirectories. However, a complete uninstall has always proved prudent when upgrading software.
FedEx's "fax-back" uninstall instructions left out a particularly crucial step about editing the NT registry. This was caught during my first call to tech support, before I had even touched my computer. The actual install was uneventful until FedEx Ship registered with the FedEx server. Suffice to say, it didn't work. This became obvious the next day, when I tried to send a "dummy" package.
After about two hours on the phone with a second-level tech support representative, the software worked like a charm. All in all, this represents a typical install of a Windows-based application.
Jini (pronounced "genie") from Sun Microsystems Inc. (Palo Alto, CA) wants to change all that. It intends to eliminate those very hassles in dynamic linking libraries (DLLs), device drives, and configuration, regardless of computerized device, whether personal computer (PC) or personal digital assistant (PDA), and regardless of software, whether FedEx's shipping program, production control applications, or enterprise resource planning (ERP) systems.
Here's the Problem
Jini shifts computing away from the current centralized, monolithic approach to information technology (IT), where computer services (including data acquisition, number crunching, image display, document printing, and data communications) are managed and run from a single point, usually the operating system. That the operating system could be a single point of failure is also what Jini is trying to avoid.
Jini could make large portions of today's operating systems obsolete, which is one reason why Microsoft does not support "100% Pure Java." In fact, both Java and Jini are very much not PC-centric.
Jini distributes computer services throughout a network of compute servers and clients, and in the process, it creates truly dynamic distributed computing. In the Jini-enabled world, computers, sensors, controllers, peripherals, hard drives, applications, data, people—you name it—are all represented by software objects. These objects, which contain data and code, can move anywhere in a data network, talk to other objects on the network, and use other objects to perform a task. This occurs without the Internet Protocol (IP) address settings, scripts, modem configurations, human/machine interface drivers, OLE for Process Control (OPC) drivers, and other device drivers that accompany conventional desktop operating systems in manufacturing control applications.
|The Jini infrastructure addresses how devices and applications connect to and register with the network. Once plugged into a network, devices and applications first need to "discover" the network and have the network discover the device or application. Once discovered, the devices and applications "join" the network by uploading their capabilities. The location and capabilities of the devices and applications are kept by the Lookup Service. Devices and applications connected throughout the network negotiate for each other's capabilities through JavaSpaces and other Jini services.|
In short, Jini is the "glue" to make all these objects—and the devices and applications they represent—accessible, available, and interlocked. This glue performs dynamically and depending on the user's—really, the object's—needs.
"The philosophical shift between Jini and other networking protocols is that instead of defining capabilities by device, you're defining it by the function of the device," explains Jim Redman, president of ErgoTech (Los Alamos, NM).
Jini is Java (actually an application of Java technology), which itself is a programming environment from Sun. To keep the technologies straight, think of Java as a computer platform strategy. Jini is a network strategy. Java promotes "write once, run anywhere." Jini promotes easy network connections and object linking. "Jini's strength is in `spontaneous networking,' a term from Sun," explains Jeff Lund, director of Marketing for Echelon Corp. (Palo Alto, CA). "Jini is not designed for long-lived networks; it's for networks where things come and go." For example, maintenance technicians in an automotive plant may carry a single Jini-enabled handheld tool that can immediately link to and diagnose whatever machine the technician walks up to—and the next machine the technician walks up to, and the machine after that.
Jini code is very small Java code. The core of Jini is just 48 kilobytes of code, which runs on top of Java virtual machines (JVMs). Jini will run on any computer or semi-intelligent device that can run a JVM. This includes virtually any device with a microprocessor chip and some random access memory.
This functionality enables the Holy Grail of IT: "plug-and-play." Jini lets people use networked devices and services as simply as using a phone today. "Plug-and-work via a network dialtone," according to Kevyn Renner, Sun's group manager for Industrial Automation Market Development.
To make this happen is a Jini process called Discovery and Join. When a Jini device is first plugged into a network, it announces its presence by broadcasting a message that contains a reference back to itself. This message is received on the network by a Lookup Service, which is both a switchboard and a bulletin board for all Jini devices and applications (capabilities). The Lookup Server catalogs the new device and application objects, as well as code or code pointers for those applications. The Lookup Server also identifies itself to the Jini device.
Other Jini devices and applications check the Lookup Service for the list of devices and applications they can use. The devices and applications then negotiate for the use of the devices and applications listed by the Lookup Service. These negotiations are defined by another Sun specification called JavaSpaces. JavaSpaces is a mix of matchmaker, traffic cop, and inventory clerk; it allocates the distribution of objects to those devices and applications that request and need those objects. JavaSpaces, as well as Jini in general, relies on the Java Remote Method Invocation (RMI). RMI is a set of services for Java objects that lets them interact with each other over a network.
The object-oriented nature of Jini ensures that each device and application provides everything needed to interact with it, regardless of where the device or application exists on the network. Consequently, no central repository of drivers exists to make applications and devices work. All that's needed are the Jini objects and the network.
Consider the Alternative
Jini is Helping Distributed Computing Come Out of the Bottle
Sun is not the only IT vendor trying to make truly distributed computing possible. Microsoft is working on a Windows-based distributed operating system called Millennium. Hewlett-Packard's JetSend is an information exchange protocol for integrating fixed-function and programmable peripherals (such as printers fax/photocopy/printer devices). IBM has a project called T Space, a network communication buffer with database capabilities. Lucent Technologies has Inferno, a small networked operating system designed for a single device in a networked environment. Inferno devices can communicate and exchange data with other Inferno devices on a network, but it can't distribute the application processing across multiple machines. For that there is Parallel Virtual Machine (PVM) from Oak Ridge National Laboratory. PVM is a set of programming libraries that let independent computers of different pedigrees share application processing.
For more information:
Sun expects Jini to solve a bunch of problems associated with IT today:
- No configuration hassles or device drivers. Devices simply announce themselves and their capabilities (service). No longer will users and system administrators have to go through "DLL Hell," as Renner aptly calls it, when installing and operating devices and applications. Microsoft's Common Object Model (COM) environment does not have self-describing objects. Instead, the objects in COM contain pointers, which point to registers, tables, and so on. Says Renner, "That's okay if you have a desktop system, but when you have an enterprise with 5,000 desktops around the world, these pointers can get confused rushing around looking for the information they require each time you want to use that object."
- Devices can be associated with people, places, etc. Seamless access to local versus remote devices. In the Jini world, you can print a hardcopy of a bill of materials (BOM) on "Joe's Printer," regardless of where Joe is and what kind of printer he has. Or regardless of the source of that BOM. This capability, coupled with the associated promise to reduce the complexities in data network communications and connections, is crucial as enterprises— single site and global—contend with a growing proliferation of computing devices, including those on the plant floor, such as programmable logic controllers (PLCs), "soft PLCs," embedded controllers, and smart sensors.
- Everyone has access to the same information and resources, which means they have a unified and consistent view of their immediate network. Such access can help make "follow-the-sun" engineering efforts possible.
- Jini invokes dynamic distributed computing. Jini not only moves data from one compute device to another, it moves code. If your PDA does not have the capability to run an advanced planning algorithm, you can direct the Java-based algorithm to run on any other Jini device on the network with the processing power to run the algorithm.
- Resources are available when needed. Conversely, resources can leave the network without affecting other devices and applications on the network. This generally doesn't happen today. If a networked controller suddenly goes off-line, all the applications accessing that controller need to update their communications settings. Jini has the inherent capability to dynamically change as the data network changes. This enables applications to automatically recognize a change in a data stream and respond accordingly, which may be by gathering the needed data from an alternative source on the network.
Best of all, Jini benefits imply that the total cost of ownership of a computer system will decline as fewer system administrators are needed.
Jini is still mostly in the "demo phase." To date, Sun can plug various devices, such as printers and cameras, into local area networks—without the need for device drivers. These devices can then be controlled from an icon that shows up on any monitor attached to the same network.
Generally, when Sun gives examples of Jini usage, it talks more about consumer electronics and office automation than about manufacturing applications. Regardless of the industry, for Jini to succeed, the underlying protocols and infrastructures must be widely accepted by the marketplace. To make that happen, Jini technology source code is freely available through the Sun Community Source License, which is akin to the open-source software approach of Linux. This approach lets users hack, develop, tweak, modify, and otherwise improve the code. There is no cost for the non-commercial use of Jini, and it coexists with existing licenses.
A Malaysian software company, Datek Sdn. Bhd, has announced a fully integrated, Java/Jini-based, ERP system. Called BusinessTone, this object-oriented system runs on "ultra-thin clients," where the "network is the application" and business applications are essentially extensions of the telephone's dial tone.
Also, Echelon plans to connect its LonWorks networking system to Jini. This not only lets LonWorks-based devices and applications interact with control systems and devices from remote or mobile locations, according to Lund, "it will also let LonWorks control devices access a wide variety of Jini technology-based digital network services."