| By Ajit Sagar | Article Rating: |
|
| September 1, 1998 12:00 AM EDT | Reads: |
11,097 |
This month's discussion warrants a brisk walk down technological memory lane to examine Java's humble beginnings. In its original incarnation Java, then called Oak, was a language based on some of the features and syntax provided by C++. Oak was the result of Sun Microsystem's mission to find a way for consumer electronic appliances to communicate with each other. When Oak was launched, it didn't take off from the ground. Then came Mosaic, the Internet and the World Wide Web. Oak changed its name to Java, a marriage between Java and the Internet was made in enterprise heaven - and Java's exploits spread far and wide. Today Java's a language, a platform and an enterprise solution - a phenomenon.
But has Java abandoned its initial goals? Absolutely not. The language and the distributed enterprise computing solutions it provides are fast gaining market share in software for the enterprise. At the same time, Java has also adhered to its original objective of providing a ubiquitous platform and language for communication between consumer devices. Java supports APIs and products for electronic consumer device communications by providing:
What makes Java the right choice for the consumer device communications market? Well, Java is inherently distributed, has rich support for networking and multithreading, promises the much desired "platform independence," and allows development in a common high-level object-oriented environment.
This month we'll peer into the Cosmic Cup's crystal ball to identify APIs and products defined by Sun that will further the cause of Java for consumer devices. Please note that while there's a wide range of embedded products and APIs available from several vendors, this month's column focuses on those provided by Sun because they're base products closely linked to the APIs defined under the scope of the Java Platform.
Consumer Devices APIs and
Products
The APIs and products described below support the penetration of Java into the consumer device market. Figure 1 illustrates these products and APIs, and the consumer devices they support; Table 1 provides brief descriptions. The next section discusses the following consumer device products and APIs:
JavaOS
JavaOS is a distributed platform that's optimized to run on a variety of computing and consumer platforms without requiring the presence of a host operating system. JavaOS can directly execute the Java Virtual Machine (JVM) across a variety of hardware products, devices and CPUs.
Currently JavaOS is designed to support three industry segments:
JavaCard
JavaCard, the JAE with the smallest footprint offered by Sun, enables Java technology to run on smart cards and other devices with limited memory. The JavaCard API allows platform independence between different JavaCard-enabled platforms. The API defines the calling conventions by which an applet accesses the JavaCard runtime environment and native services.
JavaCard consists of a JVM, an API for smart cards and a framework that provides system services for smart-card applications. The minimum system requirement is 16 KB of ROM, 8 KB of EEPROM and 256 bytes of RAM.
The JVM layer hides the manufacturer's proprietary technology with a common language and system interface. JavaCard applications are basically Java applets. Multiple applets may reside on a single smart card.
The JavaCard Application Environment (JCAE) is licensed on an OEM basis to smart-card manufacturers. Some vendors have announced the availability of JCAE, and the 2.0 specification was recently released.
EmbeddedJava
EmbeddedJava is a JAE designed specifically for severely resource-constrained environments in the embedded device market. It may be used to develop a variety of embedded products.
EmbeddedJava applications run on top of an RTOS dedicated to the embedded device for which the product is being developed. Such applications may be ported to other RTOSs. These products can scale from dedicated applications limited to a device's ROM to complex, network-aware devices. Some products that can be developed using this JAE are mobile phones, pagers, process control, instrumentation, office peripherals, and networking routers and switches.
The API consists of a collection of configurable Java classes that have been reimplemented for memory-constrained dedicated embedded devices. The Java classes offered by EmbeddedJava may be categorized into two groups:
1. APIs derived from the core JDK classes, usually supplied directly by Sun, or via the device manufacturer or ISV. These classes include those dedicated to specific applications as well as JDK classes that are optimized to run in memory-constrained environments.
2. Hardware-specific classes, usually supplied by the hardware vendor
In addition to the API, the Embedded-Java JAE consists of a JVM (supplied by Sun or a reseller), an RTOS (supplied by a third-party RTOS vendor) and device hardware (supplied by the device manufacturer).
The EmbeddedJava specification is open for public review.
PersonalJava
PersonalJava is a JAE specifically designed for building applications for network-aware consumer devices such as mobile handheld devices, set-top boxes, game consoles and smart phones. It consists of a JVM and a subset of the JDK APIs including core and optional APIs as well as the class libraries. These APIs are supplemented by a small number of new APIs designed to meet the needs of network-embedded applications. PersonalJava shares a common core set of APIs with the EmbeddedJava API. It also supports the environment to run Java applets.
The minimum system requirements for a device running PersonalJava are a 32-bit CPU with 50+ MHz of memory, 2 MB of ROM, 512 KB of RAM, keyboard or alternate input devices and a mechanism for downloading applets.
PersonalJava is commercially available as version 2.0.
Personal WebAccess
I discussed Personal WebAccess, a customizable, compact Web browser for devices running the PersonalJava platform, in last month's column and therefore won't repeat myself here.
Java Embedded Server
Java Embedded Server (also known as Project NanoServer) is a new type of Web server suited to the network-aware consumer device market. It runs on the device itself and manages its services.
Java Embedded Server targets embedded devices, which have a wide range of use and span several industry segments. Smaller devices like PDAs, cell and Web phones, routers, switches and set-top boxes can run the Java Embedded Server. At the same time, the server is at home on televisions, automobiles and manufacturing equipment as well as on office equipment like copiers and fax machines.
The server is dynamic in nature. It can be configured and customized at real time. Services can be added and removed, built new and even downloaded from a remote location on the network. It consists of two parts: 1. The JavaServer engine: Comprises APIs for life-cycle management of network-pluggable devices and applications. With its very small footprint (100 KB) it provides installation, versioning, content management, recovery and service, for example. 2. JavaServer services: Invoked and managed by the Java Embedded Server, they include HTTP, SNMP, logging, threading, remote administration, RMI and servlet support. They also include services like Mail and Fax that may be built on top of the JavaServer services.
The Java Embedded Server is in its beta stage and its current working name is Project NanoServer.
For Details . . .
Links for detailed information on these products may be obtained from Sun's Java Web site (http://java.sun.com/products).
This article concludes the whirlwind tour of JavaSoft's APIs and products that are defined under the scope of the Java Platform. In the last five articles our Cosmic Cup has provided an eagle's-eye view of the Java world. This in no way completes the APIs and products defined for Java. Even as I write, new APIs and products are being defined under the Java Platform. And several other sectors in the industry are also involved in defining Java, both the language and the platform.
In future articles we'll examine the APIs and products developed by other industry players involved in the Java Platform's evolution. We'll also take a closer look at the individual pieces of the Platform.
Cosmic Reflections
The volume and maturity of the hardware environment far exceeds the progress made by software solutions. Giving something away for free doesn't earn the big bucks for any company. However, giving a language away free as a means to an end will eventually pay handsomely. The consumer devices market is massive in terms of sheer volume. In this new computing paradigm, combining the distributed networking facilities and platform independence offered by Java with the embedded chip market is sure to lead to a revolution in the enterprise.
Published September 1, 1998 Reads 11,097
Copyright © 1998 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Ajit Sagar
Ajit Sagar is a principal architect with Infosys Technologies, Ltd., a global consulting and IT services company. Ajit has been working with Java since 1997, and has more than 15 years experience in the IT industry. During this tenure, he's been a programmer, lead architect, director of engineering, and product manager for companies from 15 to 25,000 people in size. Ajit has served as JDJ's J2EE editor, was the founding editor of XML Journal, and has been a frequent speaker at SYS-CON's Web Services Edge series of conferences, JavaOne, and international conference. He has published more than 125 articles.
- Kindle 2 vs Nook
- Why IBM’s Server Chief Got Busted
- Is Cloud Computing Like Teenage Sex?
- Industry Experts Discuss the State of Cloud Computing
- Performance Tuning Essentials for Java
- Confessions of a Ulitzer Addict
- Tactical Cloud Computing Panel at 1st Annual GovIT Expo
- It's the Java vs. C++ Shootout Revisited!
- Cloud Computing Can Revitalize Your Career as Software Developer
- IBM Could "Reinvent" Java: Mills
- Oracle & Cloud Computing: Exclusive Q&A with SVP Richard Sarwal
- A Brief History of Cloud Computing
- Kindle 2 vs Nook
- Cloud CEOs, CTOs & SVPs to Speak at 4th International Cloud Computing Expo
- Why IBM’s Server Chief Got Busted
- Is Cloud Computing Like Teenage Sex?
- Industry Experts Discuss the State of Cloud Computing
- Performance Tuning Essentials for Java
- The Difference Between Web Hosting and Cloud Computing
- Cloud Computing Expo: Exclusive Q&A with Yahoo! SVP Cloud Computing
- Ajax in RichFaces 3.3, JSF 2 and RichFaces 4
- Confessions of a Ulitzer Addict
- My Thoughts on Ulitzer
- Tactical Cloud Computing Panel at 1st Annual GovIT Expo
- A Cup of AJAX? Nay, Just Regular Java Please
- Java Developer's Journal Exclusive: 2006 "JDJ Editors' Choice" Awards
- The i-Technology Right Stuff
- JavaServer Faces (JSF) vs Struts
- Rich Internet Applications with Adobe Flex 2 and Java
- Java vs C++ "Shootout" Revisited
- Bean-Managed Persistence Using a Proxy List
- Reporting Made Easy with JasperReports and Hibernate
- Creating a Pet Store Application with JavaServer Faces, Spring, and Hibernate
- What's New in Eclipse?
- Why Do 'Cool Kids' Choose Ruby or PHP to Build Websites Instead of Java?
- i-Technology Predictions for 2007: Where's It All Headed?





































