Java's huge these days. Java, the programming language pioneered by Sun Microsystems, promises an "Operating-System-Independent World." In this OS-free world, Sun believes you will find true Nirvana, a land in which you only need a Java-capable machine, and the applications to run on it. If you listen to the hype, you'll find that not only is Java platform-independent, but it will soon wash your car, prevent global warming, and cure cancer.
July 1, 1997, Ted Brackwood

Enough hype. The question that's been on everyone's minds these days is "what can Java really do?" or, more precisely, "what can it do for ME?" The PC world is not about making everyone else happy, it's mostly about keeping you and your customers happy. So, let's take a look at what Java has promised, and what it really can offer you.

Promise: Java is platform independent.

Truth: Only to a degree. For starters, your machine has to be Java-capable. The current solution to this need for Java compatibility is to use "a virtual Java machine". The virtual machine takes a chunk of your system's resources and creates a Java-capable environment. If you've been using one of the more current Java-capable Web browsers you've seen the virtual machine in action.

Thus, when you get down to brass tacks, Java is platform-dependent. It relies upon the Java Virtual Machine (or VM). You will not be able to boot up your Mac today, grab some Java applications (often referred to as "applets") and watch them happily do their jobs. You must have a VM for Java.

An advantage to the VM is that it creates a "sandbox" for Java to play in. If the Java applet gets out of control or crashes, it merely takes out the VM, not your entire system! Plus, the VM attempts to stay as separate from your other system resources as possible. If the VM dies, it doesn't take your Mac/PC with it. From a security standpoint, this is great, as a malicious Java Applet cannot dive into your other system files and tear them to ribbons.

Promise: Java is easy to develop with.

Truth: Java is relatively easy to use as a development language. Compared to, say, Quantum Physics, it's quite easy. For those of us not well versed in C++, it can be quite a challenge. The syntax is closely akin to C++, and at times seems to borrow from the worst of the language. Developers with a strong background in C++ find moving to Java is not as daunting a task as it is for someone with a weak background in these languages.

Visual developers especially find the move to Java hard to take. The current crop of visual tools for Java leaves quite a bit to be desired. Few, if any, offer the speed, ease of use, and functionality of Visual Basic, Delphi, Powerbuilder, and their kin. While new products pop up every day, expect it to take some time before they mature to the point of being truly useful and intuitive. Having tested at least a half dozen of them, I'm still left wondering if there's any hope for me to move up to Java.

Another illustration of the complexity of Java is JavaScript, a simplified version of Java used in Web page design. When Java came out, Web developers proclaimed it to be the "next big thing". Many of them found the next big thing was not "the easiest thing." Especially when all they needed it for was form processing, animations, and other simple Web-based tasks. Thus, JavaScript was born, and appears to be the more predominant use of Java on the Web.

Promise: Java will be able to do anything.

Truth: Maybe not everything, but it will be doing a lot…in the future. With a cross-platform language, it becomes easier to develop applications for non-PC use. Some examples of products either in testing, or rumored to be in testing include: Cell Phones/Digital Phones, "Smart Cards", Security Systems, Stereo Systems, etc. The advantage of these all being Java enabled is that they could all work together to provide a continuous productivity flow.

Imagine, for example, that your digital phone receives a call and takes a message. It translates this message to a text file that any Java-enabled application could read. It passes this text over to your PC's email application via an electronic link. Since your phone is Java, and so too your PC, they can both send and receive messages on the same digital communication network. Messages can readily flow between email, voice-mail, and other services. This allows all the services to work together seamlessly, without worries of conflicting protocols and proprietary services.

Any Java-capable appliance could be programmed and controlled from a universal remote. In the previous example, you could use your Java digital phone to dial your home security system and tell it to have the garage open, heated and waiting for you in 20 minutes. Then, you could set your stereo to power up in 25 minutes and the coffeemaker to fire up at the same time. Thus, through Java enabled systems, your home is ready for your arrival, and a fresh pot of Java (forgive the pun) is waiting when you get in. Editor's Note: Originally Java (called "Oak" back around 1990) was supposed to be a language for smart houses: it was the language your smart air conditioner was going to use to talk to your smart lamps or window blinds. The sudden popularity of the World Wide Web created a new environment that Java is well-suited for.

Promise: Java will save big business some big money.

Truth: It's quite possible that this is true. The core philosophy behind Java is to eliminate the need for a PC for every person. Instead of these, a corporate user would set up an office of Java based Network Computers (NCs) These NCs would have only the bare essentials: a monitor, a superfast network connection, a good chunk of RAM, keyboard, and maybe an extra storage device, although local storage isn't necessary.

These NCs would be patched into a master Java server which would hold all the Java applications and data necessary for an office to get on with its business. Java applications could be built to perform accounting, word-processing, database access, etc. When a user decides, for example, to create a new word-processing document, he would request it from the server. The server would download the necessary word-processing applet to the NC. The NC would then act as a normal PC, working with the document, allowing editing, etc. When complete, the user would save the file to the network server, and the applet would be flushed out of the NC's memory, making room for a new applet.

Since NCs are minimalist machines, the capital outlay for an office suite of them would be relatively nothing compared to that of standard PCs. Not only would initial costs be low, but the cost of maintenance would be nominal, as few things can go wrong on such a stripped-down machine.

While these cost savings sound great, there is a hidden caveat in all this. There are almost zero quality Java applications available! Add to that the fact that there are few truly experienced developers that are able to create business-grade applications and you see what I'm getting at. Until the number of developers for Java starts resembling the number of Windows developers, you'll pay a premium to have high quality business-grade applications built.

Another cost to keep an eye out for is on the server end. Sun is hoping that by using Java, corporations will naturally want to buy their (Sun's) servers. After all, why not purchase a Java server from the company that developed the language? These servers are going to need massive amounts of processing power and storage. Feeding applets to a few NCs is nothing for a server, but take that server company-wide with 200 NCs all screaming for the accounting applet, and you'll see a need for a strong server. I honestly doubt these will be cheap.

As long as the hype is taken with a grain of salt, and a lot of research into what's really available, you may find that Java's just what you've been looking for. Or you may just dismiss it all as so much hype. Either way, it's worth your while to research it, and maybe even experiment with it.


JAVA - Java technology's versatility, efficiency, platform portability, and security make it the ideal technology for network computing. From laptops to datacenters, game consoles to scientific supercomputers, cell phones to the Internet, Java is everywhere!

SPRING - Spring is the most popular application development framework for enterprise Java™. We use Spring to create high performing, easily testable, reusable code without any lock-in.

HIBERNATE - Hibernate facilitated the storage and retrieval of Java domain objects via Object/Relational Mapping.

TAPESTRY - Component oriented framework for creating dynamic, robust, highly scalable web applications in Java.

JASYPT - Java library which allows the developer to add basic encryption capabilities to his/her projects with minimum effort.

LUCENE - high-performance, full-featured text search engine library written entirely in Java.

JUnit | LOG4J | maven | Quartz | JAVE | Postgres | NetBeans | eclipse | Glassfish | tomcat | Tika | The Apache Software Foundation