A very interesting JavaPolis Q&A session with Joshua Bloch on closures and other Java related topics. From 'Is there an impedance mis-match with Java and the BGGA proposal?' to 'Was the wildcard feature tried out thoroughly enough?' and 'What is your job at Google?'... enjoy the ride!
Joshua Bloch is a Principal Engineer at Google. He was previously a Distinguished Engineer at Sun Microsystems and a Senior Systems Designer at Transarc. He led the design and implementation of numerous Java platform features, including the JDK 5.0 language enhancements and the Java Collections Framework. He is the author of the Jolt Award-winning book Effective Java. He holds a Ph.D. in Computer Science from Carnegie-Mellon University and a B.S. in Computer Science from Columbia.
Scala— Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It smoothly integrates features of object-oriented and functional languages. It is also fully interoperable with Java.
The Closures Controversy— Last year Neal Gafter premiered his BGGA Closures proposal at JavaPolis. One year later Joshua Bloch presented his view on the Closures Controversy and why he feels that CICE is a more suitable approach. One way to look at the available proposals is to consider the impact on Java as a language: whether it's possible to undergo fundamental change while still preserving the 'Feel of Java'.
An update on Java Closures— Closures simplify the use of APIs that rely on the use of anonymous class instances, such as the concurrency APIs and callbacks. More importantly, closures support control abstractions, which are APIs that act as programmer-defined control constructs. This 2nd closures talk includes some new ideas on the subject.
Closures for Java— We have proposed to add Closures to the Java Programming Language. Closures simplify the use of APIs that rely on the use of anonymous class instances, such as the concurrency APIs and callbacks. More importantly, closures support control abstractions, which are APIs that act as programmer-defined control constructs.