O'reilly First Edition May 2000 ISBN: 1-56592-718-4, 722 Pages
Total Page:16
File Type:pdf, Size:1020Kb
Learning Java Pat Niemeyer Jonathan Knudsen Publisher: O'Reilly First Edition May 2000 ISBN: 1-56592-718-4, 722 pages For programmers either just migrating to Java or already working steadily in the forefront of Java development, Learning Java gives a clear, systematic overview of the Java 2 Standard Edition. It covers the essentials of hot topics like Swing and JFC; describes new tools for signing applets; and shows how to write networked clients and Copyright servers, servlets, and JavaBeans as state-of-the-art user interfaces. Table of Contents Includes a CD-ROM containing example code and JBuilder for Index Windows and Solaris. Full Description About the Author Reviews Examples Reader reviews Errata Learning Java Preface New Developments Audience Using This Book Getting Wired Conventions Used in This Book How to Contact Us Acknowledgments 1. Yet Another Language? 1.1 Enter Java 1.2 A Virtual Machine 1.3 Java Compared with Other Languages 1.4 Safety of Design 1.5 Safety of Implementation 1.6 Application and User-Level Security 1.7 Java and the World Wide Web 1.8 Java as a General Application Language 1.9 A Java Road Map 2. A First Application 2.1 HelloJava1 2.2 HelloJava2: The Sequel 2.3 HelloJava3: The Button Strikes! 2.4 HelloJava4: Netscape's Revenge 3. Tools of the Trade 3.1 The Java Interpreter 3.2 Policy Files 3.3 The Class Path 3.4 The Java Compiler 3.5 Java Archive (JAR) Files 4. The Java Language 4.1 Text Encoding 4.2 Comments 4.3 Types 4.4 Statements and Expressions 4.5 Exceptions 4.6 Arrays 5. Objects in Java 5.1 Classes 5.2 Methods 5.3 Object Creation 5.4 Object Destruction 6. Relationships Among Classes 6.1 Subclassing and Inheritance 6.2 Interfaces 6.3 Packages and Compilation Units 6.4 Visibility of Variables and Methods 6.5 Arrays and the Class Hierarchy 6.6 Inner Classes 7. Working with Objects and Classes 7.1 The Object Class 7.2 The Class Class 7.3 Reflection 8. Threads 8.1 Introducing Threads 8.2 Threads in Applets 8.3 Synchronization 8.4 Scheduling and Priority 8.5 Thread Groups 9. Basic Utility Classes 9.1 Strings 9.2 Math Utilities 9.3 Dates 9.4 Timers 9.5 Collections 9.6 Properties 9.7 The Security Manager 9.8 Internationalization 10. Input/Output Facilities 10.1 Streams 10.2 Files 10.3 Serialization 10.4 Data Compression 11. Network Programming with Sockets and RMI 11.1 Sockets 11.2 Datagram Sockets 11.3 Simple Serialized Object Protocols 11.4 Remote Method Invocation (RMI) 12. Programming for the Web 12.1 Uniform Resource Locators (URLs) 12.2 The URL Class 12.3 Web Browsers and Handlers 12.4 Talking to CGI Programs and Servlets 12.5 Implementing Servlets 13. Swing 13.1 Components 13.2 Containers 13.3 Events 13.4 Event Summary 13.5 Multithreading in Swing 14. Using Swing Components 14.1 Buttons and Labels 14.2 Checkboxes and Radio Buttons 14.3 Lists and Combo Boxes 14.4 Borders 14.5 Menus 14.6 The PopupMenu Class 14.7 The JScrollPane Class 14.8 The JSplitPane Class 14.9 The JTabbedPane Class 14.10 Scrollbars and Sliders 14.11 Dialogs 15. More Swing Components 15.1 Text Components 15.2 Trees 15.3 Tables 15.4 Desktops 15.5 Pluggable Look-and-Feel 15.6 Creating Custom Components 16. Layout Managers 16.1 FlowLayout 16.2 GridLayout 16.3 BorderLayout 16.4 BoxLayout 16.5 CardLayout 16.6 GridBagLayout 16.7 Nonstandard Layout Managers 16.8 Absolute Positioning 17. Drawing with the 2D API 17.1 The Big Picture 17.2 The Rendering Pipeline 17.3 A Quick Tour of Java 2D 17.4 Filling Shapes 17.5 Stroking Shape Outlines 17.6 Using Fonts 17.7 Displaying Images 17.8 Using Drawing Techniques 17.9 Printing 18. Working with Images and Other Media 18.1 Implementing an ImageObserver 18.2 Using a MediaTracker 18.3 Producing Image Data 18.4 Filtering Image Data 18.5 Working with Audio 18.6 Working with Movies 19. Java Beans 19.1 What's a Bean? 19.2 Building Beans 19.3 Hand-Coding with Beans 19.4 Putting Reflection to Work 19.5 BeanContext and BeanContextServices 19.6 The Java Activation Framework 19.7 Enterprise JavaBeans 20. Applets 20.1 The JApplet Class 20.2 The <APPLET> Tag 20.3 Using the Java Plug-in 20.4 Using Digital Signatures 21. Glossary A. Content and Protocol Handlers A.1 Writing a Content Handler A.2 Writing a Protocol Handler B. BeanShell: Simple Java Scripting B.1 Running BeanShell B.2 Java Statements and Expressions B.3 BeanShell Commands B.4 Scripted Methods and Objects B.5 Learning More . Colophon Preface This book is about the Java™ language and programming environment. If you've been at all active on the Internet in the past few years, you've heard a lot about Java. It's one of the most exciting developments in the history of the Internet, rivaling the creation of the World Wide Web. Java became the darling of the Internet programming community as soon as the alpha version was released. Immediately, thousands of people were writing Java applets to add to their web pages. Interest in Java only grew with time, and support for Java in Netscape Navigator guaranteed it would be a permanent part of the Net scene. What, then, is Java? Java is a network programming language that was developed by Sun Microsystems. It's already in widespread use for creating animated and interactive web pages. However, this is only the start. The Java language and environment are rich enough to support entirely new kinds of applications, like dynamically extensible browsers and mobile agents. There are entirely new kinds of computer platforms being developed around Java (handheld devices and network computers) that download all their software over the network. In the coming years, we'll see what Java is capable of doing; fancy web pages are fun and interesting, but they certainly aren't the end of the story. If Java is successful (and that isn't a foregone conclusion), it could change the way we think about computing in fundamental ways. This book gives you a head start on a lot of Java fundamentals. Learning Java attempts to live up to its name by mapping out the Java language, its class libraries, programming techniques, and idioms. We'll dig deep into interesting areas and at least scratch the surface of the rest. Other titles in the O'Reilly & Associates Java Series will pick up where we leave off and provide more comprehensive information on specific areas and applications of Java. Whenever possible, we'll provide meaningful, realistic examples and avoid cataloging features. The examples are simple but hint at what can be done. We won't be developing the next great "killer app" in these pages, but we hope to give you a starting point for many hours of experimentation and tinkering that will lead you to learn more on your own. New Developments This book, Learning Java, is actually the third edition—reworked and retitled—of O'Reilly's popular Exploring Java. We've de-emphasized web-page applets this time around, reflecting their diminishing role over the past couple of years in creating "smart" web pages. Other technologies have filled in the gap: JavaScript on the client side, and Java servlets and Active Server Pages on the server side. We cover the most interesting features of Sun's newest release of Java, officially called Java 2 SDK Version 1.3. (In the old days, it would have been called "JDK," for "Java development kit;" we use the newer, officially blessed "SDK," for "software development kit," throughout this book.) These features include servlets, the Java Media Framework ( JMF), timers, the collections, 2D graphics, and image-processing APIs, using the Java security manager, and using Java 2 signed applets. Another important change, though not as recent as SDK 1.3, is the ascendancy of Java Swing as the main API for graphical user interface programming. Much of the material relating to AWT, Java's original GUI programming interface, has been recast and updated to use Swing facilities. Audience This book is for computer professionals, students, technical people, and Finnish hackers. It's for everyone who has a need for hands-on experience with the Java language with an eye toward building real applications. This book could also be considered a crash course in object-oriented programming; as you learn about Java, you'll also learn a powerful and practical approach to object-oriented software development. Superficially, Java looks like C or C++, so you'll be in the best position to use this book if you've some experience with one of these languages. If you do not, you might want to refer to books like O'Reilly's Practical C Programming for a more thorough treatment of basic C syntax. However, don't make too much of the syntactic similarities between Java and C or C++. In many respects, Java acts like more dynamic languages such as Smalltalk and Lisp. Knowledge of another object- oriented programming language should certainly help, although you may have to change some ideas and unlearn a few habits. Java is considerably simpler than languages like C++ and Smalltalk. Although we encourage you to take a broad view, you would have every right to be disappointed if we ignored the Web.