ONJava.com -- The Independent Source for Enterprise Java
oreilly.comSafari Books Online.Conferences.

advertisement

AddThis Social Bookmark Button

Where Java Is Headed -- and Where O'Reilly Is Going

A year ago, we were the first to bring you books on Java 1.1. Those books have become must-have references for anyone who is doing serious work in Java. A year before that, we brought you Java in a Nutshell, the first serious book about Java. Our Java books have given you the information you needed when you needed it. You've made our books successful. In return, we want to give you an advance look at where we're taking the Java Series--to a large extent, it's a look at where Java is taking us.

This year, I expect to see Java come into its own as a platform for advanced applications. Java 1.2 promises major improvements in user interface tools and graphics, a much more flexible model for controlling access to system resources, and many other improvements. We're also waiting for the media framework, the 3D package, the sound API,... Writing about all of these will keep us very busy in the coming year. In the next few months, you'll see new O'Reilly books on Java security, a separate book focusing on cryptography and cryptographic applications, plus books on the Swing components, 2D graphics, Media Players and Java servlets. And you'll also see new editions of Java in a Nutshell and many of our older Java books.

Like all O'Reilly books, these new books are more than just documentation: they give you a feeling for how the pieces fit together into a whole. All of the books contain substantial examples showing the kind of code you need to write. Java Cryptography includes a simple, secure mail client and a secure "talk" application. Java Security provides an in-depth discussion of how to work with the Java security manager; it even shows you how to write a security manager and a class loader that cooperate to grant additional privileges to classes from recognized sources. Java Swing explains how to use all of the components in the new Swing package. All of our books are written by serious developers; they know the problems you face and the questions you ask.

Ever since Java was first announced, I've believed that it would be the tool for building a new generation of software. Applets gave the first limited hints of what was possible: intelligent agents, dynamically reconfigurable tools, embedded systems controlled through the network, and more. With the packages JavaSoft has announced for the next year, all the building blocks for the new generation will be in place. We'll have a security model that lets software move as freely as data moves; we'll have truly sophisticated graphics capabilities; we'll have user interface components that work on everything from tiny hand-held devices to desktop workstations. All that remains is to take these tools and build something from them. O'Reilly's Java Series will show you how.

Immediate Future
Java Security | Java Cryptography | Java Servlet Programming
Java Swing | Java Streams

Coming Soon
Java 2D | Java Media Players

Nutshells
Java in a Nutshell | JFC in a Nutshell
Java Enterprise in a Nutshell

Immediate Future

Java Security, by Scott Oaks

Java SecurityJava's most striking claim is that it provides a secure programming environment. However, despite lots of discussion, few people understand precisely what Java's claims mean and how it backs up those claims. Java Security is an in-depth exploration aimed at developers, network administrators, and anyone who needs to work with or understand Java's security mechanisms. It discusses in detail what security means and doesn't mean, what Java's default security policies are, and how to create and implement your own policies.

In doing so, Java Security provides detailed coverage of security managers, class loaders, the access controller, and much of the java.security package. It discusses message digests, certificates, and digital signatures, showing you how to use Java's facilities for signing classes or implement your own signature facility. It also shows you how to write a class loader that recognizes signed classes, verifies the signature, and cooperates with a security manager to grant additional privileges. It discusses the problem of managing cryptographic keys and shows you how to implement your own key management systems.

Java Security is an essential book for everyone using Java in real-world software. If you're deploying software written in Java, you need to know how to grant your classes the privileges they need, without granting privileges to untrusted classes. You need to know how to protect your systems against intrusion and corruption. Java provides the tools; this book shows you how to use them.

Java Cryptography, by Jonathan Knudsen

Java Cryptography Cryptography, the science of secret writing, is the biggest, baddest security tool in the application programmer's arsenal. Cryptography provides four services that are crucial in secure programming:

  • A cryptographic cipher can protect the secrecy of your data. On the Internet, the walls have ears.
  • Cryptographic certificates can be used to prove identity (authentication). Identities are important in electronic commerce, online information services, and other areas.
  • Digital signatures ensure that your data has not been damaged or tampered with.
  • Nonrepudiation, a variation of authentication, makes people accountable for their actions.

This book covers cryptographic programming in Java. Java 1.1 and Java 1.2 provide extensive support for cryptography with an elegant architecture, the Java Cryptography Architecture (JCA). Another set of classes, the Java Cryptography Extension (JCE), provides additional cryptographic functionality. This book covers the JCA and the JCE from top to bottom, describing the use of the cryptographic classes as well as their innards.

