http://java.sun.com/javaone http://java.sun.com/javaone http://java.sun.com/javaone
JavaOne - Experiencing Java technology through education, industry, and community
  2009 Platinum Cosponsor
Intel
  Cosponsors
Cosponsors
  Gen Session Cosponsors
General Session Cosponsors
  Media Sponsors
Media Cosponsors
Home > Rock Star Cliff Click

Rock Star Cliff Click


Cliff Click Bio: Cliff Click is Chief JVM Architect and Distinguished Engineer at Azul Systems, an enterprise compute appliance vendor providing scalability, manageability, and real-time monitoring for Java technology-based applications. He holds a Ph.D. in computer science from Rice University and is hosting sessions on benchmarking, alternative languages on the JVM, and how modern architectures impact Java applications.
 

Q: Can you give us a quick performance overview of those alternative languages that target bytecodes and the JVM machine as their new "assembler" -- Scala, Clojure, Jython, JRuby, the JavaScript language/Rhino, and JPC.

A: I have not run any exhaustive performance tests, and can provide only really simple answers -- so "caveat emptor."

Scala can run "close to the metal" -- performance can be as good as Java in some cases.

Clojure can also get close -- if you specify to use primitive ints instead of infinite-precision BigInts, which are the default.

Jython and JRuby are a fair bit further behind, but maybe could get "close" to Java with some JVM/JIT improvements.

JS/Rhino would need some more specialized JVM hacks to compete well with the new breed of JavaScript engines coming out.

Q: Give us some insights about how the architecture of modern CPUs has changed in recent years, and what the implications are for software development and performance management.

A: Clock rates are not rising. Memory is not getting closer. So -- bloat matters. Layers of indirection in data structures will cost a cache-miss per indirection, and this is all the cost in running code these days. It's not "instructions cost" -- it's "cache misses cost." Smaller, better engineered data structures are "where it's at" -- that and better concurrency coding styles.

Misconceptions About Benchmarking

Q: What are the biggest misconceptions that Java developers have about benchmarking? How do they most often get it wrong?

A: They get it wrong in lots and lots of ways. They:

  • Don't warm up long enough
  • Don't run enough variations in the same JVM
  • Don't plan for the JIT removing dead code
  • Don't expect as much inlining and optimization as commonly happens
  • Don't run enough launches of the JVM
  • Don't account for non-JVM issues, like networking or other load
  • Don't account for GC
  • Don't do decent statistical analysis of the results

Q: Complete the following sentence: Cloud computing will probably:

A: Lose its hype, lose its fuzziness, and split into a couple of well-defined camps, e.g., render farms; Google/Yahoo search-farms; Amazon-style EC2; plus one or two competitors to Amazon.

Q: What do you see as the most important API in Java three years from now?

A: java.util.concurrent.*, or Fork/Join, or some new language leveraging the JVM but with an alternative concurrency mechanism. Basically, concurrency is the problem, and APIs/solutions that directly address concurrency are what people will focus on.

Q: If you could work on a dream project, what would it be?

A: Alternative hardware and JVM for running Java. Ahhh...but I work for Azul Systems.

Q: Can you give us an example of code that you are most proud of creating and explain why?

A: HotSpot server's internal IR. The "why" part requires a deep understanding about optimizing compilers.

Q: What do you do when you feel stumped?

A: Talk to other people -- peers in the JVM-implementation world.

Q: Where in the process of programming do you have the most fun?

A: See stuff work. Seeing the lights go on in other people's head when I explain how it works.

Q: What social networking sites do you participate in? Do you find them useful as a developer, and, if so, how? Do you twitter? If so, why?

A: None, no, and no.

For More Information

» Cliff Click's Blog

Cliff Click will be hosting the following sessions this week:
» Alternative Languages on the JVM Machine (TS-5385)
» This Is Not Your Father's Von Neumann Machine; How Modern Architecture Impacts Your Java Apps (TS-5496) With Brian Goetz of Sun Microsystems
» The Art of (Java Technology) Benchmarking (TS-5391)

 

Do you have comments about this article? We welcome your participation in our community. Please keep your comments civil and on point. You may optionally provide your email address to be notified of replies - your information is not used for any other purpose. By submitting a comment, you agree to these Terms of Use.