Bruce will begin by discussing how we ended up with threading, and how inherently difficult and error-prone it is. He'll talk about some of the changes that have occurred in the Java threading model over the various JDK revisions; how many aspects of the threading implementation appear to have always been broken; a few of the many portions of the Java threading model that have been withdrawn over the years because they were ill-conceived; and how JDK 5.0 may have finally fixed one of the underlying problems (an improper implementation of volatile, leading to cache coherency problems on multiprocessor machines). Despite that, the new "concurrent" threading library in JDK 5.0 is basically the pthreads library, and can effectively be used to replace the built-in object lock, so it would appear that Sun is in effect completely giving up on the original threading approach. However, the "concurrent" library is still based on the procedural model for threads and has all the same problems with race conditions and deadlocking that the programmer must solve every time, so he'll show a technique called "active objects" that is designed to be an object-oriented approach to concurrency and which supposedly eliminates both race conditions and deadlocking.
Bruce has been stirring the Java pot lately by trying out new ideas, most of which come as part of his research into JDK 5.0 and in comparing Java with other languages. This presentation will be a mix of current ideas and techniques that he's been experimenting with (in conjunction with the development of Thinking in Java 4th Edition) and that he thinks that you might find useful, interesting, stimulating or possibly infuriating. These may include:
- Latent typing, why Generics don't do it, how to do it in Java using Reflection, and why
- What to do with exceptions
- Active Objects for concurrency, as an alternative to threading
- Unit testing approaches, attempts to simplify the management of unit testing code, combining unit testing with design by contract
- Various topics that have become interesting since this abstract was posted
At the very least these will provide foundations for discussion during the presentation.
Bruce Eckel (www.BruceEckel.com) is the author of Thinking in Java (Prentice-Hall 1998; 2nd Edition, 2000; 3rd Edition, 2003), the Hands-On Java Seminar CD ROM (available on the Web site), Thinking in C++ (Prentice-Hall 1995; 2nd Edition 2000; Volume 2, 2003), C++ Inside & Out (Osborne/McGraw-Hill 1993), among others. He's given hundreds of presentations throughout the world, published over 150 articles in numerous magazines, was a founding member of the ANSI/ISO C++ committee and speaks regularly at conferences. He provides public and private seminars & design consulting in C++ and Java.