IntelliJ's IDEA has been steadily adding support for working with languages other than Java. The latest release, a beta version of which was posted last week in the company's Early Access Program, is a result of a major refactoring of the IDE's internals, mainly in order to create a modular architecture suitable for any language support.
In an interview with Artima, Jetbrains' Dmitry Jemerov noted that:
Although we support languages that can live outside the JVM as well, our strength in dynamic language support is how well we can help you integrate those languages in your Java projects. For example, we have a very advanced Ruby plug-in, and its key advantage is Java integration. Our JRuby support, integrating between Java and Ruby, is superior to what other IDEs have to offer at the moment.
But that doesn't help people who do not use Java, and do not want to use Java. When we released IntelliJ IDEA 7, we didn't have much to offer to people not wanting to use the Java ecosystem. We have a single, big, Java IDE, and it was not very attractive to developers outside the Java universe. With our forthcoming IntelliJ 8 release, we want to be able to offer something better to those developers, because that's a big and growing market, and there's a lot of innovation in that space.
What we've done in the past four or five months is a very massive refactoring of the IntelliJ IDEA codebase, to separate support for Java from the core platform. We have extracted functionality needed to support an IDE for some language: parsing, refactoring, code manipulation, and so on.
With that in place, we can start building products for other languages based on that platform. Because not all those products will include all the functionality of IntelliJ IDEA, they can be much less expensive, and we can choose the price based on the target market. And developers don't get the stuff they don't care about. The new products can be much slimmer, lighter, and easier to get started with.
One of the major components factored out in IDEA 8 is a debugger framework that can be targeted for any language:
We now have a framework we can use to build debuggers for any runtime system. The actual way we do that for each language is not something we came up with originally: For both Ruby and Python, there are standard solutions in this space, such as protocols for talking between an IDE and a debugee. For Ruby, there's a project called ruby-debug, and there's something similar for Python as well. We plan to implement all those standard protocols, call stacks, break-points, watches, and so on. We also abstracted away a common UI framework for building debuggers.
Java developers can also find new features, including deep support for the Seam framework: IDEA can work well with Seam facets, conversations, and its code inspection features take into account Seam constructs as well.
Among the more significant new features in the beta version is Flex integration. The open-source Flex SDK can now be specified for a Flex project, and building and debugging Flex applications is supported well inside the IDE.
What do you think of IntelliJ IDEA 8's new features?