| ## Java 1.1 Unleashed # - 1 - Introducing Java by Rogers Cadenhead IN THIS CHAPTER How Java Was Developed What Java Is Why Java Is Internationally Beloved Java Today Java Tomorrow This represents the end result of nearly 15 years of trying to come up with a better programming language and environment for building simpler and more reliable software. --Sun Microsystems cofounder Bill Joy A year and a half ago, Java was just an island and one of the cooler synonyms for coffee (along with joe and demitasse). But anyone who has come within five feet of a Web page, computer magazine, or business newspaper since then has heard of Java, the programming language from Sun Microsystems. If you haven't been initiated into the Secret Personhood of Java yet, you might be wondering what all the fuss is about. It's just a programming language, for cryin' out loud! It's not some kind of cross-dressing basketball player, Latino dance craze, or teeth whitener. Figure 1.1 shows a Java program being used to test students on Egyptian history. Figure 1.1. A Java program to administer student testing (courtesy of David Benjamin and Auburn University). The test software itself isn't remarkable--numerous computer-based education programs are being used in schools today. What is noteworthy about the program are the following points: It runs on a World Wide Web page, making the test instantly accessible to the entire planet. The types of computer and operating system being used by the student don't matter--the student can use a Windows 95 PC clone, an Apple MacOS computer, or any other setup that has a Java interpreter. No special installation is required. The program loads itself when needed and unloads when it's done. Java represents a fundamental shift in the way software can be designed and experienced. This, more than anything else, is why Sun's invention is the computer nerd's Macarena. NOTE: The Macarena is a Latino dance craze that involves lots of repetitive motion, arm gyration, and an occasional pelvic swivel. If you're unfamiliar with the term, insert your own annoying aerobic trend into the previous paragraph and repeat as desired. Shortly after Sun introduced Java in late 1995, company cofounder Bill Joy described the language as follows: Java is just a small, simple, safe, object-oriented, interpreted or dynamically optimized, byte-coded, architecture-neutral, garbage-collected, multithreaded programming language with a strongly typed exception-handling mechanism for writing distributed, dynamically extensible programs. At this point, you probably are saying one of two things: "Duh!" or "Huh?" If you're in the "huh?" camp, this chapter is for you. It discusses what Java is, where Java came from, and where Java is going. The "duh!" camp can benefit from this overview as well--and there's enough advanced material in Java 1.1 Unleashed for even the most grizzled Java veteran. NOTE: Java's first official beta release was in November 1995, two months after Netscape became the first company to license the language from Sun. You may be questioning whether someone can become a "grizzled veteran" after little more than a year. However, many of us in the computer programming community have rather--shall we say--unique approaches to wellness and diet that contribute to premature grizzling. The first thing to discuss, before getting into what Bill Joy meant in that Mother of All Sentences, is where Java came from. ## How Java Was Developed The story of Java is a tale of two situations--the worst of times followed by the best of times. It's a story about how a promising language didn't amount to a hill of coffee beans in this crazy world--until the crazy world got a little crazier and a new mass medium was born: the World Wide Web. ### One for the Toasters Five years ago, James Gosling was part of Green, an isolated research project at Sun that was studying how to put computers into everyday household items. The researchers wanted to make smart appliances such as thoughtful toasters, lucid lamps, and sagacious Salad Shooters--the Jetsons' vision of the future realized. The group also wanted these devices to communicate with each other. To get a hands-on look at the issue, the Greens built a prototype device called Star7. This gadget was a handheld remote control operated by touching animated objects on the screen. A Star7 user could navigate by fingertip through a universe of rooms and objects. The universe featured Duke--immortalized later as Java's mascot (see Figure 1.2). Figure 1.2. Duke (courtesy of Sun Microsystems). The most remarkable ability of the Star7 device was how it communicated with other Star7 devices. An on-screen object could be passed from one device to another. The prototype was a distributed operating system in which each device was a part of the whole--exactly the kind of thing that would be needed for the freezer to tell the vacuum to tell the humans that the ice machine is on strike until someone cleans it. The original plan was for the Star7 operating system to be developed in C++. However, as Gosling said in a speech at the JavaOne conference in May 1996, "The tools kept breaking. It was at a fairly early breaking point when I was so disgusted that I went to my office and started typing." He wasn't writing hate mail to Bjarne Stroustrup, the primary developer of C++. Instead, Gosling holed up in his office and wrote a new language that was better for the purposes of the Green project than C++. He called the language Oak in honor of a tree that could be seen from his office window. From the start, Gosling's language was created so that simple, bug-free, network-capable programs could be written with it. Like C++, Oak was object-oriented--a powerful way of developing computer programs that has many advantages over other methods but is difficult to master. Oak was designed to be easier to learn and use than other object-oriented languages. Oak programs had to be platform independent because consumer appliance manufacturers need the ability to replace a higher-priced CPU with a cheaper one whenever possible to cut costs. Unlike computer owners, an appliance consumer isn't looking for a math coprocessor and 33MHz of added computational speed when buying a lawn edger. The consumer also is less likely to tolerate a bug in the edger's software or hardware, especially if said glitch causes unexpected limb loss. The Green project had an impressive demonstration device, operating system, and programming language. Sun's higher-ups gave the go-ahead and the project was incorporated as FirstPerson in November 1992. The group focused its efforts on cable set-top boxes and the potentially billion-dollar interactive television (ITV) industry. Don't laugh--this was the early 1990s. As the FirstPerson team was busy gunning to do Time-Warner's interactive TV trial in Spring 1993, an event took place that would become very important later to the FirstPerson people, long after they struck out in the ITV business. The first visual World Wide Web browser, Mosaic 1.0, was developed by Marc Andreesen, an undergraduate student working at the National Center for Supercomputing Applications. ### Caught in the Web For the next 12 months, the FirstPerson project tried to sell one of the ITV or consumer electronics companies on the use of Oak and the Green operating system. The future of Java can trace its roots back to the project's failure to attract a big client in its chosen field. After Time-Warner chose SGI over FirstPerson, and a deal with 3DO for the FirstPerson OS did not materialize, the project was cut in half and it started scrambling for a new raison d'être. In mid-1994, the folks who stuck with Oak found their reason for being: the World Wide Web. When Oak was created, the Web was a little-known service bouncing around the high-energy physics community. However, Andreesen's graphical Web browser had sparked an international phenomenon, and the Web was rapidly becoming a mass medium. The Oak technology was well-suited for this medium, especially because of its ability to run on multiple platforms. More importantly, it introduced something that wasn't available anywhere else--programs that could be run on user's computers safely from a Web page. Patrick Naughton and Jonathan Payne finished WebRunner, a Web browser that brought back the star of the Star7, Duke. Sun realized it had something promising on its hands, but soon found that Oak could not be trademarked because a product was already using the name. NOTE: When Sun needed to rename Oak, no one used Gosling's "look out the office window" method of naming. This is perhaps fortunate. Ask yourself if Java would have been as successful under any of the following names: Shrubbery OfficeBuildingNextDoor LightPole WindowWasher SecretaryLeavingForLunch WeirdSecurityGuard FatGuyMowing After brainstorming sessions in January 1995 to supplant the Oak name, Java won for the language and HotJava replaced WebRunner as the browser's name. Java does not stand for Just Another Vague Acronym, or any other acronym or meaningful term. Like rock bands (Deep Blue Something, Smashing Pumpkins) and celebrity offspring (Moon Unit Zappa, Chastity Bono), Java was the name chosen because it sounded the coolest. It won out over DNA, Silk, Ruby, and WRL (WebRunner Language). The project now had a cool name, a cool new purpose, and a HotJava browser to show it off. On March 23, 1995, it attracted a cool new admirer: that Andreesen kid. In a front-page story, the San Jose Mercury News reported that Sun was working on a project to make Web pages "as lively as a CD-ROM." The story included the following quote from Andreesen, who had become a vice president at Netscape (and had also become a self-contained Bill Gates starter kit): "What these guys are doing is undeniably, absolutely new," Andreesen told the Mercury News. "It's great stuff. There's so much stuff that people want to do over the network that they haven't had the software to do. These guys are really pushing the envelope." The phenomenon was on. Netscape licensed the Java language for use in its browser a few months after the article ran, putting the language in front of millions of Netscape users. The first beta release of Java was made available for download in November 1995. Sun made a developer's kit and the source code for its product freely available to anyone who wanted it--and by that time, thousands of people and companies did. Toasters are no smarter today than they were in 1991, so in that regard, Sun's research project has been a total failure. However, a new object-oriented, made-for-the-Internet programming language was created instead. Now that you know about Java's ancestors, it's time to be introduced to the language. ## What Java Is The basics: Java is an object-oriented programming language developed by Sun Microsystems that plays to the strengths of the Internet. Object-oriented programming (OOP) is an unusual but powerful way to develop software. In OOP, a computer program is considered to be a group of objects that interact with each other. Consider an embezzlement program implemented with Java: A Worker object skims some Money objects from the CompanyFunds object and puts them in its own BankAccount object. If another Worker object uses the DoubleCheckFunds object, a Police object will be called. The feature that is best known about Java is that it can be used to create programs that execute from World Wide Web pages. These programs are called applets. Java programs made a big splash on the Web because they offered interactivity in a medium that was largely one way. The Web distributes almost all information in a passive manner. Someone using a browser asks for a page, looks it over, asks for another, looks it over, and so on. Lather, rinse, repeat. A Java applet running on a Web page provides a much richer experience--both in terms of information and user interaction. Information can change in response to user input or be updated dynamically as a Web page is viewed. Figure 1.3 shows an example of a Java applet that dynamically updates itself. The applet, offered by JavaWorld magazine (at the URL `http://www.javaworld.com`) in conjunction with Quote.Com, updates a stock portfolio dynamically with quotes updated in real time. Figure 1.3. A Java applet that updates a stock portfolio in real time (courtesy of JavaWorld magazine). Although Web-based programs are a strength of the language, Java is a general-purpose language that can be used to develop all kinds of programs. A Java program is created as a text file with the file extension `.java`. It is compiled into one or more files of bytecodes with the extension `.class`. Bytecodes are a set of instructions similar to the machine code instructions created when a computer program is compiled. The difference is that machine code must run on the computer system it was compiled for; bytecodes can run on any computer system equipped to handle Java programs. The next section describes why Java is being used and takes a closer look at Bill Joy's adjective-stuffed description of the language. ## Why Java Is Internationally Beloved Although "internationally beloved" might be pushing it a bit, Java has quickly become a popular choice for computer programming--both on and off the Internet. A lot of the initial interest undoubtedly came from people who wanted to know whether Java lived up to the hype. In a short time, the language has become one of the biggest buzzwords of the Internet, spawning magazines, Web sites, training courses, conferences, and lots of books. And I'm not talking about small books either; I mean big, heavy books you can hurt yourself with. Try dropping this book on your toes and you'll see (feel) exactly what I mean! Even if Java was as underpublicized as Tonya Harding's singing career, the programming language has some advantages over other languages such as C++ and Visual Basic. These can be found in Bill Joy's description of the language. As a reminder, Joy sang its praises as follows: Java is just a small, simple, safe, object-oriented, interpreted or dynamically optimized, byte-coded, architecture-neutral, garbage-collected, multithreaded programming language with a strongly typed exception-handling mechanism for writing distributed, dynamically extensible programs. These adjectives can be tackled by dividing them into more manageable groups. ### Java Is Small and Simple When James Gosling retreated to his office to write the language that became Java, it was modeled after C and C++. The object-oriented approach, and most of Java's syntax, is adapted from C++. Programmers who are familiar with that language (or with C) will have a much easier time learning Java because of the common features. However, Java has been described as "C++ minus" because of elements of C++ that were omitted. Gosling wanted to avoid the problems that the Green project had encountered when using C++ as it developed the Star7 prototype. The most complex parts of C++ were excluded from Java, such as pointers and memory management. These elements are complicated to use, and are thus easy to use incorrectly. Finding a pointer error in a large program is an experience not unlike searching for the one-armed man who framed you for murder. Memory management occurs automatically in Java--programmers do not have to write their own garbage- collection routines to free up memory. Another design decision to make Java simpler is its elementary data types and objects. The language enforces very strict rules regarding variables--in almost all cases, you have to use variables as the data type they were declared to be, or use explicit casts to manipulate them. This arrangement permits mistakes in variable use to be caught when the program is compiled, rather than letting them creep into a running program where they're harder to find. As a result, programs behave in a more predictable manner. Experienced programmers may have trouble adjusting to some of the changes and reductions from C++. However, Java's architects were trying to make the language easier to write, debug, and learn. ### Java Is Object Oriented Object-oriented programming (OOP) is a powerful way of organizing and developing software. The short-form description of OOP is that it organizes a program as a set of components called objects. These objects exist independently of each other, and they have rules for communicating with other objects and for telling those objects to do things. Think back to how Star7 devices were developed as a group of independent devices with methods for communicating with each other. Object-oriented programming is highly compatible with what the Green project was created to do and, by extension, for Java as well. Java inherits its object-oriented concepts from C++ and other languages such as Smalltalk. The fact that a programming language is object oriented may not seem like a benefit to some. Object-oriented programming can be an intimidating subject to tackle, even if you have some experience programming with other languages. However, object-oriented programs are more adaptable for use in other projects, easier to understand, and more bugproof. The Java language includes a set of class libraries that provide basic variable types, system input and output capabilities, and other functions. It also includes classes to support networking, Internet protocols, and graphical user interface functions. There's a lot of excitement in the programming community because Java provides a new opportunity to use object-oriented techniques on the job. Smalltalk, the language that pioneered object-oriented programming in the 1970s, is well-respected but has never been widely adopted as a software-development choice. As a result, getting the go-ahead to develop a project using Smalltalk can be an uphill struggle. C++ is object-oriented, but concerns about its use have already been described. Java is overcoming the hurdle in terms of usage, especially in regard to Internet programming and the development of distributed applications. Tim Berners-Lee, the inventor of the World Wide Web, told the attendees at the JavaOne conference one big reason he's excited about the language: "We now have an excuse to really use object-oriented programming." ### Java Is Safe Another thing essential to Java's success is that it is safe. The original reason for Java to execute reliably was that people expect their waffle irons not to kill them or to exhibit any other unreliable behavior. This emphasis on security was well-suited for Java's adaptation to the World Wide Web. A Java program that executes from a Web page is called an applet. All other Java programs are called applications. When an applet is encountered on a Web page (if the user's browser can handle Java), the browser downloads the applet along with the text and images on the page. The applet then runs on the user's computer. This act should raise a red flag--danger! danger!--because a lot of harmful things can occur when programs are executed: viruses, Trojan horses, the Microsoft Network, and so on. Java provides security on several different levels. First, the language was designed to make it extremely difficult to execute damaging code. The elimination of pointers is a big step in this regard. Pointers are a powerful feature, as the programmers of C-like languages can attest, but pointers can be used to forge access to parts of a program where access is not allowed, and to access areas in memory that are supposed to be unalterable. By eliminating all pointers except for a limited form of references to objects, Java is a much more secure language. Another level of security is the bytecode verifier. As described earlier, Java programs are compiled into a set of instructions called bytecodes. Before a Java program is run, a verifier checks each bytecode to make sure that nothing suspicious is going on. In addition to these measures, Java has several safeguards that apply to applets. To prevent a program from committing random acts of violence against a user's disk drives, an applet cannot, by default, open, read, or write files on the user's system. Also, because Java applets can open new windows, these windows have a Java logo and text that identifies them. This arrangement prevents one of these pop-up windows from pretending to be something such as a user name and password dialog box. The latest release of Java (version 1.1) offers a more advanced approach to security that allows applets to be digitally signed for verification purposes. In other words, you can create an applet and put your stamp of approval on it, which users are supposed to be able to trust. This new approach to security loosens the security constraints of earlier versions of Java, but it also pushes some responsibility onto the user. You can think of this type of security as similar to a fisheye peephole in your front door--without the peephole, you wouldn't even consider opening the door for visitors; but with the peephole, you can see enough to decide who you want to let in. There is no system of security that is completely foolproof; several security bugs in the first year after Java's release were brought to Sun's attention by programmers such as David Hopwood. The following Web site describes some of these incidents and outlines the issues regarding safe Internet programming:
    http://www.cs.princeton.edu/sip/News.html
