Wednesday, March 4, 2015 at 5:59 pm
Java, one of the most exciting technical developments of recent years, has been credited with everything from saving the Internet to reviving the concept of client-server computing. But does it really mean much to the UNIX world? Is it just another programming language (as Microsoft claims), or is there more to the story? In this article we’ll examine the UNIX industry’s view of Java.
In a nutshell, Java’s primary promise is to “write once, run anywhere.” The goal is to be truly system-independent (of both hardware and operating systems). Whether this is happening today is another matter. Java has made the World Wide Web more than just a medium for the delivery of static multimedia documents. The Web would have been popular anyway, but with Java, it excites the imagination. Finally, since Java initially was created to power set-top boxes, it has a design center that enables consistent programming from small non-PC computers to large enterprise servers.
Why Microsoft Is Scared
If these features were all that Java offered, it would not be the threat to Microsoft (and the potential friend to UNIX) that it is. To understand Microsoft’s reaction, we first must look at its basic business strategy.
Microsoft’s strategy has two major parts: leverage strong positions in one market (that has the potential to branch into new areas), and tie products together so users prefer to buy them both. For example, there is a strong synergy between Microsoft’s dominant position in desktop operating systems and its client-side productivity applications. In fact, these applications only became dominant when Microsoft took advantage of Windows’ popularity while Microsoft’s competitors, Lotus and WordPerfect, did not have a similar application-OS relationship.
The synergy between Microsoft’s client-side operating system and applications and its server-side operating system (Windows NT) has contributed to NT’s popularity. And there is the fit between the server OS and Microsoft’s BackOffice (database, messaging, systems management) tools. Underlying everything are the APIs that hold it all together, making it difficult to build portable applications that are not tied to the operating system. And once a volume market (a consistent hardware base, an execution environment, or a dominant, extensible application package) emerges, there is an incentive for customers to buy the OS and for other companies to develop more products for it. This strategy has made Microsoft one of the most powerful companies on the planet.
Java Breaks This Strategy
Java is both a development and an application-execution environment. It also is portable, standardized, flexible, and already has a huge and growing installed base.
Portability and standardization (despite Microsoft’s efforts) result from both the design and history of the language, and Sun’s de facto control of it. It also stems from Sun’s desire to collaborate with companies having a genuine interest in furthering Java’s potential.
The installed base is the result of early integration with an underlying environment, Netscape (Mountain View, CA) Navigator, that dominated the new, rapidly growing Internet market. This brilliant maneuver was so successful that all other browsers had to follow or be left behind. It means that as the Internet expands, so does Java. This potentially undermines Windows’ volume advantage.
Java stretches from very small computers to very large ones. Java in some form is programmed into smart cards, telephones, single-purpose information appliances, PCs, and a variety of servers. In fact, the Internet can be used to build globally distributed systems.
The Heterogeneous World
We all know that the computing world is not homogeneous, but the increasing complexity of information environments leads many to wish it were. Java’s story emphasizes computing heterogeneity. Even further, it reminds us that the current PC is not the end of our computing devices’ evolution, that we are entering a period of increasing diversity.
One good example of dealing with diversity is how IBM is solving the problem. For years it has struggled with its incompatible computing families and the difficulty to program for all of them. Now, Java is on IBM systems, including OS390, AS1400, AIX, OS/2, and network computers. While it is not the right environment for all applications, one can program once and run on all these disparate IBM systems.
It’s The Applications, Stupid!
People buy computers to get applications, and Java has several implications that favor UNIX. Java’s current uses emphasize servers, which are central to networked computing. And UNIX excels in servers, especially scalable ones.
Scalability is particularly important in the future phases of the Internet and electronic-commerce era. Java server-side applications will be popular because they are portable and can be made to scale as needed. UNIX will be the preferred server for Java servlets because it embraces Java and Java’s preferred distributed-component Common Object Request Broker Architecture (CORBA) and it has proven robustness.
On the client side, Java applications will exist in UNIX, but one major effect will be the existence of quality office-productivity applications. Word processing, for example, is not a typical use of powerful UNIX workstations, but is needed occasionally. If the rest of an enterprise is using a standardized office suite but one is not available for UNIX, this becomes yet another reason to switch. The coming Java-based office suites will eliminate this particular problem.
It is believed that Java creates robust software better than C/C++. Although an arguable point, it does draw attention to the issue of robustness, a UNIX strength.
Solving UNIX Problems
Among the problems plaguing UNIX are incompatibilities among UNIX variants, lack of volume markets for applications, an image of being too complex (especially in user interface and system management), and cost.
Java can’t fundamentally solve the incompatibility problem but does hide it effectively. For the applications that fit Java, subtle system differences are irrelevant, user interfaces are identical, and if the Java Virtual Machines are built correctly, the applications behave the same.
Volume markets are more attractive for software developers, and this relationship is self-reinforcing. This problem is solved by Java’s portability so applications can run on both clients (Windows, UNIX, and others) and servers. Thus, volume-based arguments against UNIX also become irrelevant.
In the application-development process, Java is the same no matter where the application runs. The development environments can be the same (both professional object-oriented environments and 4GL-like visual-component assembly environments). User-interface design is, however, a style choice.
The cost issue is more complex. Hardware costs center around design goals, volume, and a host of other considerations. UNIX vendors have moved to more commodity peripherals and, for like capability, have hardware that costs as little or even less than the PC vendors’. But Java doesn’t really affect these hardware trends other than in the newest small portable devices.
Software costs are determined primarily by history and volume. UNIX software vendors are moving to compete with PC prices (witness the database vendors’ “same price on UNIX and NT” movement). Java’s run-anywhere capability means prices of Java software must be based on some criteria other than OS. The more Java software there is in the world, the less this can be used as an argument against UNIX.
If Java really flowers, and it looks like it will, UNIX will continue to compete against alternatives on its merits of performance, stability, and scalability. And we know that is a game at which UNIX excels. If you have any reason to advocate Java, do so–it will help foster a world where fair competition is the norm. This can only open opportunities everywhere, including in UNIX.