Please feel free to forward this newsletter to as many friends as possible. I have a personal goal of having one million readers. I can achieve it with your help

the Software View: JavaTM, a wonderful brew (Part II)

For those of you with Internet and World Wide Web access and a Netscape Navigator web browser, please point your browser to:
http://www.softwareview.com/
Scroll down the page and you will spy a link entitled, "Current views web log (fresh news daily! Click reload, clear the browser cache)" The daily news page is also known as a "web log". It is en vogue and the fashion of these days to call it that. Click on the link, click "reload" on your browser or clear your browser cache to ensure that you always receive the freshest, hottest daily news concerning Java, Linux, XML, and the software industry! The link never changes, but I will be updating the HTML file page behind it every day. Please, do take a gander at it every day.

Also, some important news, gentle readers. the Software View is now an Associate Internet World Wide Web site of Amazon.com. I would like to extend my sincere, heartfelt gratitude and thanks for your patronage. I am offering links to books, et cetera that you can purchase from my web site. I would greatly appreciate it if you would purchase software industry books from my web site. Help support my newsletter and web site by purchasing items from Amazon.com from my web site. Here is the URL (Uniform Resource Locator):
Click here

Now, dear readers, on with this week's episode of the Software View!

Gentle readers, how do you boil a frog? Well, you certainly don't throw the frog into a pot of boiling water. It will simply hop its scalding butt out of that steaming cauldron. Instead, the best way to boil a frog is to park it in a cold pot of water and slowly turn the heat up. The dumb frog will be more than happy to play while it's slowly being roasted. The said frog in question is Microsoft. Microsoft is seriously in danger of missing the boat in reference to Java. If you allow me to mix metaphors, this Java train has already left the station. Microsoft is Nero fiddling while Rome burns. I just received in the mail yesterday a free CD containing the preview release of Microsoft Visual J++ 6.0. This is software dumping at its finest. This CD contained non-standard, proprietary Java extensions (like the two new keywords: delegate, multicast; J/Direct @dll imports; WFC; etc.) a la COM+, DNA, or whatever they're calling their feeble Java strategy today. 100% Pure Java vendors like Symantec are racing ahead with support for JNI, JFC (Swing), JavaBeans, Enterprise JavaBeans, JAR, RMI, etc.

George Gilder has written some fascinating articles about not only Java's history, but why it's important. Bill Joy, cofounder and Vice President for Research at Sun Microsystems, not only brought us Java, but he also earlier provided other bedrock Internet technologies. Joy was the primary champion of the Berkeley brand of Unix - BSD (Berkeley Software Distribution) Unix - that he husbanded as a student at the university. BSD Unix was not only Sun's essential software technology, but also the reference code for TCP/IP (Transmission Control Protocol/Internet Protocol), the basic protocol stack of the Arpanet in its evolution toward the current Internet). By upgrading the TCP/IP protocol to run on ethernet rather than on only 50-kilobit-per-second Arpanet lines and then giving away the Code, Bill Joy made the Internet possible. When Sun declared in 1988 that the network is the computer, the network it had in mind was run by Bill Joy's Network File System (NFS), and it incorporated TCP/IP. Says Dr. Eric Schmidt - Bill Joy's Berkeley colleague, now Chairman, Chief Executive Officer of Novell and leading prophet of the coming software inversion - "Sun was selling the Internet before the Internet was there."

Indeed, because Sun computers running BSD Unix were the most robust vessels for TCP/IP, the lion's share of all host computers on the Web are still Sun's, and Sun is experiencing an unexpected surge of earnings in the wake of the Web. Everyone knows that Windows NT is fine for a departmental or workgroup network operating system. But it doesn't scale. A web site with 10 million daily hits would bring Windows NT to its knees. Unix handles it fine, is 64 bit, and can scale up to hundreds of processors. Now the computer world is wielding Netscape's browser to rush toward the Net, wrenching the sphere from its moorings in Redmond, and allowing it to oscillate toward a new center in Silicon Valley. Even Bill Gates, the last holdout against Joy's network standard, bundled TCP/IP with Windows 95. Joy must feel that the industry came home at last.

