Since its creation in the early 1990s, Java has spawned its own little universe, complete with thousands of programmers who work with it every day and a growing list of companies that rely on it for their day-to-day business needs.
Java was created by a small group of Sun programmers after company executives decided to diversify and start producing devices for the consumer electronics market. Although the device that was created failed to catch on, the new programming language that ran the device eventually became the Java used today.
What It Does
Java is designed to be operating-system independent. So if a program is written for one OS (for instance, UNIX), the same program can be run without any changes on Windows 95. But how does it do this? Vijay Sarathy, J2EE (Java 2 enterprise edition) connector marketing manager for Sun, explains that basically a processor takes instructions in assembly language. These functions are at the most basic level of computing, moving bits and bytes and enabling the computing device to do larger tasks.
Programming languages such as C or C++ need compilers to translate their code to the simpler assembly level instructions. This allows programmers to write instructions at a higher level and then change them after the fact. The problem is that a different compiler is used for each operating system. So compiler A converts C programs into instructions for an x86 (Intel) machine, for instance. But if you want to create a similar program for a Macintosh, a different compiler B is needed.
This is where Java comes in handy.
"With the Java programming language, you can write once, run anywhere," says Sarathy. "This means that when you compile your program, you don't generate instructions for one specific platform. Instead, you generate Java bytecodes, which are instructions for the Java virtual machine (Java VM). Any platform that has the Java VM can understand these bytecodes. This makes Java platform-independent both at the source-code level and at the binary level."
Virtual machines are also found in Web browsers, allowing the browser to act like a small computer and run Java programs. Java content on the Web helps spice up the Internet experience by allowing for animated and interactive content.
Java programs can also be written to run in a stand-alone fashion. In this scenario, a virtual machine existing on the user's computer would run the Java program. "Many people who haven't had much time to interact with Java think of it as a browser language, but there's this whole world of it just being another programming language," says Sarathy.
Sun has grouped its Java technologies into three editions: micro (J2ME), standard (J2SE) and enterprise (J2EE). Each edition has its own developer tools and virtual machine that can be used with different products.
J2ME addresses the consumer space, which includes a range of small devices such as smart cards, cell phones and PDAs. J2ME is a scaled-down version of the Java platform that includes APIs (application programming interfaces), which allow Java-based programs to run the same way across different operating systems.
On the enterprise side, Java comes in the form of J2EE. J2EE is a framework that allows for standardization of back-end server functions. For example, when a user submits a command to view the Amazon.com site, Amazon's servers have to receive the command on the back end, search the company's database and basically do a lot of behind-the-scenes processing work. Because many companies have agreed to follow the J2EE specifications, those receive-and-submit commands will work across any J2EE-compliant hardware devices, including server systems from Sun, Hewlett-Packard and many other manufacturers. "What we've done is basically standardized that whole framework on the back end. The benefit is that you can make your hardware and software choices based on your requirements," explains Sarathy.
Java in the Real World
In early June of that year, Sun hosted the 2001 JavaOne Developer Conference in San Francisco. The conference had more than 350 companies demonstrating enterprise and modern client solutions including mobile phones, smart cards and appliances powered by Java technology.
More than 3.5 million Java technology-powered wireless phones had already been shipped by midyear, and Sun predicted that the number will hit around 20 million devices by the end of 2001. J2ME customers include Motorola, Nextel and General Motors. Apple Computer and Charles Schwab are a couple on the J2EE side.
The Java universe has also spawned a bevy of smaller companies that create Java applications or extend its usability. Versatile Mobile Systems (VMS) offers Java-based software solutions in industries ranging from consumer packaged goods to logistics. The company's Mobiquity Solutions Suite employs various m-business components in a modular architecture that can be tailored to individual situations.
Centered on handheld devices, the applications include workforce and customer management, route management, sales order entry and accounts receivable. The software's architecture is designed so mobile workers can benefit immediately without a long installation period, and customers can add components as needed.
Marc Austin, Versatile's vice president of business development, says that Java's configurability is at the core of the company's solutions. "Java provides an object-oriented design and development methodology, and that's key to creating these m-business components," he says. "What those m-business components are, in Java terms, are enterprise Java beans, and those enterprise beans on the server side have beans that run on the client side."
Austin says that the Java bean configurability means less recoding, because programs can be used again and again for different applications. "When you write code in Java, you've got objects, and objects give you the ability, say for a product catalog, to write the code for the product catalog once -- and then use that multiple times. Whereas with C, you've got to rewrite the program."
Austin says many companies have related field forces, such as sales workers and delivery workers, using normally incompatible applications and hardware, which can hurt productivity. So VMS provides a comprehensive solution. "What we're doing is providing a single platform from which you can deploy solutions for all your mobile workers," he says. "And the applications, since they're written on 100 percent Java, can deploy on the operating system of your choice." VMS currently deploys its solutions on Palm OS and Pocket PC and plans to use it with handheld Linux when it becomes available.
The typical worker that uses VMS solutions is a delivery driver, says Austin. The VMS solutions enable wireless data communication between the back office and the driver, meaning his route can be changed immediately according to current customer demand. Overall, the driver is more efficient because all the information he needs is on his handheld, and the software is working behind the scenes, communicating back to the enterprise.
"It's built into the workflow of the application," says Austin, "so that when he delivers the order, he invoices the customer, collects payment, hits submit, and behind the scenes our software is now sending that invoice to the back office, so the back office has real-time visibility." The enterprise can use this to adjust its production process to conform to demand.
About the only disadvantage to working with Java, according to Austin, is that it's harder to run low-end solutions such as DOS. Java won't run on DOS because the latter doesn't have enough processing power, he says. Therefore, companies looking for a low-end, cheaper solution are better off getting a custom solution.
On the Front Lines
Reza B'Far is a consultant who works in the trenches with Java programming. Although he does research as the principal engineer for eBuilt, he still spends time coding. eBuilt creates mobile applications for its clients using a variety of programming languages, but demand for Java-based enterprise applications is growing.
B'Far points out that, because Java will work on almost any device, it allows companies to leverage the personal devices that workers already own. "Especially with mobile devices, you never know what the end user's got, so it's really important to have something that abstracts out the operating system," he says.
He also says that if a company uses a programming language other than Java to build its enterprise applications, it has to develop the application for all the different operating systems being used by its workers. "More and more we find that the clients donít want to rewrite the application over and over through its lifetime," he says. "And Java gives you a great framework for not doing that."
B'Far warns that Java is not the best choice in some nonbusiness applications, including high-end embedded systems, such as automobile or pacemaker software. Even some business applications require the power of other programming languages. "You gain performance by writing an application in C++," he says. "The reason you gain performance is you write specific to that platform, so you custom design your code. What you lose with doing that is every time there's a new platform, or every time there's a change in the platform, you have to go back and modify your code."
B'Far says Java provides cost benefits over other programming languages because of its portability across operating systems. "Obviously if you have to write two code bases, it's more expensive than if you have to write one code base. The other cost benefit is that memory management is done automatically in Java. When you write C++ or C code, you have to manage the memory manually. Not only does it cause a lot of bugs, but it also causes the development cycle to be much longer."
While eBuilt and VMS create Java applications, some companies are carving a niche for themselves by creating tools for those who work with Java. Launched February 2001, Aligo's M-1 Mobile Application Server is Java-based and designed to give Java developers, regardless of wireless expertise, the ability to create and update mobile applications for the enterprise. It is designed to allow workers in the field, using any type of mobile device, to access company data off corporate servers.
"Aligo has built a mobile app server that complements and extends the J2EE application server," says Jeff Capone, cofounder and CTO for Aligo. "Our product allows J2EE to bridge the gap between desktop and wireless development."
Capone says J2EE doesn't directly support mobile and wireless application development without a large amount of custom coding. Aligo's M-1 server provides APIs that augment those provided by application server vendors such as BEA Systems and IBM with their WebLogic and WebSphere products, respectively. This additional set of APIs makes it much easier for a company to build mobile applications within the J2EE framework.
Aligo also provides an integrated development environment (IDE) to build applications. However, developers can use Forte from Sun, JBuilder from Borland or any other J2EE IDE.
One of Aligo's customers is CDI, a company that outsources labor to broadband companies such as Qwest Communications. These companies use CDI's labor force to install DSL modems and other devices. CDI's workers have to record attendance, work log and accounts receivable information while they are out in the field, which was generating a lot of paperwork.
Using J2EE and Aligo's M-1 Mobile Application Server, CDI built a work log management application that allows workers to input information about the job they are working on, get information about their next job and get alerts about jobs. Workers can also submit information in real time to back-end systems, which can be used by payroll and accounts receivable.
Java is making inroads into enterprise situations daily, and the number of Java developers is evidenced by the sheer size of Sun's JavaOne Developer Conference. Though programmers know the language of Java, it is speaking to more and more workers every day, whether they know it or not.