JetBrains released the latest major version of IDEA, it's multi-language development environment. In this interview with Artima, JetBrains architect Dmitry Jemerov talks about the most significant IDEA 8 features, including improved core Java support and support for multiple languages. He also discusses JetBrains' new Ruby IDE:
One of the major things we added in IDEA 8 is SQL support, providing full-featured coding assistance to the SQL language. As a result, IDEA can now serve as a database development tool: it can run scripts, it can do code completion inside SQL queries, and so on. Presently, we support the MySQL dialect, and we're soon going to support more dialects, such as Oracle and Postgres. Some of those will appear in bugfix updates shortly.
Another new feature is extensive support for the template languages FreeMarker and Velocity. If you're using those, instead of pure JSPs, as your view technology, you also get full support for CSS and HTML embedded inside your templates. We also understand macros in the templates, and provide a lot of code assistance while editing those templates.
We also expanded our support for the popular Java enterprise frameworks. We now provide full support for the JBoss Seam framework, including page-flow diagrams, all the usual code assistance features, and some support for the business rules part of Seam. In addition, we now support Struts 2, Spring 2.5, as well as working withRESTful Web services.
In the latest IDEA version, we evolved our Maven support to include Maven archetypes, full code-assistance for editing pom.xml files, error highlighting and code completion. We also have some Quick Fixes that automatically locate a missing class: If you're using a library you haven't imported through your Maven file, we will automatically find the library for you and add a dependency to pom.xml.
We also have something we call UML-like code diagrams. The current version has been in development for just a few months, and it's not yet as full-featured as some people would expect it to be. But it's a start, and we're looking forward to getting feedback from people about what they want to see in a code diagram solution.
We also have done a lot of work to improve our core Java support. There are seven new refactorings, and a couple of dozen new inspections, for instance. We have expended a lot of effort on improving our core Java support while, interestingly, I don't see our competitors spending as much time on that. For example, if you look at NetBeans 6.5, they're mostly promoting their support for additional languages, such as PHP, C++, JavaScript, and Groovy. There is not as much work going into Java SE development. We think that's very important, though, because outstanding Java language support can make developers more productive.
Of course, we also provide very extensive support for languages other than Java. In IDEA 8, we expanded our Flex support, which has evolved from our earlier milestone releases, and is now quite complete. For example, we provideActionScript code assistance, MXML code assistance, code generation, and some refactorings for ActionScript . And we have debuggers now for JavaScript and Flex. Flex development support is part of the core IDEA 8 distribution.
Our Groovy plug-in has been evolving as well in parallel for a long time, and is now very full-featured. So we decided that it was ready to be in the core product and, as a result, Groovy and Grails are now bundled with the core IDEA 8.
We also have perhaps the most extensive integration between Ruby and Java. If you install the Ruby plug-in to IntelliJ, you get full cross-language support, including navigation and refactoring between Ruby and Java. If you rename a method in Java code that's also called from Ruby, the Ruby code will automatically be updated. This allows for a very efficient way to work with Rails applications that target JRuby, for instance.
IDEA 8 offers some Scala support as well, but we're still working on that. For the moment, the team working on Scala is quite small, but we hopefully will be able to expand that team in the coming year. One of the big recent milestones is that we can now do joint compilation for Java and Scala code. This is available for the latest version of Scala. We are working on improving our type system support: while not yet complete, it has progressed a lot. And we're working on providing less fancy features, too, such as overrides, implements, refactorings of Scala code, and documentation.
We have been working for some time now to factor out many aspects of IntelliJ IDEA into a modular design. The first fruit of that work is a new product, RubyMine, a Ruby IDE. We released RubyMine just a couple of days before releasing IntelliJ 8. It's currently available as a public preview, and will remain in preview for next few months, with a 1.0 release planned for the first quarter of 2009.
RubyMine contains the core of IntelliJ IDEA, including all of IDEA's Web development support, HTML, XML, CSS, JavaScript, as well as the Ruby plug-in. RubyMine doesn't have any Java-related development tools inside it, including the heavy-weight frameworks that have grown around Java. We simplified the configuration interface a lot: you don't need to deal with multiple modules and facets. You just point to the directory where your code lies, and in most cases we can infer the rest of the configuration automatically. It starts faster thanIntelliJ IDEA, and doesn't use as much memory, since it's focused only on things necessary for Ruby and Rails developers.
We also have a Python IDE in the works, and PHP is under consideration, as well as possibly making a database development tool. These will be focused tools, and we will introduce them at prices that will make them very attractive to developers.