From your perspective, what is the most important challenge facing Java-based developers today? Where’s the biggest opportunity?
MIK: The biggest challenge facing Java-based developers is complexity. The size of the systems we work on continues to grow, while the capacity of our brains does not. The complexity challenge can be addressed by three areas for innovation: languages, frameworks and tools. On the language front, we are doing reasonably well with the stable set of statically typed object-oriented programming features that we have in Java. Were behind on facilities like C#s LINQ and may be falling behind some on the innovations of the Dynamic Language Runtime (DLR), also coming from Microsoft. But the good news is that with the advent of Groovy and Grails, the JVM has been validated as a platform for dynamic languages.
On the framework front, the Spring framework rescued enterprise Java, and continues to evolve the programming model. Spring brought dependency injection to the masses, simplifying enterprise and web development. Whats interesting about frameworks like Spring is that by using annotations, they blur the line between the language and the framework. Given the relevance and popularity of REST, its very exciting to see Spring 3.0 integrate support for this useful and increasingly ubiquitous architectural pattern. On the tools front, Java is doing very well thanks to Eclipse, and the ecosystem of Eclipse-based IDEs and integrations. My view has been that the biggest potential for addressing the complexity problem lies with tools, and Mylyns task-focused interface is an answer to complexity. The very fast adoption of Mylyn is a testament to the fact that Java developers work with have inherent complexity, and that addressing the problem involves looking at it beyond the approach of languages and abstractions. With Mylyn, we flip the complexity problem on its head by realigning the IDE around application lifecycle management (ALM) tasks.
It’s official: Oracle owns Java. What matters about this change in ownership? What doesn’t? What would you like to see change (or stay the same) about Java technology under Oracle’s stewardship?
MIK: My main input lies on the tools front. Few Java developers are ambivalent about their choice of IDE, so there will be disappointment that Oracle is hedging on that front with JDeveloper, Oracle Enterprise Pack for Eclipse and NetBeans sticking around. Today’s IDE is a tool platform thats dependent on an ecosystem of extensions. The choice of JDeveloper as the first among equals will be problematic given Eclipse’s lead in terms of Java features, extensibility and available integrations. For example, if I’m using Oracle ADF alongside the Spring Framework, experimenting with Grails, moving to Git, and relying on Mylyn for my ALM integrations, I need Eclipse. I hope that we see Oracle recognize the importance of Eclipse to Java’s success.
Is Java-the-language dead? If so, what’s replacing it? Is the “multi-language JVM” looking as viable and exciting today as it was around this time last year?
MIK: Even if it went the way of COBOL, I doubt that Java would die. The last I heard the biggest problem on the COBOL front was that programmers who knew it were in short supply due to old age. Programming languages seem to outlast the developers who created them. Java gives us a great base in terms of an OOP language. Its done, it works, and its ongoing evolution will take incremental steps. But as a community we do need to ensure that additional innovation can happen on the JVM. Having implemented the first aspect-oriented programming tools for AspectJ, a language built on the JVM, and now working closely with the developers of the Groovy and Grails tooling in the SpringSource Tool Suite, I have a good appreciation of just how hard innovating on the JVM is. Jim Hugunin, a colleague who wrote the AspectJ compiler, has taken this frustration and turned it to some very nice features in Microsofts DLR, which will become increasingly relevant. Making the JVM and tolling around it more extensible to dynamic languages and other innovations should become a top priority for both Oracle and the Java community as a whole.
One of Java’s most robust and popular development platforms changed hands last year when VMWare bought SpringSource. What direction do you see Spring (or Spring-Groovy)-based development moving in now?
MIK: Spring was the critical source of innovation for enterprise Java and we can already see that continuing. One of the biggest new opportunities in the application development space is cloud deployment. SpringSources CloudFoundry is a glimpse of the future, where developers deploy, debug and manage their app in the cloud, all from within their IDE.
Is cloud computing more than a buzzword in 2010? For Java developers who want to leverage cloud infrastructure in the enterprise, what’s a realistic, right-now approach? Any thoughts about proprietary vs open platforms?
MIK: Cloud computing is a technology whose time has come. In 2010 developers will see an increasing amount of offerings for cloud-based application deployment, which is great, since it will allows us to focus on code instead of infrastructure.
Is open source (still) the business model of the future for software vendors? If so, where’s the money?
MIK: For tools I think that the money is still in the same place, with selling products and providing services around open source tools. IBM Rational has succeeded at making Eclipse the open source tool platform, and continues to sell innovative products on top of that platform. Tasktop created Mylyn as an open source project, and the broad adoption of Mylyn as an Agile ALM framework for the IDE, and Tasktop as a closed source enterprise product build on Mylyn, could not have happened if Mylyns APIs were not open and adopted by a broad range of ISVs. Open source is a proven model for evolving successful technologies around vibrant communities, and helping fuel the ecosystem of companies and entrepreneurs needed to fund the next round of innovations.