What if you could condense Java down to its very best features and build better applications with that simpler version? In this book, veteran Sun Labs engineer Jim Waldo reveals which parts of Java are most useful, and why those features make Java among the best programming languages available.
Every language eventually builds up crud, Java included. The core language has become increasingly large and complex, and the libraries associated with it have grown even more. Learn how to take advantage of Java's best features by working with an example application throughout the book. You may not like some of the features Jim Waldo considers good, but they'll actually help you write better code.
Learn how the type system and packages help you build large-scale software
Use exceptions to make code more reliable and easier to maintain
Manage memory automatically with garbage collection
Discover how the JVM provides portability, security, and nearly bug-free code
Use Javadoc to embed documentation within the code
Take advantage of reusable data structures in the collections library
Use Java RMI to move code and data in a distributed network
Learn how Java concurrency constructs let you exploit multicore processors
Chapter 1 An Introduction to Java
What Is Java Good For?
Chapter 2 The Type System
Why Have Three?
Inside and Out
A Real Problem
Chapter 3 Exceptions
Use and Abuse
The Dark Side
Chapter 4 Packages
Packages and Access Control
Packages and the Filesystem
Chapter 5 Garbage Collection
Garbage Collection and References
Chapter 6 The Java Virtual Machine
Chapter 7 Javadoc
Style Guides, Editors, and Nonterminating Discussions
Chapter 8 Collections
Some Last Thoughts
Chapter 9 Remote Method Invocation and Object Serialization
Jim Waldo is a Distinguished Engineer with Sun Microsystems Laboratories, where he investigates next-generation large-scale distributed systems. He is currently the technical lead of Project Darkstar, a multi-threaded, distributed infrastructure for massive multi-player on-line games and virtual worlds. Prior to his current assignment with Sun Labs, he was the lead architect for Jini, a distributed programming system based on Java.
Before joining Sun, Jim spent eight years at Apollo Computer and Hewlett Packard working in the areas of distributed object systems, user interfaces, class libraries, text and internationalization. While at HP, he led the design and development of the first Object Request Broker, and was instrumental in getting that technology incorporated into the first OMG CORBA specification.
Jim is a Professor of the Practice at Harvard University, where he teaches distributed computing and topics in the intersection of policy and technology in the department of computer science.
Jim received his Ph.D. in philosophy from the University of Massachusetts (Amherst). He also holds M.A. degrees in both linguistics and philosophy from the University of Utah. He is a member of the IEEE and ACM.
The animal on the cover of Java: The Good Partsis a black giant squirrel (Ratufa bicolor), formerly known as a Javansquirrel (Sciurus javensis). It is also referred totoday as a Malayan giant squirrel or jelerang. This species can be foundthroughout southeast Asia, though its range has diminished due todeforestation. It lives in the high forest canopy, foraging during the dayfor wild fruit and nuts.
One of the largest squirrels in the world, the black giant squirrel'stail is slightly longer than its body. Taking this into account, its averagelength is two to three feet. There is a clear color separation between thesquirrel's back (deep brown or black) and the cream abdomen, giving rise tothe "bicolor" in its Latin name. The squirrels' long tails are used as acounterweight to help them balance on branches. It is also notable that intheir basic posture, the tail hangs limp rather than curling upright (as isthe case with other tree squirrels).
Though it lives in the depths of the forest and tends to be reclusive,the black giant squirrel is easily tamed and frequently kept as a pet. It isalso a food source for natives; in fact, as of 2008, it is listed as anear-threatened species due to overhunting, as well as habitat loss.
This book seems to be totally in opposition to the current trend of new languages trying to overcome the Java's shortcoming: Scala, XTend, Ceylon ... He goes back to the rationale that guided Java to show that there was no mistakes in its conception. Which, I reckon, was true ... by the time. Indeed it solved the problems they had ... and it is still working today. But things - and people - change. Java didn't evolve fast enough and obviously also because of its success suffer a lot of criticisms.
I feel that the book is partly a reaction to this wave of criticisms.
But I am not sure if Java developers have turn their back to Java to the point where they need to be reminded of the fundamentals: why exception are useful, packages, Javadoc ... But OK, it is still nice for neophytes to discover the "Good Parts" indeed! On the other hand, if the goal is to say that Java is not that bad, there is no need to write a book. Nobody refutes its success.
Yet when he states that RMI and concurrency are well handled in Java, it is hard to agree. The need for higher abstractions is clear. Java itself evolves (slowly) in this direction.
So I not always agree, but its point of view is interesting and even unconventional. Besides it is a quick read.
I would still recommend it: either as a quick and curious book for experts or as a good outline for neophytes.
Bottom Line Yes, I would recommend this to a friend
Jim Waldo, a pioneer of distributed computing, shares stories, benefits and pitfalls behind the fundamental design decisions and features of Java, after years of researching some of computing's most difficult problems.
I highly recommend following Jim's advise on API design using interfaces, this is especially relevant today, he provides helpful suggestions and hints regarding concurrency, RMI, serialization and generics.
Jim has some very good references for the reader to follow up on too.
I'm a developer on the Apache River project, which is a continuation of one of Jim's children, Jini. The book doesn't talk much about Jini, but anyone using Jini or Apache River will benefit as much as any Java developer.
Recommended reading, despite the plethora of Java books available, you won't find this information elsewhere.
Bottom Line Yes, I would recommend this to a friend