The book is designed for moderately experienced Java programmers who want to learn how to build cryptography into their applications. No prior knowledge of cryptography is assumed. The book is peppered with useful examples, ranging from simple demonstrations in the first chapter to full-blown applications in later chapters. The examples include:

  • implementations of the ElGamal signature and cipher algorithms
  • a network talk application that encrypts all data sent over the network
  • an email application that encrypts its messages
  • creating signed applets

Java Servlet Programming, by Jason Hunter with William Crawford

Two years ago, the hype surrounding applets put Java on the map as a programming language for the Web. Today, Java servlets stand poised to take Java to the next level as a web development language. The main reason is that servlets offer a fast, powerful, portable replacement for CGI scripts.

The Java Servlet API, introduced as the first standard extension to Java and bundled with Java 1.2, provides a generic mechanism to extend the functionality of any kind of server. Servlets are most commonly used, however, to extend web servers, performing tasks traditionally handled by CGI programs. Web servers that can support servlets include: Apache, Netscape's FastTrack and Enterprise Servers, Microsoft's IIS, O'Reilly's WebSite, and JavaSoft's Java Web Server.

The beauty of servlets is that they execute within the web server's process space and they persist between invocations. This gives servlets tremendous performance benefits over CGI programs. Yet because they're written in Java, servlets are far less likely to crash a web server than a C-based NSAPI or ISAPI extension. Servlets have full access to the various Java APIs and to third-party component classes, making them ideal for use in communicating with applets, databases, and RMI servers. Plus, servlets are portable between operating systems and between servers -- with servlets you can "Write once, serve everywhere."

Java Servlet Programming covers everything you need to know to write effective servlets and includes numerous examples that you can use as the basis for your own servlets. The book explains the servlet lifecycle, showing how you can use servlets to maintain state information effortlessly. It also describes how to serve dynamic web content, including both HTML pages and multimedia data. Finally, it explores more advanced topics like integrated session tracking, efficient database connectivity using JDBC, applet-servlet communication, inter-servlet communication, and internationalization.

Java Swing, by Robert Eckstein, Marc Loy, and Dave Wood

The Swing classes eliminate Java's biggest weakness: its relatively primitive user interface toolkit. Swing provides many new components and containers that allow you to build sophisticated user interfaces, far beyond what was possible with AWT. The old components have been greatly improved, and there are many new components, like trees, tables, and even text editors. It also adds several completely new features to Java's user interface capabilities: drag-and-drop, undo, and the ability to develop your own "look and feel", or the ability to choose between several standard looks. The Swing components are all "lightweight", and therefore provide more uniform behavior across platforms, and making it easier to test your software.

All these new features mean that there's a lot to learn. Swing is undoubtedly way ahead of AWT--or, for that matter, any widely available user interface toolkit--but it's also a lot more complicated. It's still easy to do simple things. But once you've seen what's possible, you won't want to do the simple things.

Java Swing (the book) gives you in-depth coverage of everything you need to know to take full advantage of Swing, providing detailed descriptions of every class and interface in the key Swing packages. It shows you how to use all of the new components, allowing you to build state-of-the-art user interfaces. It also discusses how the components implement the MVC (Model View Controller) architecture, so you can understand how the components are designed and subclass them intelligently. Finally, it shows how to create your own "look and feel". Throughout, Java Swing focuses on giving you the context you need to understand what you're doing. It's more than documentation; Java Swing helps you develop code quickly and effectively.

Whether you're a serious Java developer, or just trying to find out what Java can do, you'll find Java Swing an indispensable guide.

Java Streams, by Elliotte Harold

All of Java's I/O facilities are based on streams, which provide simple ways to read and write data of different types. Java provides many different kinds of streams, each with its own application. The universe of streams is divided into four large categories: input streams and output streams, for reading and writing binary data; and readers and writers, for reading and writing textual (character) data. You're almost certainly familiar with the basic kinds of streams--but did you know that there's a CipherInputStream for reading encrypted data? And a ZipOutputStream for automatically compressing data? Do you know how to use buffered streams effectively to make your IO operations more efficient? This book tells you all you ever need to know about streams--and probably more.

