For years now, we have seen computer software and hardware technologies fragmented across several operating systems and programming languages. Such fragmentation has in many ways impeded progress in our industry for the past decade or so. Consider the fact that 20 years ago, Xerox created the basics of the GUI technology we see today. And 10 years ago, Apple's Macintosh boasted much of the same GUI stuff we now see in Windows 95/NT. The X Window System has had for years the distributed windowing system -- the same concept we will see in the form of "Windows Terminal" in Windows NT.
So why haven't we made faster and better progress? In my opinion, it is because we have had separate communities of computer engineers focused on distinct, proprietary efforts.
Consider the analogy of the International Space Station (ISS). The enormous effort of building it involves 15 countries because despite their differences, these countries realized that their cooperation was required to make fast and effective progress and collectively focus on a single environment -- the space station -- rather than duplicate one another's efforts with several different space stations.
Note that the scientists from all these countries were able to communicate with each other -- and thus effectively collaborate and work toward a common goal -- because they spoke a common language. Before Java, software developers lacked a common language worthy of universal use. And even among, say, C programmers, different dialects required for different hardware platforms and operating systems meant that the sharing of code often still required some translation. With Java, however, developers now have a viable common language that has enormous potential for the computer and appliances industry.
Why settle on Java as the standard and not some other technology? Well, as far as I'm concerned, it could have been any language or technology introduced by any company. But Java is here today -- it arrived at the right time with the right mix of features.
Java is an elegant and absolutely wonderful language to work with; in some respects it is an entire platform in itself. Java provides a common ground across several different environments, including key operating systems such as Windows, Solaris, MacOS, OS/2, AIX, Linux, and several others. While each of these major operating system has its strengths and weaknesses, I see them as devices that simply provide developers an environment to work in to get the real work done -- creating applications for our users.
In other words, Java transcends all operating systems and should be viewed as a technology that provides commonality across heterogeneous client and server environments.
Most people appreciate Java's cross-platform nature only in terms of client-side portability and fail to recognize the benefits of server-side portability. Imagine developing a Web server or a custom application server that you write once, but it runs on any Java-enabled OS. On the client side, imagine running your applets on a screen-based phone, WebTV, or PDA. Well, this will all happen shortly as several companies introduce new devices with Java virtual machines (JVMs). For example, Nortel will soon release a screen telephone that will run the same applets that run in your Web browser; Visa International is working with JavaSoft on the Java SmartCard API, which will run Java programs embedded in chips on credit cards; and there are several other companies working on other special devices with a JVM. (See Resources below for a list of JavaOS endorsers.) Who would have thought that the mass of desktop developers would be able to develop programs in a single language for smart cards, screen telephones, PDAs -- virtually any software platform -- without having to learn several different languages or deal with porting issues! With Java, the possibilities are endless.
Java's ability to provide a common language across heterogeneous clients and servers is not science fiction. It delivers on this score today and is taken very seriously by thousands of corporations. If you ever did a survey of how many dollars and resources companies -- small, medium and large ones -- have invested in Java, you would be absolutely amazed. Almost every company with an IS department is either developing in Java, getting its developers trained in Java, or considering using it. For example, my company has three Fortune 100 customers that will deploy applets within the next one to three months -- applets that contain 10 to 30 screens and interact with their data sources via CORBA, DCE, or JDBC. Among many examples of how Java is taken very seriously, consider the use of Java applets by the Jet Propulsion Lab (JPL) for the Mars Pathfinder project or the fact that Netscape plans to release a version of its flagship Communicator software written entirely in Java.
Despite all the inroads Java has made into most corporations, some people believe Java will be just another OS/2 or MacOS. They are absolutely wrong! Java already is bigger and more popular than these operating systems ever were. Don't believe me? Take a look at all the Java APIs available from JavaSoft -- delivering applets, networking, multithreading, database access, JavaBeans, servlets, file I/O, GUI, RMI, electronic commerce, 2D/3D, speech, telephony, sound, and more. Also, think about this: When was the last time you saw so many companies come together to do the same thing! (See Resources below for a list of Java APIs and companies that co-sponsored and/or exhibited at JavaOne.)
If I was to predict the future of Java, I would definitely say that it will only get bigger. As for applications based on the MS-Windows architecture (DLLs, EXEs, etc.) and Unix (X Windows, shared libraries, etc.), I predict in the next five to seven years they'll be viewed in the same way mainframe and COBOL/CICS applications are viewed today -- as proprietary, legacy apps. Remember, Java is a new technology built for a new paradigm (the Web, embedded devices, etc.). The older technologies (MS-Windows, X Windows) might be able to work in the new paradigm, but are not a natural fit.
The capabilities provided by the Java language and its robust APIs are enormous, and third-party Java vendors (JScape, KL Group, etc.) fill the gaps where Java's APIs fall short. The only drawback with Java is its performance, which of course has been drastically improved with the use of Just-In-Time (JIT) compilers. Additionally, Intel, JavaSoft, and Netscape are devoting enormous efforts to improve Java's execution speed, and expect Java code to run at about the same speed as compiled C++ code in the very near future.
So, for what it's worth, here is some advice: Do not get too caught up in what Bill Gates, Scott McNealy, or Larry Ellison has to say. These guys worked hard to get where they are today, but they still have petty, streetwise mentalities and thus are constantly busy insulting each other and plotting to protect and extend their turf. Also, just because Sun Microsystems introduced Java doesn't mean that Sun and Java are synonymous. Java is too big and open to be owned by one company.
Last but not least, be very careful to avoid the use of any platform-specific Java implementations (such as Microsoft's J/Direct) unless you have no choice because of your application's requirements. Keeping Java 100 percent pure is in the best interest for everyone because it is the only way all of us will be able to make real progress, regardless of our platform of choice.
Learn more about this topic
- A look at how Java is backed by some of the largest computer companies in the world http://www.javasoft.com/javaone/cospons.html
- See how many products companies have bought into Java http://www.javasoft.com/javaone/w_exhibit.html
- The Java API overview Web page provides a broad overview and schedule of current and upcoming APIs from Javasoft; see for yourself that Java is really more than just a language http://www.javasoft.com/products/api-overview/
- The use of Java in the Mars Pathfinder Project http://www.javasoft.com/features/1997/july/mars.html
- Platforms supporting Java http://www.javasoft.com/products/jdk/jdk-ports.html
- JavaOS has been endorsed by several companies for desktop, consumer, and embedded environments http://www.javasoft.com/pr/1996/may/javaos.html
- JScape, one of the leaders of 100% pure Java GUI components, builds PowerPanel and Widgets products, which provide a good example of how powerful Java GUI can be http://www.jscape.com
- KL Group sells several 100% pure Java GUI components http://www.klg.com
- International Space Station Web site http://station.nasa.gov/