Because of the multiple levels of security, and the continued efforts to improve these measures, Java is generally regarded as a secure way to execute code over the World Wide Web. CAUTION: These safeguards are not an absolute guarantee against malicious programming. Several security experts found ways to circumvent Java applet security during the first year of the language's availability, and the details were sent to JavaSoft and browser developers. In the future, there will undoubtedly be new security holes found with Java, as there are with any system. If you are concerned about running Java applets on your computer, you should run only applets that have been approved by a Java directory such as Gamelan or another trusted source. Gamelan, which can be found at the URL `http://www.gamelan.com`, tests applets before offering them. You also should back up any essential data on your computer regularly--which is good practice in any case. ### Java Is Platform Independent Platform independence is another way of saying that Java is architecture neutral. If both terms leave you saying "huh?," they basically mean that Java programs don't care what system they're running on. Most computer software is developed for a specific operating system. If Sid Software wanted its two-fisted 17th-century shootemup Quaker to run on Windows and Mac systems, it had to develop two versions of the software at a significant effort and expense. Platform independence is the capability of the same program to work on different operating systems; Java is completely platform independent. Java's variable types have the same size across all Java development platforms--so an integer is always the same size, no matter which system a Java program was written and compiled on. Also, as shown by the use of applets on the Web, a Java `.class` file of bytecode instructions can execute on any platform without alteration. Sun Microsystems has been aggressive in making Java available on different systems. As JavaSoft President Alan Baratz says, "Anything that feels, smells, walks, or talks like it has a processor--we'd like the Java platform to live on it." There are Java interpreters that can run programs for Microsoft Windows 95 and NT, Apple Macintosh 7.5, SPARC Solaris 2.3 or higher, and Intel x86 Solaris; other systems have Java versions under development. Java's declaration of platform independence is often trumpeted by Java advocates as a major accomplishment because it opens up a much larger audience for programs than has been readily available in the past. Although no major commercial releases of Java-based software have been introduced as of this writing (other than JavaSoft products such as HotJava and the Java WorkShop programming environment), several have been announced. In the absence of major commercial Java-based applications, Java has still managed to rapidly expand its presence on the Web as Web developers realize the value of Java applets. NOTE: One particularly interesting and long-awaited commercial Java release is Corel Office for Java, which is the first suite of office productivity applications written entirely in Java. As of this writing, a free beta version of Corel Office for Java is available for download at this URL: http://officeforjava.corel.com/
### Java Is that Other Stuff, Too One adjective that has been left out thus far is that Java is multithreaded. Threads represent a way for a computer program to do more than one task at the same time. Many operating systems are multitasking. Windows 95, for example, enables a person to write a book chapter with Word in one window while using Netscape Navigator to download every known picture of E! host Eleanor Mondale in the other. (Speaking hypothetically, of course.) A multithreaded language extends this schizophrenic behavior to programs so that more than one set of instructions can be executed concurrently. Java provides the tools to write multithreaded programs and to make these programs reliable in execution. Another thing that should be highlighted is Java's network-centric nature. Sun, the company that trademarked the phrase, "the network is the computer," has created a language that backs it up. Star7 was able to pass an object from one device to another using radio signals, and Java makes it possible to create applications that communicate across the Internet in the same way. Its networkability may be the area in which Java truly separates itself from other languages that can be used for development. As language creator James Gosling has remarked, "The thing that distinguishes Java is its approach to distributed programming." Most of Bill Joy's accolades should make more sense to you at this point, although it may take a complete reading of Java 1.1 Unleashed before you're ready to string together technical jargon like his with the proficiency of a Dilbert character. ## Java Today Now that you have an idea about what Java is and why you should use it, forsaking all others (or maybe not), you're ready to get started. To understand the status of Java development today, you should learn more about the Java Development Kit, the language Application Programming Interface (API), future APIs, and some examples of Java in action. ### The Java Development Kit The Java Development Kit (JDK) is a set of command-line tools that can be used to create Java programs. As of this writing, version 1.1 is the latest release of the JDK, and it can be downloaded from the following Web address:
    http://java.sun.com/products/JDK/../index.html
