Martijn Verburg and Ben Evans are both seasoned Java developers who have nonetheless caught the wave of excitement about Java 7 and the changes it brings to the Java ecosystem. In addition to regularly blogging (both on JW and abroad), co-organizing the London Java User Group, and speaking at numerous technical conferences, Martijn and Ben have written a contemporary guide to Java programming in The Well-Grounded Java Developer, currently available in early access edition from Manning Publications.It’s a pleasure to host the Java 7 Developer Blog on JavaWorld, and even more so to pick the brains of its authors, whose joint perspective on Java extends back 20 years but is refreshingly forward thinking.When did you know you wanted to be a Java developer? What inspired you (or pushed or dragged you) in the direction of Java? What’s kept you in it? Martijn: I was dragged into it at university when (as a second-year student) I was asked to teach Java to first-year students. The only problem was that I had learned Pascal in first year and was on the way to learning C++ and Haskell in my second year! A two-day tutorial later and I was hooked. For me it was C++ done better. Not perfect, but better.Ben: I’m not sure I’d classify myself solely as a Java developer, even though it’s where I spend an awful lot of my professional time. I’ve been involved with a wide range of technologies over my career and I like to think that I carry those lessons and heritage with me. Having said that, the Java platform is the most modern of those platforms and it hits an incredible (perhaps unprecedented) sweet spot of current and long-term potential.I learnt Java originally because I was assisting a disabled student and I needed to stay ahead of his lectures — this was in 1998 or 1999 — while I was studying for my PhD. I started spending most of my time coding in Java in about 2003 or 2004. Martijn: The language kept me involved as it had the GC/memory management, could run on multiple platforms, and had some really handy standard APIs. These days I’m still in it because of open source (there’s so many cool Java based projects out there), the community (who are passionate and tend to be focussed on solving real-world problems), and the JVM (the most capable on the planet).Ben: I tend to agree with Martijn. On the technical side, the platform features, the JVM, the tooling, and the free and open-source software are what keeps me here. The community is really important too, and I think that over the next few years, it will really come into full bloom. The best years definitely lie ahead of us.What does it mean to be a well-grounded Java developer today? In your view, what are some of the key changes to Java technology and subsequent culture over, say, the past five to seven years? Martijn and Ben: We believe that a well-grounded Java developer thinks beyond Java (the language) in order to solve modern software problems. They use alternative languages on the JVM and several agile/craftsmanship techniques to stay competitive in areas such as rapid web development, concurrency, and functional programming.Some of the key technical and cultural changes that have occurred over the past five years are: Oracle buying Sun and the current lawsuits and community grumblings around Java (this is improving, by the way) Java 7 finally gaining approval and moving towards a release! That Java-based technologies and open source almost always arrive hand-in-hand The rise of dynamic languages for rapid web development (Rails, PHP), which has left Java (the language) behind as a web technology The mainstreaming of agile practices such as TDD, automated builds, and continuous integration Multi-core processors making concurrent programming extremely important again The rise of JVM languages such as Groovy, Scala, and Clojure that are interoperable with Java How have these changes influenced the current state or direction of Java programming? Martijn and Ben: We think that Java (the language) is no longer leading in terms of the latest and greatest capabilities. Instead, Oracle will deliberately position it a generation behind the bleeding edge. Developers who need some of the latest and greatest capabilities will simply move off Java (the language) but will be able to stay on the JVM. Thankfully the language is moving again and we’re pretty confident that by late 2012 (Java 8) it will have started to close the gap with other leading languages.Ben: I think the words we use when talking about programming languages are very important. Not all new language features are successes. The PHP/Ruby/Perl world is littered with language features which were ill-thought out and which those communities are now free to repent at leisure.How many people would seriously want to try and defend PHP’s historic lack of namespaces, Ruby monkey-patching, or Perl formats? By choosing to take a more measured approach, a language community can avoid mistakes which would otherwise impose costs on all its members.So, while I agree that a more conservative approach can be frustrating for some teams, I think it’s important to remember that some innovations — even very popular ones — can turn out to be missteps. I think I’d put syntax support for XML literals in this category.It sounds like you’re both in favor, then, of positioning Java the language a bit behind the curve, if that implies taking the time to get it right. Is that correct? Martijn: Yes, but not too far behind. Where we currently are (with Java 7 coming out five years after Java 6) is too far behind the curve and hence the grumblings of the developer community. We’re hoping that the release of Java 7, followed by Java 8 in 2012 and a quicker schedule beyond that, will bring the language to a more natural fit behind the curve.Ben: If we look at the truly successful innovations in language features, then in many cases they’ve started as patterns/coding practices which have to be implemented by hand and then are incorporated into the language furniture in a later version or in a new language which draws on that experience. Object orientation in C-derived languages started off this way, as a set of preprocessor macros, then that experience informed language-level support in C++. Or, more recently, look at the delegate pattern. Or generator/sequence abstractions. Or what’s starting to happen with new concurrency abstractions — to keep developers away from Thread unless they really need it. The early implementations are rarely 100% right — but they do help gain developer mindshare. That’s important for young languages, but less so for Java. The language and platform needs to maintain position, but a lot of the experimentation can (and should) happen elsewhere. Rock-solid, well-considered implementations are where I see Java winning.What’s one important resolvable challenge facing the Java platform or community at the moment? If you were king, how would you resolve that challenge?Martijn: Modularisation — which is thankfully coming in Java 8 under project Jigsaw. Until that is completed, there are lots of great ideas that can’t be implemented. A monolithic Java, is an inflexible Java. I would continue the way that the project Jigsaw team is going but ensure that there is a very high degree of support of OSGi and IDE tooling. (They’ve already thought about Maven, POSIX packaging systems, etc.)Ben: From a technical standpoint, I agree with Martijn. However, I think that reform of the JCP is at least as important as any technical change. From a certain viewpoint, Sun actually didn’t manage to go as far as the community might have liked. Many parts of the JCP process are still too closed or hard to participate in. In conversations with [JCP Chair] Patrick Curran we’ve had some indication that Oracle may want to go further, to be more open — potentially even insist upon some sort of intellectual property grants (or patent assertion protection) as a part of belonging to the JCP.As a constitutional monarch one has three basic rights: the right to be consulted, to encourage, and to warn. If I was king I would exercise my second right, and encourage Oracle to be bold, especially on the IP front. There are precedents for insisting upon IP protection from all participants as the price of a seat at the table. I would exercise my right to warn, and to say that this issue matters to corporates more than it might appear at first. We can have a thriving open democracy, which works better than what we have today. We just have to be brave and grasp it. You both mentor programmers new to Java, including students new to programming. What would you say to someone deciding whether to invest in learning Java today?Martijn: The Java language is still going to be around for a very long time and there’s no reason to not learn it! There is a trend that no single language can solve all problems and so learning some alternative languages on the JVM will be important.Also learn how to use source control, test drive your code, use a good IDE, and get involved in open source! Ben: All of the above. Also, in UK universities at least, there’s no evidence of a trend away from Java — so I would say it makes sense to build on what was learned at University. I’m a big believer in trying to make development as egoless as possible, so I’d warn young developers against assuming that because they’ve studied Java at university that they “know Java now” and can move on and start with something else. Getting really good at a language — at any language — takes time, but pays huge dividends in terms of depth of experience. Changing languages straight out of university can cause a young dev to almost need to start again.As JUG leaders, what do you think of Oracle’s apparent new emphasis on Java User Groups in the JCP? Do you think there’s an opportunity for more genuine community input, at the individual or user-group level, in the JCP?Martijn: Absolutely, Oracle have been beating that drum for a while now, but there’s still a disconnect between the individual developer (or small groups of developers) and actual JCP/JSR involvement. Patrick Curran is leading the JCP effort to become more open (which we’re applauding) and we’re talking with him and others as to how they can build genuine communities around JSRs, which will allow for greater individual and community participation. Project Coin for Java 7 was a successful experiment in this direction and we hope to see much more!Ben: Absolutely. One key difference that Henrik Stahl [Oracle’s Java platforms product and strategy lead] mentioned on a panel recently is that unlike Sun, Oracle does not commit to something unless there’s a concrete plan to deliver on it. That means that when the communication from Oracle comes out, then you can be sure that they have a roadmap for bringing it to market.I think it’s been easy for the community to jump to potentially the wrong conclusions because of this difference in communication style. I await Patrick’s JSRs to reform the JCP with interest — I hope that they will present a real opportunity for greater community involvement and new openness.In your experience, what are the benefits of participation in a local Java User Group? How does this differ from participating in online communities or attending conferences?Martijn: Well you get to meet your future co-author and come up with book ideas for one! But the exchange of ideas face to face, on white boards, or on a scrap of paper at the pub, is vital to your growth as a software developer. We’ve learned more off LJC meetups than we have anywhere else.Ben: Facetime is so important — and you definitely get out what you put in. If you go along to a local JUG and approach it with the attitude that everyone you meet there is a peer and a potentially interesting and useful contact — someone you can learn from and maybe even a new friend — then you can get an enormous amount out of your local community. Conferences are great, but they can be a slightly rarefied atmosphere, and are sometimes a bit of a special treat. It’s common in the Java community to talk about the future of Java as it relates to the Java platform versus the Java ecosystem. Where does the Java platform fit in the larger ecosystem of mobile and open web technologies? How do you see the platform evolving to meet the demands of consumer and social IT, for instance?Martijn and Ben: We think that the Java ecosystem will look to standardise APIs and technologies on all of these platforms, but don’t expect it to be the outright leader. For example JEE 7 (2012) will be “standardising” cloud-based APIs for Java, and there’s a ME.next coming out for the mobile platform. Some of this is obviously later than other providers out there, but more conservative organisations and developers won’t mind that as long as the Java based version isn’t too far behind the cutting edge.Further reading Find more of Martijn and Ben’s thoughts about Java technology, culture, and community at the Java 7 Developer Blog, also on JavaWorld. Read James Sugrue’s interview with the well-grounded Java developers (DZone, April 2011) The Well-Grounded Java Developer: Java 7 and Polyglot Programming on the JVM (Early Access Edition, Manning, January 2011) JCP Chair Patrick Curran discusses what has changed, and hasn’t, about the role of the JCP under Oracle (InfoQ, April 2011) Oracle’s Henrik Stahl blogs about upcoming changes to the Java platform Java