A discussion of I/O wouldn't be complete without treatment of character sets and formatting. Java supports the UNICODE standard, which provides definitions for the character sets of most written languages. Consequently, Java is the first programming language that lets you do I/O in virtually any language. Java also provides a sophisticated model for formatting textual and numeric data. This book shows you how to control number formatting, use characters aside from the standard (but outdated) ASCII character set, and get a head start on writing truly multi-lingual software.

Coming Soon

Java 2D, by Jonathan Knudsen

One weakness of Java has been its graphics capabilities. Java 1.0 and 1.1 only included simple primitives for line drawing: lines could only be one pixel wide, they could only be solid, and there wasn't any good way to draw curves. Font management and color management were also weak. Java 2D covers the many classes in Java 1.2 that address these problems (collectively called the "2D API"). The 2D API gives your applications the ability to produce high quality, professional images on a screen or printer. This book describes the 2D API from top to bottom, demonstrating how to set line styles and pattern fills as well as more advanced techniques of image processing and font handling. You'll see how to create and manipulate the three types of graphics objects: shapes, text, and images. Other topics include image data storage, color management, font glyphs, devices, and printing.

Java Media Players, by Bill Day

Java Media Players provides complete coverage of Media Players, the first installment of the Java Media Framework. Players greatly simplify media playback. For example, a Player makes it simple to synchronize audio and video: something we see every day, but something that's also beyond the scope of most Web technologies. This book is important to everyone who is interested in Java-based media. In addition to covering the basics, it shows you how to synchronize several streams, play in slow motion, stop the action, search for a particular spot, and more. It provides an overview of the most common media formats, so you can make intelligent decisions about which format to use. Whether you're a professional software engineer, a multimedia developer, or a Webmaster, you'll find that Java Media Players shows you how to deliver and synchronize media content painlessly.

Nutshells

Cracking the Nutshell, by Paula Ferguson, O'Reilly Editor

As the Java APIs proliferate, it is increasingly clear that "in a nutshell" is a misnomer when applied to Java -- it has become impossible to condense Java into a single nutshell. With Java 1.1, we solved this problem by holding back on the still-evolving Enterprise APIs, cutting down on the examples in Java in a Nutshell, and publishing Java Examples in a Nutshell.

With the emergence of Java 1.2, we've had to look for a way to crack the nutshell into a few more pieces. As soon as is possible after the release of Java 1.2, we'll be bringing you JFC in a Nutshell, with compact coverage of all the GUI and graphics related APIs. In the third edition of Java in a Nutshell, we'll focus on the non-graphical APIs and give you a complete overview of the new features of Java 1.2. Another new book, Java Enterprise in a Nutshell, will provide compact reference material on the Java Enterprise APIs, including RMI, IDL, and JDBC. And of course, as time permits, we'll update Java Examples in a Nutshell to include practical real-world programming examples for Java 1.2.

Our original concept of Java "in a nutshell" has divided into four books and there's no guarantee that we won't break off more new pieces as the need arises. In the end, we want to keep the books reasonably sized, so that they remain useful as quick references rather than as doorstops.

Java in a Nutshell, 3rd Edition, by David Flanagan

The third edition of this bestselling book covers Java 1.2. For Java programmers who are migrating to the new release, it introduces all of the new features of the Java 1.2 API. For seasoned programmers who are newcomers to Java, it still contains an advanced introduction to the language that is designed to get you up to speed fast. Java in a Nutshell, 3rd Edition, provides compact reference material on all the classes, methods, and variables in the following APIs: java.lang, java.io, java.math, java.net, java.text, java.util, and java.security.

JFC in a Nutshell, by David Flanagan

The Java Foundation Classes (JFC) encompass all of the GUI and graphics related classes in Java 1.2. JFC in a Nutshell provides an in-depth overview of important pieces of the JFC, such as the Swing components and Java 2D, so you can start using these exciting new technologies right away. The book also includes compact reference material on all of the classes, methods, and variables in the numerous java.awt packages. This reference material covers all of the new JFC classes in Java 1.2, as well as the existing Java 1.1 AWT classes.

Java Enterprise in a Nutshell, by William Crawford, Jim Farley, and Kris Magnusson

The Java Enterprise APIs are essential building blocks for creating enterprise-wide distributed applications in Java. This book covers the RMI, IDL, JDBC, JNDI, and Java servlets APIs, among others, providing a fast-paced tutorial on each technology. Java Enterprise in a Nutshell also contains our classic-style, compact reference material on all of the classes in the various packages the comprise the Enterprise APIs. The book is a must-have quick reference for anyone who is doing enterprise development with Java.