iWorld Web Site Newsstand Trade Shows Advertising Rates and Information Corporate Information Search Page Subscription Information
Internet.com IW Online IW Online 
toolbar Mecklermedia toolbar



The Trouble with Java

Java has arrived--but is it worth the trouble?

By Joel Snyder

We call her "La Pompa," an Italian-made, pump-driven espresso machine. It provides my office with the best espresso in North America. And that's the only java we use: Sun's Java programming language creates too many potential problems to even consider using it.

There continues to be a lot of confusion about Java: what it's good--and not good--for. Here are a few things to consider when deciding if Java is for you.

Object Lesson

Java is an object-oriented language. Traditional programming languages, such as C and Perl, are "procedural" and consist of a series of procedures that tell the computer what to do.

In an object-oriented language, the emphasis is on the information a program manipulates. Bits of information (data) are grouped together into "objects," which have rules for how they can be manipulated. And because most programs essentially move bits of data from one point to another, anything that can enhance this process is especially desirable.

Java was also designed to be an object-oriented environment, including the Java Virtual Machine (VM), which is supposed to provide true platform independence. With the Java VM, you can, it claims, write a program once and have it run on Windows, Macintosh, Unix, OpenVMS, MVS, you name it. However, it seldom works as promised.

Nevertheless, Sun Microsystems touted Java as the premiere Internet application implementation tool. This impression was confirmed when Netscape agreed to build Java into its browser.

Brewing Java On The Net

When you talk about Java in the context of the Internet, there are actually three places you find the language.

The first is on the Web server itself. Servers run programs to build Web pages on the fly, handle indices, utilize shopping cart applications, or search databases. These can be written in Java. (In this case, the choice of language is insignificant to the client user.) Large Internet applications, where the traditional Perl breaks down quickly, are greatly enhanced by the added power of Java. Platform independence isn't critical here, but the other benefits of object-oriented software development are.

Many programmers are turning to Java for server-side Internet applications. However, from the client's point of view, this is immaterial: You can't tell which application is generating the data stream your Web browser is reading.

The other two places you can find Java are on the client side, as opposed to the server side. Client-side Java shows up in two different ways: JavaScript and Java applets. (Actually, JavaScript and Java applets can run on Web servers as well.)

JavaScript is a simpler version of Java. When a Web client (such as Navigator or Internet Explorer) supports JavaScript, the page author can modify the behavior of the Web client somewhat. JavaScript isn't full Java--it's a small scripting language that complements Java applications which can run on both the client and the server. Web pages written in HTML may have bits of JavaScript on them, embedded in the pages as comments.

JavaScript programs don't have the full strength of Java behind them, but they are powerful enough to control and modify the Web browser. This lets the application developer go beyond the standard click-to-do-anything model of the browser, although usually in a fairly simplistic way.

One of the first examples of JavaScript in a Web page was in an online ordering form: The form automatically calculated totals and sales tax as the customer filled it in, before hitting the Submit button. JavaScript has also been used to add animation to Web pages, change page content based on the location of the mouse, and build interactive chatrooms.

The next step up from JavaScript is a Java applet. Java applets are not embedded in Web pages; they are downloaded separately as precompiled objects. Like all Java applications, a Java applet runs in the Java VM.

Java applets have a huge amount of power available to them. However, they are tightly constrained by the Java VM they live in. For example, although the full Java VM has access to the network facilities of its host operating system, the secure applet VM can only make connections to the server it originated from.

Tangled Web

Despite its benefits, the implementation of Java raises some serious concerns both for network users and application designers.

The security issue is the biggest problem. Java security is based on blind faith. You must trust that your Java implementation is perfect, has no bugs, and that the Java applets and JavaScript you download are not designed to be malicious (i.e., the result of some destructive Internet prankster).

When the basic purpose of a tool is to connect to a network so it can download and manipulate data, you've got to have a lot of confidence that it isn't going to go berserk. And in the case of Java, I don't. Now, you might say, you can extend that argument to any network application: If I don't trust Java, then why should I trust Netscape Navigator or Microsoft Internet Explorer? That's a good point, but there's a big difference between what Navigator does with a page of data and what Java does with an applet.

When a Web browser reads a page, it interprets the HTML code: centering, bolding, pulling in graphics, and so on. There are no operations in HTML to say "read this file from disk" or "send this data across the network." Any security bugs on the Web browser will be due to extensions by the vendor or some other error. On the other hand, Java is a complete programming language. HTML can be explained to a novice in about 10 minutes; Java is as complex as any other programming language. The potential for bugs in a system is directly related to the size of the system, and Java is big.

While there are some standards afoot to help you identify where a Java applet originated, none of these are supported in today's browsers. More importantly, the security experts designing these security measures have hopelessly naive ideas about how much bother people will go through to keep their computers secure.

The other problem with Java is its lack of compatibility. Like most programming languages, Java has a specification that controls how it operates. That's fine, except that the two major places you'll see Java operating in the client--Navigator and Internet Explorer-- are not perfectly compatible with each other. This is directly antithetical to the nature of Java: The language is supposed to be ubiquitous, so that you only have to write your application once.

For example, one of my clients makes historical data on agriculture available over the Internet. The company uses Java to assist the reader of the data in analyzing and summarizing the information. But it had to "just say no" to Microsoft because its Java implementation isn't compatible with Netscape's.

Protecting Your Privacy

If you're an Internet user, you may want to consider disabling JavaScript and the Java language in your Internet browser if you have anything on your computer that needs to be kept confidential. On a private network, where you trust your server, Java is a great tool. But on the public Internet, the potential for loss or the unauthorized disclosure of data is high.

If you're an Internet developer, counting on Java being present in your client's public Internet is a bad idea. Of course, if you're on a private intranet or if you have a special relationship with the people using your site, you may be in luck. However, if you can't convey your message without using Java, you should reconsider your design.

Finally, disregard what people say about how wonderfully portable Java is. Only the most rudimentary applications will work across platforms. This will probably get better over time, but it's going to be a while before we get to that stage.

Joel Snyder is a senior partner at Opus One, an IT services firm, in Tucson, Ariz.

Reprinted from Internet World magazine Vol. 8 No. 11, (c) 1997 Mecklermedia Corporation. All rights reserved.