What is OSCON Java? It’s a good question. There are many Java conferences on every continent except Antarctica. Why is O’Reilly throwing its hat in the ring?
The Java community has always been a broad, fractious, interesting mess, capable of doing surprising things with little warning, and that’s precisely why we’re attracted to it. It’s undeniable that Java is huge; it’s been in one of the top two slots on Tiobe’s Programming Community Index since Tiobe started in 2002. It’s always been one of the largest components of the technical book market. Java’s 2010 book sales represent a resurgence since 2008, but even in its weakest years, Java has always been one of the largest components of the book market. Beyond being huge, Java is one of the key languages of the open source movement. While there has been plenty of discussion over the years of the JDK’s status as open source software, there has been no shortage of open source projects. SourceForge lists more than 25,000 Java projects, more than any other language.
A fertile ecosystem
Over the years, the Java community has birthed many of the most important ideas in software development, or was the conduit through which these ideas received broader audiences. Java was the first language to address interactivity and programmability in web pages: inadequately, as it turned out, but applets were still the first step on the road from a purely static web to the modern interactive web. The MVC design pattern was the basis for the Swing GUI framework, and was later adapted for many web frameworks. When it first came out, EJB didn’t represent a new idea — the ideas came from products reaching back to the ’60s, like IBM’s CICS — but it enabled many people to write platform-independent database-backed software and push the web forward. And yes, the mistakes of EJB were one of the inspirations behind Ruby on Rails. Another response to EJB’s complexity, the Spring Framework, grew from a relatively simple implementation of the Inversion of Control (IOC) design pattern to one of the dominant forces in Enterprise Java development.
It’s amazing how much of the revolution in software development tooling originated in Java. Ant replaced Unix’s make(1) utility, which had long outlived its usefulness. In turn, Ant has been superseded by Maven and Gradle. The ideas behing Extreme Programming, which morphed into the less strident Agile methodology, entered the world through Java. Java saw the first unit testing tools: according to legend, Erich Gamma and Kent Beck wrote the first version of JUnit while they were together on a long flight. Continuous Integration, another widely adopted agile practice, first appeared in the Java community with CruiseControl, which in turn has largely been supplanted by Jenkins.
Java has had a tremendous impact on the recent history of computing. But conferences aren’t about the past, they’re about the present and the future. Large as the Java community is, it’s been some time since Java was the language that the “cool kids” used. At the second JavaOne, one of the Moscone Center staff said that it was the youngest crowd he’d ever seen there. That’s certainly no longer true. We’ve all grayed. That may be why Oracle is presenting Sting and Tom Petty on stage at this year’s JavaOne.
It’s fair to say that Java stagnated. I was surprised to find that Enterprise Java looks basically the same as it did several years ago. EJB has been massively improved (EJB 3.0 and 3.1 are light years beyond the mess of EJB 2), and Spring has grown from a spunky upstart project to a mature part of the community, with major corporate sponsorship by VMWare. But we’re still talking about JSF, Java EE, and enterprise web frameworks (well over a hundred at last count). The enterprise world is still clicking along, making lots of money, but what’s changed? What’s interesting? What’s new?
Of course, there’s plenty new. First, look at data. I’m not surprised at the rise of “big data” and data products over the past few years, and I am pleased at the role Java has played in all aspects of that movement. The Hadoop ecosystem is large and rich, but it’s not just Hadoop. Cassandra is also a Java project. And while Cassandra is similar in many respects to HBase (part of the Hadoop project), Neo4J is another new Java database that has a completely different model, designed for storing data as graphs. Nor is it just map/reduce and databases. The Incanter statistics library is an important part of the Clojure world, Clojure itself being one of the many languages that have sprung up around the JVM.
There’s more to come: I recently had a conversation with one of the authors of Storm, a very new (still unreleased) project designed to facilitate massively parallel realtime processing. It’s written in Java, though its initial release will support client programming in many languages.
Another area in which Java has had a huge impact has been mobile. Yes, there is plenty of tension between Oracle and Google, but one can’t deny the importance of Android in increasing interest (and drawing younger developers) to Java. An article recently pointed out that really innovative apps tend to appear first on Android, and then move to the iPhone. That matches my experience; Android’s openness (which, yes, is debated) often allows developers to combine features in exciting and original ways, such as using NFC to read older RFID tags, a hack that Brian Jepson demonstrated at Google IO. And I expect the new Accessory API and toolkit to revolutionize what we can do with our mobile devices.
The jewel of the JVM
Finally, it would be amiss to write about what’s exciting in Java without mentioning the explosion of new programming languages that run on the JVM. At a JavaOne fireside talk a few years back, James Gosling said that the JVM was the “crown jewel” of the Java world — not the language itself. He’s been proven right. There have always been many strange JVM languages kicking around; Wikipedia lists 67. I believe that’s an understatement by a factor of two or three, though most of these languages are oddball curiosities. However, we finally have some JVM languages that are really sticking, and having a long-lasting impact. I’ve already mentioned Clojure and Groovy. JRuby and Scala are also in it for the long haul. It’s important to understand that the Java community isn’t just solely the Java language, it’s about the fabulous work that’s gone into the JVM, and the rich ecosystem of libraries that make the JVM a desirable target for innovation.
Java, for all its deficiencies, is widely used: in big data, mobile, enterprise, web, and cloud computing. I don’t think there’s any other language that can claim to be so important in so many fields. As Bjarne Stroustrup said, “There are only two kinds of languages: the ones people complain about and the ones nobody uses.” He also said, “There are more useful systems developed in languages deemed awful than in languages praised for being beautiful.” Java has plenty of people willing to complain; as I wrote in 2006, people have been dancing on Java’s grave ever since Gosling first announced it at Usenix in 1995. But those complaints have never stopped good people from doing useful and important work in Java.
OSCON Java highlights
- Languages: All the regulars are represented, but I’m particularly interested in Neal Ford’s talk on functional thinking.
- Tools: I look forward to hearing about Gradle, the Groovy DSL for building, testing, and deploying software; and Jenkins, the continuous integration framework.
- Mobile: You’re not surprised that we have Android. What’s more surprising is that we have a session on cross-platform mobile development using tools like GWT and PhoneGap. (There is more Android content in the main OSCON event.)
- Robotics: One area that Java hasn’t hitherto penetrated has been robotics, but we’ve got a session about Robotics Programming — with live robots!
- Cloud computing: The cloud has changed the nature of system administration and management. It’s not a bunch of guys who mumble at consoles anymore, it’s developers who build software to manage thousands of hosts at a time. BrowserMob will be showing how they’ve developed tools in Java to manage the cloud in bulk.
We’ve got a great array of keynoters, including Raffi Krikorian talking about the Twitter’s transition from Rails to Java; you can expect an inspirational and thoughtful address from Kathy Sierra; and we’ll have Josh Bloch, Martin Odersky, and others on the main stage to puzzle, delight, and challenge us.
There will be no shortage of interesting talks, hallway conversations, and birds of a feather sessions. OSCON Java is also under the broader umbrella of OSCON, which also includes OSCON Data, so you can also check out what’s happening in those conferences as well.
OSCON Java is a celebration of the rich open source Java ecosystem, an ecosystem that’s been built up over the past 15 years of work on Java by the many participants that make up the community. We’re thrilled to be a part of it. Java developers have produced great things in the past, you are producing great things now, and we look forward to what you produce in the future.