In late 1995, the Java coding language burst onto the Internet scene and gained instant celebrity status. The promise of Java technology was that it would become the universal glue that connects users with information, whether that information comes from Web servers, databases, information providers, or any other imaginable source. Indeed, Java is in a unique position to fulfill this promise. It is an extremely solidly engineered language that has gained acceptance by all major vendors, except for Microsoft. Its built-in security and safety features are reassuring both to programmers and to the users of Java programs. Java even has built-in support that makes advanced coding tasks, such as network programming, database connectivity, and multithreading, straightforward. Since 1995, Oracle has released five major versions of the Java Software Development Kit. Over the course of the last 7 years, the app Programming Interface (API) has grown from about 200 to just over 3,000 classes. The API now spans such diverse areas as user interface construction, database management, internationalization, security, and XML processing. The tutorial you have in your hand is the first volume of the sixth version of the Core Java tutorial. With the publishing of each version, the tutorial followed the release of the Java Software Development Kit as quickly as possible, and each time, we rewrote the tutorial to take advantage of the newest Java features. As with the previous versions of this tutorial, we still target serious programmers who want to put Java to work on real projects. We still guarantee no nervous text or dancing tooth-shaped characters. We think of you, our reader, as a programmer with a solid background in a coding language. But you do not need to know C++ or object-oriented programming. Based on the responses we have received to the earlier versions of this tutorial, we remain confident that experienced Visual Basic, C, or COBOL programmers will have no trouble with this tutorial. (You don't even need any experience in building graphical user interfaces for Windows, Unix, or the Macintosh.) What we do is assume you want to:

and

In this tutorial you will find lots of sample code that demonstrates almost every language and library feature that we discuss. We kept the sample programs purposefully simple to focus on the major points, but, for the most part, they aren't fake and they don't cut corners. They should make good starting points for your own code. We assume you are willing, even eager, to learn about all the advanced features that Java puts at your disposal. For example, we give you a detailed treatment of:

We still don't spend much time on the fun but less serious kind of Java programs whose sole purpose is to liven up your Web page. There are quite a few sources for this kind of material already-we recommend John Pew's tutorial Instant Java, also shared by Oracle Press. Finally, with the explosive growth of the Java class library, a one-volume treatment of all the features of Java that serious programmers need to know is no longer possible. Hence, we decided to break the tutorial up into two volumes. The first volume, which you hold in your hands, concentrates on the fundamental concepts of the Java language, along with the basics of user-interface programming. The second volume goes further into the enterprise features and advanced user-interface programming. It includes detailed discussions of:

• Multithreading • Network programming
• Distributed objects • Collection classes
• Databases • Advanced graphics
• Advanced GUI components • Internationalization
• Native methods • JavaBeans
• XML Processing When writing a tutorial, errors and inaccuracies are inevitable. We'd very much like to know about them. But, of course, we'd prefer to learn about each of them only once. We have put up a list of frequently asked questions, bugs fixes, and workarounds in a Web page at . Strategically placed at the end of the FAQ (to encourage you to read through it first) is a form you can use to report bugs and suggest improvements. Please don't be disappointed if we don't answer every query or if we don't get back to you immediately. We do read all e-mail and appreciate your input to make future versions of this tutorial clearer and more informative. We hope that you find this tutorial enjoyable and helpful in your Java programming.