Frank Sommers: Could you tell us about new JavaScript support in 6.1?
Brian Leonard: If you're familiar with what we've done with Ruby in 6.0—the code-editing features you expect from code completion for methods, dynamic type analysis, documentations online for the methods available on the various classes, and so on—all those features are now available for JavaScript, too.
One of the features I like especially is browser-compatibility checking. Assuming that you want to write JavaScript for all the four [major] browsers, if you start using a method that's not available on a particular browser, NetBeans shows you that with a drop-down list, highlighting the method in question with a strike-through. If that browser, or a particular version of that browser, is one that you don't care about, you can tell NetBeans that, and that will turn this checking off for that browser or browser version.
If you want to work with a JavaScript framework, you just add the JavaScript libraries to your project, and that's equivalent to adding a Java library to a Java project: the editor will become aware that that JavaScript file or library is available, and will provide all the editor features, such as code completion, for that library. For example, if you use script.aculo.us and then type effect
, the editor will show you the various effects you can apply in that library.
In terms of refactoring JavaScript code, we don't have much of it in place yet, but I'd expect that that, too, will become similar to what we have for Ruby. At the moment, we offer the ability to rename variables, and later we will provide additional refactorings. The other big feature that we're missing in the Beta 6.1 is JavaScript debugging. My understanding is that that will be in the final version of 6.1.
Frank Sommers: There has been some talk about NetBeans supporting Python development as well. Is this already available in 6.1?
Gregg Sporar:
The news is that two of the main developers of Jython now work for Sun. We don't, at this point, have any Python support available in NetBeans. But that will change. Python is another dynamic language we're very interested in, trying to leverage what we put in place with the Ruby support in 6.0. That's what we're leveraging for the JavaScript support, and we're going to leverage that for other dynamic languages as well.
Frank Sommers: NetBeans 6.0 already provided excellent Ruby support. Are there any new Ruby features in 6.1?
Brian Leonard: The biggest change, and this quite large, is support for Rails 2.0. If you follow the landscape between [Rails] 1.6 and 2.0, the architecture changed quite a bit. NetBeans has evolved to support that. Some of the dialog boxes you see, for example, were changed to accommodate for what new Rails 2.0 generators are looking for.
We always tout our out-of-the box experience. With NetBeans 6.0, we shipped Rails 1.2.4, with 6.1 we'll be shipping 2.0 out of the box as the default framework.
Frank Sommers: Could you tell us about some of the new Spring-related features?
Gregg Sporar: What we're trying to do, again, is to improve the out-of-the-box experience. Just like we include the Struts libraries, or the JSF libraries, with 6.1 we're including the Spring libraries. When you create a Web application, one thing you can check is that you want to use Spring. We have some basic support there now, such as code completion for Spring artifacts.
Frank Sommers:: Could you share with us how you decide what languages and frameworks to support in NetBeans?
Gregg Sporar: NetBeans already supports a whole host of frameworks. And framework support is not a Java-only thing. Our support for Ruby wouldn't have been any good if we hadn't had any support for Rails. The same sort of thing will happen with other dynamic languages. One of the things down the road is support for Groovy. And the Groovy community is really interested in their version of Rails, Grails. We not interested in doing Groovy support unless we have Grails support as well.
Frank Sommers: Besides the new features we already talked about, what else is new in NetBeans 6.1?
Tim Boudreau: We did a lot of work in 6.1 on improving startup performance. A modular application is one that discovers its parts when it starts. You want to make that process as efficient as possible.
In previous versions of NetBeans, the startup process did a lot more work than was absolutely necessary. One thing we did was to lazily load projects in 6.1. Inside NetBeans, a project is an object that associates a directory with a bucket of stuff. We optimized how that works, and only show the project root node when you first start the IDE. Then there was a some nuts-and-bolts stuff with optimizing XML parsing and manifest parsing, tuning class loading, reducing the amount of IO that happens. In our regression tests we actually make sure that performance gains are kept over time: if startup takes too long, the tests are going to fail.
What do you think of NetBeans 6.1? What languages and frameworks would you like the IDE to support?