If there's one group of engineers and programmers that understand the IDE scene, it's the intelligentsia at IntelliJ. TheServerSide recently conversed with Dmitry Jemerov, one of the brains behind JetBrains, about what's currently going on in the development tools space, and where things might be headed in the coming year.
Hurtling toward the future while clinging to the past
Conceptually, a mobile application is not that different than a desktop application. Architecturally, it's mostly the same thing."
Dmitry Jemerov, JetBrains
One of the most significant trends in the Java space is the proliferation of languages built on top of the JVM. There's a perception in some quarters that the Java language is gradually degrading and newer languages like Groovy, Scala and Clojure are the wave of the future. But the truth is that Java is still deeply entrenched in the hearts, minds and budgets of IT departments. According to Dmitry, "People have a significant investment in their existing Java code bases. They have a large number of libraries to integrate with for their newer applications. They want to keep that investment
. But at the same time, they want to be more productive with these other languages."
This need to blend languages means IDE providers are moving far beyond Java in their product offerings. For IntelliJ, the difficult part of the learning curve is already a few years in the past. They had to revamp their hard coded solution, making it modular, pluggable, and extensible in order to seamlessly support languages like Python and Ruby. But now, the steps to add a new language are part of a well-worn path. They can reuse a lot of the framework support built for other languages to add new ones like Scala.
Mobile's not a big deal?
It takes a consulting firm with a lot of experience to shrug its shoulders at a powerful trend like mobile. But in Jemerov's world, it's all a bit old hat. "Mobile has actually been around for a long time. Conceptually, a mobile application is not that different than a desktop application. It runs on a smaller platform and has access to fewer APIs. Architecturally, it's mostly the same thing."
There are emulators to work with and wireframes to build support for, but that's not too difficult to handle when you've been working with the J2ME for a dog's age. While Android may look frighteningly new, Dmitry says that behind the scenes, not much has changed. The Swing team at Sun simply moved to Google to work on Android. Both platforms were created by the same set of people. This creates a soothing sense of familiarity for Dmitry, who says he wrote the first Android plugin for his firm on a transatlantic flight. Talk about coding on the fly; they don't call it JetBrains for nothing.
The Hybrid cloud IDE
The trend of supporting development in traditional IDE and then deploying to the cloud is very well established. Developers are already familiar with pushing applications to the cloud and then building additional tools on top of that for monitoring app performance and virtual machines. Apparently, this doesn't represent much of a reinvention of the IDE. "A much bigger change is actually moving the IDE itself to the cloud so that instead of hosting an IDE locally, you can have it running in your web browser where you do your work."
Of course, just because the move to the cloud can be done doesn't mean it will be done. There's a very real possibility that developers will never want to give up the level of control that comes with having the IDE on their local hardware. It's difficult to say whether Cloud IDE will become a trend or just a flash in the pan. It needs to be positive and productive or it won't be embraced. That means things probably need to start slow.
Dmitry foresees enterprises exploring cloud based scenarios starting with features that provide an obvious win—like code browsing. When there's a significant amount of code to work with, developers don't want unwieldy local checkout. They want it to be searchable so they can easily explore the various libraries and see how the code is being used across applications in the enterprise. The IntelliJ IDE community is already playing with this idea at Upsource, "a browser-based code viewer with IntelliJ IDEA at its core. Users can browse commits, search symbols or text, and find usages using a familiar user interface and keyboard shortcuts."
After browsing, code review is the next logical step. Existing tools like GitHub or Crucible are fine for basic syntax highlighting and tips, but they don't know anything about the code that is under review. Developers can't get a declaration for the method or other practical information. The next generation of cloud-based IDE code review tools will likely be more intelligent, able to inspect code and highlight problems automatically. The benefits of showing code in a live coding environment so developers can see how everything works together would be a big enough perk to make cloud IDE – or at least a hybrid IDE - a preferred platform for many projects.
How do you see the modern Java IDE evolving in 2014? Let us know.