Just as Gates ignited the person computer market by writing Basic for the PC, Joy launched a new era on the Net by supplying a suitable software language, Java. Joy and James Gosling were eager to do something small to bring Sun into the world of consumer electronics where a large program used no more than a few thousand lines of code. In 1992, the company spun out a subsidiary named FirstPerson Inc. to pursue this market. But with Apple Computer's Newton fiasco, personal digital assistants began to fall from favor and Sun and the rest of the lemmings decided to pursue the suddenly seductive siren of interactive TV. Again, they would use the Java (at the time called "Oak") programming language, this time running not on cellular phones, but in TV set-top boxes. Here, too, the programs would have to be elegant and compact to use the sparse memories affordable for a consumer appliance. However, Sun would soon discover that interactivity merely offers cosmetics for the corpse of a dying television industry. Together, Joy, Schmidt, and Gosling tried to discover a strategy for Java. As the work proceeded, it became clear that the characteristics of a language suitable for PDAs not only gratified Joy's Laws of software, but also fit almost perfectly the needs of the Web.

James Gosling endured a 15-years struggle with the challenge of how to send programs across a network that could be executed on other computers. Gosling set out to develop appropriate programs in C++. But it soon became clear to him that this language failed on nearly all the crucial criteria. In particular it was neither reliable nor secure, which, funnily enough, turned out to be two sides of the same coin. "The gun you shoot the burglar with can also shoot you in the foot." That was C++. It had pointer code that allowed rogue programs to invade and corrupt a target operating system. Much of Microsoft's software empire is written in the C++ programming language. In fact, Microsoft owns the Microsoft Foundation Classes libraries, which most Windows programs are written with. Microsoft is an adolescent and very unfamiliar with security in relation to the Internet. But, can you blame them? Here is a software company with a history steeped in the roots of desktop PC software. It takes them a while to understand being "connected" (as evidenced by the Internet Explorer security bugs, and numerous Windows NT Internet exploits). Meanwhile, Sun, on the other hand, a company born with TCP/IP in its bones has endured hacker attacks for decades. That's why Sun's Unix and Java systems are inherently more secure than a Microsoft alternative like ActiveX (CaptiveX). This is a difference, problem in architecture. Security is inherent in Java's architecture. It uses a sandbox security model. Microsoft added security on as an afterthought.

Gosling adapted Java to enable real-time operations across a network. In order to run a variety of different programs on a variety of linked devices, from set-top boxes to palmtop remotes, he made it inherently platform-neutral and nomadic. It would have to be a language at home on a network. Java is an efficient programming language that is safe, simple, reliable and real-time, yet familiar to anyone who has used C or C++. Many of Java's language constructs come from C/C++. Gosling wanted current software engineers to be able to quickly pick up the new language. Designed for PDAs on infrared networks, it turned out to be perfectly adapted for the Internet. Many of Java's virtues are made possible by the fact that it is interpreted rather than compiled--that means that it is translated line by line in real time in the user's computer rather than converted to machine language in batch mode by the software vendor.

Most software programs are written with languages in two stages. The first is source code, couched at a level of abstraction that rarely reveals its purposes or algorithmic procedures. Normally, source code is proprietary and not revealed to the user. This is why Microsoft's stock price enjoys its lofty peaks. Microsoft owns the Win32 and assorted other application programming interfaces, or API's. They jealously conceal, guard, and husband these API's behind either non-disclosure agreements or copyright. They are not afraid to sic attorneys on anyone who reveals these API's. Thus, the only programmers privy and able to take advantage of new, upcoming, or secret Windows API's are fellow Microsoft application programmers. Thus, Microsoft always releases the first software application programs taking advantage of new Windows features. Case in point, Office 95 was released the same time Windows 95 was. That is incredible. You can't tell me that Office 95 developers weren't spending months sharing secrets with the Windows 95 developers. Also, Microsoft is free to change these API's at any time and without any prior notice. Ownership of these secret API's are one of Microsoft's competitive advantages. Contrast that with Sun, who is an open-standards International Standards Organization (ISO) guardian of the Java standard. The Java API's are widely documented throughout the Internet.

The second stage is compilation. The compiler translates the abstractions of the source code into "binaries" - the machine language of a particular computer, locked into the set of instructions that its central processing unit can perform. Java, by contrast, is compiled not to an instruction set peculiar to a particular microprocessor but to a virtual machine or generic computer. Putting the language into an intermediate applet form allows creation of programs that are not locked into any particular hardware platform, but that can still be adapted to run fast. The intermediate code is translated line by line by a software program called an interpreter or Java virtual machine located in the target computer. Java creates an abstraction layer that renders hardware platforms and software operating systems irrelevant. The promise of WORA ("write once, run anywhere").

