The magazine of the Melbourne PC User Group

Java 5 - for the bookshelf
Major Keary

Widely referred to as Java 5, the latest version of Java is officially named Java 2 Standard Edition 5.0 (J2SE5). It has undergone significant enhancement and — according to the authors of Learning Java — "is targeted at  developers and has the biggest set of language changes since Java's birth".

Java is widely included in the programming languages taught in computer science courses, and programmers and developers are finding it necessary to add Java to their respective repertoire.

If you have a serious interest in learning Java 5 there are two comprehensive titles that are suitable as texts for formal courses, for self-teaching, or as guides for developers/programmers who want to upgrade their Java skills.

Learning Java

The third edition of O'Reilly's Learning Java "is for computer professionals, students, technical people, and Finnish hackers". It is not for raw novices who want a teach-yourself-Java text; it is best suited to readers who are programmers approaching Java for the first time, users who want to catch up with the latest version, and students.

If you are not quite sure of what Java does, its origins, and where it fits into the pantheon of programming languages, the book's first chapter — which requires no technical knowledge — is well worth reading. The second chapter is a tutorial that demonstrates, and discusses, a simple application.

A companion CD contains all the code examples used in the book, and includes Windows and Linux versions of Java 5, Win/Lin/Mac versions of NetBeans IDE 4.1 RC1; Win/Mac versions of Eclipse IDE 3.1; Win/Mac versions of Apache Ant 1.6.2; BeanShell 2.0b2; and Jakarta Tomcat 5.5.9. Several chapters from the first edition are also on the CD in PDF and HTML files.

This is a thorough coverage of Java 5 and includes chapters on Java-related applications: NetBeans, Eclipse, and XML-based applications. As one expects of an O'Reilly book, the editorial people and the authors have combined to produce a text with a high readability index and one in which information is well organised and easy to find. The index runs to almost sixty pages, there is a comprehensive table of contents, and an excellent glossary. Example code is used extensively to support the text.

The term 'readability' is used in the sense of: the quality of or capacity for, being read with pleasure or interest, considered as measured by certain assessable factors, as ease of comprehension, attractiveness of subject and style [OED]. The authors are excellent technical communicators, and the publisher has done a good job of typographic design without any distracting effects.

The book's style is tutorial, but each chapter leads with extensive discussion of the particular topic. The focus is on how to use Java 5 rather than conceptual issues, which makes it a good ongoing reference.
 
Niemeyer and Knudsen: Learning Java 3/e
ISBN 0-596-00873-2
Published by O'Reilly,
954 pp. + CD,
RRP $84.95 incl. GST

Java 5 Illuminated

This title is from Jones and Bartlett, a leading publisher of course texts. A companion CD contains all of the example code used in the book and "provides a browser-based module ... [that visually] illustrates the execution of code that implements the concepts taught ...". The CD also contains the necessary software: Integrated Development Environments (IGRASP, JCreator, BlueJ, and Borland JBuilder Foundation X), Java 5, and TextPad.

The book is designed as a text for a formal introductory course in Java, but is worth considering for self-directed study. There is no requirement for prior programming knowledge, but that assumes one is in a formal classroom environment where — in the introductory part —a teacher puts flesh on the text's bones. Anyone using Java 5 Illuminated as a self-teaching resource should have a grasp of basic programming concepts and terminology.

As the book moves on to the real task — learning Java — there is no skimping on detail and discussion of concepts. The style is not 'conventional tutorial' where the reader is provided with plain how-to information in step 1, step 2, ... format. The object here is to make the student use Java rather than read about it, to be Java-enlightened rather than learn by rote. As the authors say in the preface, under the heading pedagogy, "concepts are always taught first, followed by complete examples illustrating these concepts".

Extensive use is made of didactic code, which is printed using spot colour "to better illustrate the syntax of the code and to reflect the use of colours in today's IDE tools"; it works well. I was impressed by the margin notes that offer tips, advice, warnings, and cross references; the Common Error Trap notes are especially useful (for example, "When swapping elements, be sure to save a value before replacing it with another value to avoid losing data").

There are plenty of exercises, problems, and projects. Solutions to selected exercises are at the back of the book; further 'instructor materials' (more solutions and PowerPoint slides for each chapter) are available to instructors on the publisher's website.

Appendices contain useful information on reserved words and keywords; operator precedence; Unicode; representing negative integers; representing floating-point numbers; and Java Classes APIs.

Anyone who teaches Java should consider this as either a course text for students or as a foundation for designing classroom presentations. Anyone who wants a formal self-teaching resource should examine Java 5 Illuminated; provided one has the discipline to work through the examples and exercises it is comprehensive and well presented. The book has a sub-title, An Active Learning Approach, which is an accurate description.

This title is available direct from Elsevier Australia Customer Service, tel. 1800 263 951, fax 02 9517 2249, Email: customerserviceau@lseviencom.

Anderson and Franceshi: Java 5 Illuminated
ISBN 0-7637-1667-7
Published by Jones and Bartlett,
1177 pp. + CD,
RRP $95.00 incl. GST

Java Cryptography Extensions

This text has a sub-title, Practical Guide for Programmers. It is intended to be a guide, not a definitive work, and does not pretend to provide more information about cryptography per se than is necessary for its purpose: to show software engineers and programmers how to implement crypto in Java. Cryptography is a discipline in its own right and its practitioners require specialised mathematical knowledge that software engineers and programmers cannot be expected to pursue. The author has a long crypto history and also engages in research using Java; he is well placed to choose just how much detail of crypto concepts is required for a skilled Java practitioner to implement a cryptosystem.

Here the focus is on practical issues. The example code was developed "primarily on an Apple PowerMac G4,
and testing was done on a Windows XP box as well", which confirms that Java's platform portability is not affected by the complexities of crypto.

The author's eye for practical issues is demonstrated by his cautionary note in a section entitled, Working with Jurisdiction Policy Files; anyone developing commercial software that is going to be exported should ensure there is no conflict with some other country's law. There are two issues: export restrictions and import restrictions, and both have to be considered when software is developed for a single enterprise that operates in multiple jurisdictions. Java's cryptographic libraries reflect that situation, being divided into Java Cryptography Architecture (JCA), and Java Cryptography Extension (OCE). "However, this platform is not without its idiosyncrasies", a topic discussed in some detail.

A key problem for anyone developing a cryptosystem is to comprehend the terminology and concepts. The author does a good job of explaining those things without breaking into esoteric mathematical solutions. He points out that such information tends to fade from memory — gets rusty — when the need for it is intermittent; the book should also serve as an ongoing resource for refreshing one's memory on such topics as Electronic Code Book (ECB), Cipher Block Chaining (CBC), and Cipher Feedback Mode (CFB).

Chapters deal with symmetric ciphers; asymmetric ciphers and key agreement protocols; message digests, authentication codes, and digital signatures; and managing keys and certificates.

A thorough coverage that gets the right balance between too much technical detail and not enough. An essential resource for anyone involved in designing, developing, or programming crypto in Java applications. The author provides sound, authoritative advice on picking algorithms.

This title is available direct from Elsevier Australia Customer Service, tel. 1800 263 951, fax 02 9517 2249, Email: customerserviceau@elsevier.com.

Jason Weiss: Java Cryptography Extensions
ISBN 0-12-742751-1
Published by Morgan Kaufmann,
158 pp.,
RRP $34.65 incl. GST

Reprinted from the June 2006 issue of PC Update, the magazine of Melbourne PC User Group, Australia

[ About Melbourne PC User Group ]