A Conversation with Mark Reinhold

Version 4

    by Timothy Beneke

     

    The changes that have driven Java’s wide use, and the changes to come

     

    Published May/June 2015 of Java Magazine

     

    Mark Reinhold, chief architect of the Java Platform Group at Oracle, has made many contributions to the Java platform in the past 19 years, working first at Sun Microsystems and then at Oracle: character-stream readers and writers, reference objects, shutdown hooks, the NIO high-performance I/O APIs, library generification, and service loaders. He was the lead engineer for the Java 1.2 and 5.0 releases, the Specification Lead for Java SE 6, and both the project and Specification Lead for JDK 7 (Java SE 7) and JDK 8 (Java SE 8). He currently leads the JDK 9 and Jigsaw projects in the OpenJDK community, where he also serves on the governing board.

     

    Reinhold, who calls himself an old Lisp hacker in disguise, holds a PhD in computer science from the Massachusetts Institute of Technology, where he worked on garbage collection, compilation techniques, type systems, semantics, and the visualization and analysis of program performance.

     

    Java Magazine: What has surprised you most about Java over the years?

    Using Java

    “Despite being internally complex, Java has a feeling of initial simplicity. It has a high ‘DWIM’ factor—‘Do What I Mean.’”

    Reinhold: I’d have to say it’s the strength of its foundation. I don’t think anybody understood at the beginning what a strong foundation James Gosling and the rest of the original Java team built into the Java Virtual Machine [JVM] and Java language specifications. They’re clear but evolvable designs that are not so self-contained and interdependent that you wouldn’t dare change them.

     

    If you look at the VM specification, for example, it’s very clear about the structure of the VM, how class files are defined, what all the bytecodes are, and what they mean. Yet there’s room to grow because there are plenty of unused bytecodes and the conceptual framework in which they exist has room for flexibility. The language specification has the same characteristics.

     

    I’ve also been surprised at the number of times people have declared Java to be dead, which has not yet proved to be true.

     

    Java Magazine: You have spoken about the importance of retaining what James Gosling calls the “feel of Java,” which includes readability, simplicity,

     

    Reinhold: Those properties are really important. We recognized their value early on, and we’ve worked very hard to preserve them. Readability is the most critical because, with software, the amount of time you spend writing a piece of code that goes into production is microscopic compared with the time that you and your successors will spend reading it in order to maintain it, fix bugs in it, and enhance it.

    Clear Code

    “Readability is the most critical because, with software, the amount of time you spend writing a piece of code that goes into production is microscopic compared with the time that you and your successors will spend reading it.”

    Simplicity refers to the comprehensibility of the platform. Any production-quality language and surrounding platform must have a certain amount of internal complexity in order to address the inherent complexities that we find in modern computing systems. But despite being internally complex, Java has a feeling of initial simplicity. It has a high “DWIM” factor—“Do What I Mean.” Once newcomers with a good IDE learn the basic plumbing, they can get around pretty easily. You don’t have to go read the VM specification or memorize the language specification. Those references are available and you might eventually need them, but you can often just “write what you mean”—and it turns out to be what you meant a large fraction of the time. As a Java programmer, you can get into the zone and solve your problem—and the language and platform tend to get out of your way.

     

    There are some people who disagree with this because they prefer other styles of languages, but for this style of language Java does that pretty well.

     

    Java Magazine: Why have you devoted so much of your professional life to Java?

     

    Reinhold: What attracted me to Java initially is what keeps me here still. As someone deeply interested in programming languages, the opportunity to work on one that’s used every day by millions of developers is exceedingly rare. It’s exciting and rewarding—there’s a kind of visceral thrill that’s hard to describe. I’m enjoying it as much now as I did when I started nearly 20 years ago.

     

    Java Magazine: Tell us a little about what you do all day. Do you still write code?

     

    Reinhold: I still write code and I’ve had code in every release starting with JDK 1.1, although sometimes not a lot. I spend a fair amount of time mentoring junior engineers and advising people on various things. As one of the old-timers, I know a lot of obscure facts, so I’ve wound up being a steward of history of the platform. I also do a fair amount of design work. I’m the Specification Lead for the module system that we’re working on for Java SE 9, and that involves coding and design and architecture and language changes.

     

    Read the full article in the May/June edition of Java Magazine

     

    About the Author

     

    Timothy Beneke is a freelance author whose work has previously appeared in this magazine. He has written extensively about Java.