Java virtual machines take up a parsimonious 45 kilobytes of memory. This means that any program written in Java will be portable to any common computer platform. On the surface, this portability does not seem remarkable. All programs written in C, C++ or other compiled languages can be ported to any target platform simply by running the source code through the appropriate compiler. The difference is that Java can be "compiled" line by line in real time. That is, it is interpreted in byte-level code in the client machine. This makes all the difference. It means that programs no longer have to reside in the machine where they are used, or be written for that machine in order to be executed by it. Potentially, a Java program can reside anywhere on the entire Internet and be executed by any computer attached to the Internet. Ubiquitous Java virtual machines make Java programs "dynamically portable" in real time.

Dynamically portable programs are suitable for a nomadic existence on the Net, rather than a mere settled life on the desktop. Java thus emancipates software from computer architecture. It offers a software paradigm radically different from the Microsoft model, which is based not only on static compilation, but on often-concealed, proprietary source code. Suddenly, the entire world of new software is potentially available to every computer owner. Rather than being restricted to the set of programs you own, you can use any program on the Net, just as now you can tap any information on the Net. You not only have data at your fingertips, you have programs at your fingertips. And we're not talking of huge, gargantuan programs like the old Microsoft Visual C++ which took up entire shelves at software stores. This means "executable content," as Joy describes it.

Whether a film, a graph, an animation, a real-time bit stream on the Nasdaq ticker or the Reuters wire, a virtual reality visualization, or a game, it can be downloaded to your machine with its program in tow. Owning the operating system and associated tool libraries becomes irrelevant to selling applications. Owning the application or channel becomes irrelevant to selling the content. To the extent that Java prevails, software becomes truly open for the first time. The Microsoft desktop becomes a commodity; the Intel microprocessor becomes peripheral - the key "microprocessor" is the software code in the Java virtual machine.

Interpreted or not, however, nomadic programs will not be permitted to range the Net unless they are also secure programs. By several judicious alterations of C++ procedures, Gosling made Java, above all, a secure language. Many viruses depend on taking an integer in the program and using it to "point" to a low address in the memory where operating code resides. Java removes this pointer conversion function. In addition, incorporated into the Java interpreter is a code verifier. As soon as an application shows up in a machine, the interpreter does an instant virus scan. Finally, when Java applet arrives at a machine, it will bear an RSA data signature that verifies the source of the code and guarantees that it has not been altered or corrupted. Again, these are lessons learned from decades of Sun systems being attacked by Internet hackers.

These security provisions make Java programs the first certifiable citizens of the Net. As Java virtual machines become ubiquitous, any application program that is anchored on a particular platform and desktop will eventually become a cripple, like a pro athlete who fears to fly. The personal computer hollows out, and you no longer are concerned with its idiosyncrasies, its operating system, its instruction set, even its resident applications. Instead, you can focus on content - on the world rather than on the desktop architecture. If you want to run a helicopter model on your screen, you don't have to worry about whether you have AutoCAD on your hard drive. You can run a video of the helicopter without owning the right decoder, whether Indeo (Intel's standard) or MPEG-4 (designed for portable appliances) or dynamic JPEG. The helicopter flies over the Net with its own executable code. The network is no longer a threatening place. If you want to use a program from Finland, you don't have to worry that it will introduce a malignant virus to your machine.

Your computer will never be the same. No longer will the features of the desktop decide the features of the machine. No longer will the size of your hard drive or the database in your LAN server determine the reach of your information processing. No longer will the programs in your machine determine the functions you can perform. The network is the computer. The computer becomes a peripheral to the Internet and the Web. Microsoft and Sun are approaching Java and the Internet from two diametric, opposing philosophies, viewpoints. Microsoft believes your personal computer, the desktop, your hard drive, is all important, and that at intermittent times you will reach out to the Internet. Sun, on the other hand, believes the Internet is all powerful. You will be connected at all times and the type of device is irrelevant, whether it be a Java ring, a smart card, a TV set-top box, a Windows personal computer, a Sun Solaris workstation, or even a toaster! By the way, Java scales so it can run on any of the above devices. Scott McNealy, Chairman, President, and CEO of Sun Microsystems joked that if Microsoft tried to create a Windows smart card, "they would have to redesign every pants pocket on the planet".

Since the release of Java, Gosling has experienced the kind of sudden Internet celebrity undergone by Netscape's Marc Andreessen. Unlike Andreessen, he seems somewhat baffled by it all. But in the long run, his contribution may be greater. Browsers and servers may come and go, but successful new languages are extremely rare. Java is the key to a truly interactive Internet and a fully hollowed-out personal computer.

To be continued ...

Sincerely,
Mark Kuharich

Join my free e-mail newsletter called the Software View by clicking here or sending mail to thesoftwareview-owner@west-point.org