DZone Meets The Well-Grounded Java Developers
Even though it's still a work in progress, "The Well Grounded Java Developer" sounds like essential reading. Not only will it cover Java 7, but it will also cover Groovy, Clojure and Scala, as well as software craftsmanship - surely the book for the modern Java developer. I caught up with the authors to find out more about the book.
Ben Evans has been a professional developer and open source enthusiast since the late 90s. He has delivered world-class projects for banks, media companies and charities in that time, and currently works as an architect, lead developer and in-house Java expert at one of the world’s leading financial institutions.
Martijn Verburg - Martijn Verburg is a Java/JEE and open source consultant who is passionate about software craftsmanship and the creative power of technical communities. He currently is the co-leader for the London JUG, runs two open source projects (PCGen and IkasanEIP) and is a bartender at the Javaranch.
DZone: The Well Grounded Java Developer looks like it will be a great book. Can you give us an overview about what to expect?
Well, as an opening blurb:
"We believe that it's the only Java related book that treats the topic of what it means to be a modern Java developer as a whole instead of discrete unrelated parts/languages. It will tackle areas that the modern Java developer needs to get to grips with over the next couple of years including: Java 7, alternative languages on the JVM, modern concurrency and important software development techniques and practices from the agile/software craftsmanship worlds."
A little more detail:
We begin by covering the most important new features of Java 7 (which is being released in July/August this year) including small changes to the language (try-with-resources for example) and the new I/O API (file handling 'done right' + Asynchronous I/O). We strongly believe that enterprises and developers will want to move to Java 7 as quickly as possible as it offers very real productivity and performance gains.
The next section focuses on vital techniques including standardised Dependency Injection for Java, modern concurrency (multi-core processors makes this vital again), practical performance tuning and a look at classfile and byte code fundamentals. As systems scale up and become more complex (especially with multi-core processors), the Java developer will need to be able to understand concurrency and discover how analysis performance issues.
Java the language is clearly not the best tool for all software development tasks, especially as it will continue to evolve conservatively. In order to match other programming technologies in areas such as rapid web development, truly safe concurrent code and dynamic scripting, the Java developer will benefit from using alternative languages on the JVM. Groovy, Scala and Clojure all get their own chapter, transforming the reader from a 'Java developer' into a 'polyglot programmer on the JVM'.
Finally we cover important software practices such as Build and CI, Test Driven Development and Rapid Web Development, which we see as being core competencies in most modern software projects. In those chapters we blend in solutions from Java, Groovy, Scala and Clojure to practically demonstrate the benefits of being a polyglot programmer.
DZone: What is the most exciting feature coming up in Java7?
For Martijn it's the NIO.2 APIs, at last file I/O is done 'right' with many simple high level methods to deal with files, directories and file systems. Additionally the I/O APIs get a hefty dose of asynchronous functionality, e.g. Allowing you to read that 100Mb file in the background whilst your business logic continues doing important work.
For Ben it's MethodHandles and invokedynamic. This has been a bit of a propeller-head technology is the JSR but as it approaches final a large array of use cases are starting to present themselves. Can it completely replace Reflection? Will it find its way into a framework near you? Does this open the door for tools and techniques as yet undreamed-of on the platform? Lots of exciting possibilities here!
DZone: When you're not writing the book, what do you work on?
A wide range of things! Both Ben and I help run the London Java User Group, which has over 1600 members and on average at least one event a
week. As an offshoot from that we also help out with a the (under)graduate developers community, trying to bridge the gap between academia and the commercial world. We're both involved in various open source projects and other technical communities (such as the coderanch) and have more recently discovered a taste for presenting humourous technical talks at conferences.
It's been rumoured that in our copious amounts of spare time that we party pretty hard (although not always to the same music), but of course we've been very good whilst writing the book :).
DZone: Is the London Java User Group very active? Is Java still very alive in London?
The London JUG (LJC) is incredibly active. We have on average about 1 meeting per week with a wide array of events including coding dojos, presentations, un-conferences, lightning talks, workshops, a regular pub meeting and more.
Java is very much alive and well in London. It's still seen as a core technology for the enterprise in the financial and insurance sectors. Some organisations such as the Guardian newspaper are also successfully deploying alternative technologies on the JVM such as Scala.
DZone: What are the major gaps between academia and the commercial world? What would you recommend changing in undergraduate courses?
The main issue is best/good practices around software development. Graduates have very little background in modern IDEs, BDD/TDD, Build Tools / CI & Continuous Deployment, Source control etc.
We're not advocating that the core courses change, just how software is delivered for the coursework. For example if the students are to deliver a Binary Search Tree in Java, why not have them use source control and write tests first?
DZone: How soon after the release of Java7 will the book be available?
About 2-3 months we think, it's hard too know exactly as the Java 7 date might slip and we might wrap up the production of the book more quickly than expected.
Here's a presentation that Ben and Marjin gave at TheServerSide Java Symposium: