|Making Sense of Java
A guide for managers and the rest of us
Bruce Simpson, John Mitchell, Brian Christeson, Rehan Zaidi, and Jonathan Levine
1996 | 180 pages
The meteoric rise of interest in Java, and the simultaneous rise in Java-related hype, make this book's no-nonsense evaluation essential reading for all levels of professionals, from managers to programmers. Making Sense of Java clearly and concisely explains the concepts, features, benefits, potential, and limitations of Java. It is not a programmer's how-to guide and assumes little technical knowledge, though software developers will find this lucid overview to be a valuable introduction to the possible uses and capabilities of Java.
- How Java's features and functionality stack up against the competition
- Java applets and their impact on the Internet
- Will Java become a general-purpose programming language?
- Performance, productivity, and security issues
- Copyrights, patents, and intellectual rights
- Supporting software and technologies
- The future of Java
ABOUT THE AUTHORS...
Bruce Simpson, John Mitchell, Brian Christeson, Rehan Zaidi, and Jonathan Levine -- consultants, programmers, managers -- are all active participants in the Java maelstrom.
It is safe to say that never in the history of computing has a new language come from obscurity to a key position in the industry in so short a time. What is it about Java that has intrigued so many people so quickly? Why are they talking about Java and why do many of them hail it as "the language of the future"? Perhaps we should start with a brief look at the history of Java and the company that created it.
Java was developed at Sun Microsystems, one of the giants in the computer industry. Its revenues approached $6 billion in 1995 and have been growing at a rate of 15 to 20 percent in recent years. These figures are strong indicators that Sun understands the demands of its market and is developing and providing products which accurately match them. Java may prove to be further proof of Sun's corporate acumen.
Ever since its formation in 1982, Sun has realized the value of networking as a means to provide maximum computing power in the most flexible and efficient form. Sun's war cry, "The network is the computer," exemplifies its wholesale embrace of the network paradigm. The network model is the source of many of today's popular buzzwords. "Client-server," "distributed processing," and other powerful new design strategies are finally allowing us to tap the power of multiple computers to provide increasingly more effective systems at lower prices.
These new methodologies are not without their problems, however, and the limitations of traditional computer programming languages have proven in many ways to be their Achilles' heel.
Sun's answer to these problems is not only a new language but a new implementation paradigm, which, with an elegance and simplicity that belie its real power, solves many of the problems besetting adopters of these new technologies.
Originally known as Oak, a name later changed to avoid trademark conflicts, Java has been under development since 1991. Sun originally intended to use Oak to develop software that would control consumer-electronics products. Built in anticipation of a future demand for such a system, Oak was conceived as an elegant, clean language with strong object-oriented features and an ability to provide seamless operation on multiple platforms. Oak was developed so quickly that it was ready long before its target market of sophisticated remote controls and Personal Digital Assistants (PDAs) existed.
Sun found itself with a solution in need of a problem, a predicament that did not take long to resolve. Because Oak, by now renamed Java, required a minimum of implementation effort on each new platform, it represented an ideal solution to many of the problems encountered when developing software that would work in an environment of increasingly heterogeneous networks. The rapid growth of the Internet, and the World Wide Web in particular, demanded a new type of technology, one that would address such important issues as platform independence and security, objectives Java was already designed to achieve.
With these issues in mind, the Java team produced a Web browser initially called Web Runner. This program later became the HotJava browser, Sun's showcase Java product and the first truly useful application based on the Java technology.
HotJava broke new ground. Unlike Mosaic and Netscape Navigator, it was a dynamic browser. By embedding small Java applications ("applets") in Web pages to provide animation, interaction, and intelligence, it brought life to Web pages that had largely been staid collections of text and static images. Though the first of these were as trivial in content as Bell's "Mr. Watson, come here; I need you", they demonstrated that we can use simple, secure, and portable Internet-based means to reap enormous benefits from distributed-processing and client-server technologies.
Sun announced Java and HotJava at the SunWorld conference in San Francisco in May 1995_and Netscape Communications announced at the same conference that its Navigator browser would support Java from late 1995 on. Almost at once many big names in the industry announced intentions to license the Java product and provide Java implementations and tools, thereby endorsing both the language and Sun's vision of the future.
Overnight, the Internet began to buzz with animated talk about this exciting new product called Java. Thousands of developers and journalists crowded Sun's Web site to discover what the fuss was about. Sun wisely made pre-release versions of the Java Development Kit (JDK) available for download through the Internet. Soon developers all over the globe were exploring the potential of this new product.
Now, after a number of pre-release alpha and beta versions, release 1.0 of the JDK can be downloaded directly from Sun's Web site or any of several mirror sites. A handful of other commercial developers have also released 1.0 versions of their tools and libraries.
Why has Java enjoyed this meteoric rise to fame? In a word: timing. As with many revolutionary products, very few elements of Java are really new. Products have been demonstrating the potential of each of its underlying concepts in one form or another for many years. As long ago as the late 1970s, UCSD-P and other systems offered similar portability and hardware independence. Other systems have been long on distributed processing, security, or robustness. It is only now, though, that Java has put all the pieces together.
Fortunately for Sun, the growth of the Internet and the singular demands it places on software systems have coincided perfectly with the features and availability of Java. This "perfect fit," combined with the Internet's power to communicate new ideas effectively and distribute software easily, has created an unprecedented capability: never before have so many had such ready access to the resources needed to explore a product like Java.
Before Java's advent, C++ seemed to be Hobson's choice of language for the development of large-scale, performance-dependent applications. Now Java is being touted as the successor to C++, even as that language is supplanting C. Contrasting Java with C++ may give us a clearer idea why a language just out of its infancy receives such glowing endorsements.
Many competent C programmers have found the transition to C++ slow and difficult. Not only must they come to grips with the radically different design and implementation methods inherent in the object-oriented paradigm, but they must also learn complicated new rules, grammar, and semantics. Implementations are inconsistent, and the continuing addition of features has made the very definition of the C++ language a rapidly moving target.
It becomes easy to see why many disappointed developers have failed to realize the enhanced productivity and reliability promised so enthusiastically by OO pundits. It is probably safe to say that many programmers are actually using C++ only as a slightly safer form of C, and avoiding many of the more advanced C++ features that could provide the benefits of an object-oriented approach.
Dismayed by the deficiencies and complexity of C++, many programmers have welcomed Java's power and simplicity. More than a few have described Java as "C++ the way it should have been done." It shares with C++ the concise, expressive nature of C-like syntax, but avoids enormous complications by abandoning backward compatibility, and by eliminating duplicate means of accomplishing the same objectives. It also adds multithreading, automatic garbage collection, and other features particularly useful in systems characterized by rapid, real-time interchange among many dissimilar processes executing simultaneously.
As is so often true of products designed and developed by a small team, the Java language is clean, consistent, and very elegant_features that can pay big dividends in reduced training costs, faster development cycles, improved productivity, enhanced system reliability, and reduced maintenance.
Because it breaks the present intimate dependence of applications on a particular operating system and processor, Java may even alter significantly the balance of power within the computer industry.
UNIX or OS/2? Windows or Mac? For years, the availability of particular software has influenced or even dictated the choice of an operating system, even a specific brand and model of computer_and vice versa. Temporary market advantages have spiraled into market dominance: if users can run the latest version of 1-2-3 today under Windows, but not until next year under OS/2, and not ever under Linux, which environment will they choose? If Lotus Development can sell 1-2-3 into a market of 40 million Windows users or 10 million OS/2 users, which version will it develop first?
But what if adding a platform-independent language to the Internet and other technologies makes the elusive dream of interoperability among disparate systems a reality? When a software provider can create, not only a single source, but a single set of executable code that runs on any one of many platforms, what becomes of the massive dominance that industry giants like Microsoft and Intel currently enjoy in the microcomputer marketplace?
Trying to handicap winners and losers in the field of computing is usually the pastime of fools and gamblers. The nearly perfect match between Java's capabilities and the demands of today's marketplace, however, should make it an odds-on bet that the introduction of Java into the swelling stream of network-based and object-oriented technologies will be pivotal in determining the direction of the whole computer industry.
Both the developers and users of computing systems will find Java to be an important factor in their decision-making and marketing strategies. If indeed the network is the computer, then Java appears to be the single most effective tool for harnessing its full potential.
IntroductionJava is one of the hottest new technologies in the computer world today. While it is sometimes difficult for us to contain our enthusiasm, we will try to cut through the hyperbole and provide a clear view of this mist-shrouded island.
What this Book isn't
This book does not describe how to write Java programs, although it will be of interest to programmers who have heard of Java but are not sure how it may figure into their futures.
What this Book is
The target audience for this book is anyone who has heard about Java and its potential but wants objective information instead of the exaggerated claims presently flying about. Decision makers, project managers, team leaders, analysts, and even those with little more than idle curiosity will all find something of value here. What is Java? Where did it come from? Where is it going? Will it change the face of computer systems as we know them? This book addresses all these important questions, so as to give the reader an understanding of Java, its origins, objectives, strengths, weaknesses, and potential. It explores the technical elements of the language, but also discusses the commercial implications for users and implementers of Java-based systems, making it an especially useful primer for those as interested in the bottom line as they are in the technological implications.