Sun supports the following platforms: Microsoft Windows 95 and NT, Solaris 2.x for SPARC and x86 systems, and Apple MacOS. The JDK version 1.1 includes the following tools: a compiler, an interpreter to run compiled Java standalone applications, an applet viewer to run Java applets, an archiver to create compressed archives, and other utilities. There are numerous alternatives to the JDK 1.1 that offer graphical user interfaces, tools to speed up debugging and program development, and other niceties. Some of these alternatives use the JDK transparently; others replace the JDK's tools entirely. Chapter 2, "Tools for Getting Started," introduces a few of these alternatives. ### The Java API The Java Application Programming Interface (API) is a set of classes used to develop Java programs. These classes are organized into groups called packages. There are packages for the following tasks: Numeric variable and string manipulation Image creation and manipulation File input and output Networking Windowing and graphical user interface design Applet programming Error handling Security Database access Distributed application communication JavaBeans components The API includes enough functionality to create sophisticated applets and applications. The Java API must be supported by all operating systems and Web software equipped to execute Java programs, so you can count on the existence of Java API class files when developing programs. The Java API is at version 1.1 at this time; Sun promises to make no changes in future versions that would require changes to source code. Although enhancements are planned for future releases of the API, there will be no removals or changes to class behavior. However, the natural tendency of software evolution dictates that some parts of the API will become obsolete, but they will still be supported. ### Extended APIs In addition to the core API that must be present with all Java implementations, Sun is developing extended APIs that further extend the features of the language. As if Java 1.1 doesn't provide a rich enough set of APIs! All but one of the following new APIs are in various stages of development at Sun: Commerce API, for secure commercial transactions Media API, which adds multimedia classes for graphics, sound, video, 3D, VRML, and telephony Servlet API, which creates applet-like Java programs that can run on a Web server Management API, to integrate with network management systems, which will be offered as part of the Solstice WorkShop development tool Socratic API, which answers the questions that have befuddled mankind for centuries, including the chicken-or-egg dilemma, the doctrine of original sin, the noise caused by trees falling in uninhabited forests, and actress Susan Lucci's lack of success at the Daytime Emmy awards If you guessed that the Socratic API was the false one, move forward two spaces--you're right. However, Microsoft could not take the risk that another company would be first to implement it--the Socratic API will begin development with ActiveX later this year. ### JavaOS In May 1996, JavaSoft announced plans to develop JavaOS, a compact operating system intended to run Java programs. The stated goal was to create the fastest and smallest platform possible that can handle Java. In addition to being a competitor to operating systems such as Microsoft Windows 95, JavaOS was targeted to put the language where it was originally intended to be: in appliances. As of this writing, JavaOS is finished and has been ported to several different processor architectures. A complete network computer implementation of JavaOS--including the HotJava browser, class libraries, and over a megabyte of fonts--requires 4M of disk space (or ROM) and 4M of memory. JavaOS and HotJava together use less than 2.5M of RAM, leaving more than 1.5M to handle the storage of cached Web pages, images or client applications, and data. No specific products using JavaOS have been announced as of yet, but I expect to see some interesting applications of JavaOS in the near future. Maybe a palmtop Web box or a programmable, networkable, electronic toothbrush. ### Web Sites One of the advantages of a Web-based phenomenon like Java is that it generates megabytes of information on the World Wide Web. Documentation, news, source code, and other material about Java is offered at thousands of sites. The following should get you started: `http://www.javasoft.com` is the official JavaSoft site. It offers online documentation, news on the latest developments, Java software to download or purchase, and links to other pertinent sites. The Java Development Kit is available from this site, as are trial versions of the Java WorkShop integrated development environment and HotJava Web browser. `http://www.gamelan.com` is the largest directory of Java applets and Java-related Web sites. This site also offers links to the winners of the Java Cup applet programming contest, and a chat applet that uses Java to offer America Online-style discussions. `http://www.jars.com` is the Java Applet Rating Service, a group that reviews Java applets. If you see an apple logo accompanying a Java program on the Web, it has been reviewed by JARS. `http://www.javaboutique.internet.com/` is another directory of Java applets that is smaller than Gamelan's collection. However, a nice collection of Java programs have been assembled here. `http://www.mbmdesigns.com/macjava/` is Apple-flavored Java, a site devoted to Macintosh implementations of Java development software and Java programs. `http://sunsite.unc.edu/javafaq/javafaq.html` is a list of frequently asked questions about Java programming answered by participants in the Java-related Usenet newsgroups. `http://k2.scl.cwru.edu/~gaunt/java/java-faq.html` is another list of questions about Java called the "Unofficial Obscure Java FAQ," which was established for some answers to infrequently asked questions about the language. `http://www.javaworld.com/` is the home page of JavaWorld magazine, which puts a lot of articles, sample source code, and news stories online. `http://www.yahoo.com/Computers_and_Internet/Programming_Languages/Java/` is a section of the Yahoo! directory devoted to Java, with more than 300 links to Web sites. ### Usenet Newsgroups Numerous messages are posted on Usenet newsgroups each day by people who are interested in Java. Some are from developers with experience in the language who can comment on advanced aspects of the language. Many are from newcomers who need help in their efforts to learn Java. In any case, Usenet is a great place to get technical assistance. Some other Usenet messages are from America Online users who have become lost in their search for pictures of Pamela Anderson Lee, but that's another story entirely. The following newsgroups currently are available on Usenet, which can be accessed with an Internet account, a subscription to online services such as CompuServe and America Online, and other means: `comp.lang.java.advocacy` is a newsgroup for debate and diatribes about Java and other languages that can be compared to it. `comp.lang.java.announce` is a moderated newsgroup with announcements related to Java--often used for company press releases, Web site launches, and similar information. `comp.lang.java.api` is a newsgroup for discussion of the Java Application Programming Interface, the full class library that comes with Java WorkShop, and other development environments for the language. `comp.lang.java.programmer` is a newsgroup for questions, answers, and other talk related to Java programming. `comp.lang.java.security` is a newsgroup where the security issues related to Java are discussed, with an emphasis on the security of executing Java applets over the World Wide Web. `comp.lang.java.setup` is a newsgroup for the discussion of installation problems regarding Java development tools and similar issues. `comp.lang.java.tech` is an advanced newsgroup where technical issues of the Java language are discussed. `comp.lang.java.misc` is a newsgroup for everything else related to Java. It generally is the most active of the newsgroups. ## Java Tomorrow During its first year and a half of public life, Java has enjoyed the same advantages bestowed on child prodigies. Most of the talk has been about its great potential; criticism has been overshadowed by excited anticipation about what it will do in the future. As an example of this, consider the words of Marc Andreesen, himself a child prodigy of sorts, after creating Mosaic while he was an undergraduate. Andressen's endorsement was one of the reasons for Java's astonishing growth. He said the following at the JavaOne conference: Java is a huge opportunity for all of us, all the developers in the industry, who are, all of a sudden, able to develop applications in days or weeks, instead of months or years; who have new ways of distributing those applications, making money from those applications without having to fight for retail shelf space. One of the applications that has been announced is the WordPerfect Office Suite. Corel has shown off a beta version of Office Suite--redesigned entirely using Java, which makes it available for a wide range of platforms. IBM is redesigning its OS/2 Warp operating system to make it optimized for Java programs. Microsoft has even talked about integrating Java with the Windows platform. The technology venture capital firm, Kleiner, Perkins, Caufield, and Byers (KPCB), has offered $100 million to support companies doing work with Java. The next year is going to be a little tougher on the tyke. If Java is to remain the object-oriented language of people's affections, it has to start fulfilling some of its promises. Granted, the release of Java 1.1 has certainly quieted some of the skeptics, but until some major commercial software becomes available in Java form, there will continue to be questions surrounding Java's practical usefulness. Growing up isn't always an easy process for those who have achieved outlandish success early in life. Ask any former child star who has traded in a Screen Actors Guild card for a life of crime or a career in talk shows. By picking up a book of this kind and learning about Java, you're one of the people who is expected to do something remarkable with it. The developers of Java, the nation's press, and those of us who make our living writing Java books by the ton are depending on you. Not to mention the folks at KPCB who gave up $100 million of their allowances to fund Java-related programming. It's one of the prices you pay for being in the right place at the right time.
| ©Copyright, Macmillan Computer Publishing. All rights reserved.