With the release of the NetBeans IDE 6.7 Refcard, DZone caught up with one of its authors, Geertjan Wielenga. Geertjan discusses some of the new features in 6.7 release, including improved integration with Kenai.com, improved Groovy and Grails support and numerous performance enhancements. He also looks at what distinguishes NetBeans from other, competing IDEs.
DZone: What's the main focus of the NetBeans Refcard?
Geertjan Wielenga: Well, the idea is that you'll have this Refcard next to your computer and that you'll then refer to it as you're coding. The main purpose is to instill a level of comfort in the use of the Java editor, focusing on keyboard shortcuts and code templates that will make your coding life a streamlined process.
For example, if you don't know how to perform the following activities in NetBeans IDE via the keyboard (i.e., without touching the mouse), you definitely need to download this Refcard:
- Convert a selection of text from uppercase to lowercase (or vice versa).
- Jump to a specific line in your code.
- Copy or move a selection of lines.
- Run a project or a single file.
- Create import stamements for the whole class automatically.
- Write "System.out.println()" in 5 key strokes.
- Comment out one or more lines (or remove the comments).
- Format your class.
- Rename a class, method, or field, and have NetBeans update all occurrences everywhere.
- Generate getters/setters for one or more fields.
DZone: How did you choose this focus?
Geertjan: I thought about what would be most useful in the long run—a RefCard that is essentially a tutorial on how to get started with NetBeans IDE or a RefCard that would remain useful long after you've gone through your first tutorials. I thought the latter would be more useful than the former, especially since many (really many) tutorials already exist relating to NetBeans IDE.
So, you'll find lots of lists, like this one, in the NetBeans Refcard:
In other words, this Refcard is meant to stand the test of time. For example, you might like to teach yourself a new keyboard shortcut every day. Pick one from the refcard, use it throughout the day, and then choose another one the next day. Before you know it, you'll be a very advanced user of the Java editor in NetBeans IDE.
However, NetBeans IDE offers far more than a Java editor, of course:
Anyone out there reading this is warmly invited to write a NetBeans Refcard for the PHP editor, or the Ruby editor, or a NetBeans Refcard for Maven users, for example. Pick a theme and write a NetBeans Refcard on how NetBeans IDE supports that theme! How about Java ME support, for example? Or a NetBeans Refcard for C++ developers? It's a fun experience working on such a card, there are many examples currently available that you can use as your template, and you'll learn even more than you might expect. Plus you'll establish yourself as an important member of one or more communities!
DZone: In the 6.7 release of NetBeans IDE, what's new and cool and worthy of mention?
Geertjan: Several things. Being able to upload your application to Kenai.com, straight into a version control system, is a big win. I mean, you can do that right from inside the IDE. You can then also access it again, again from inside the IDE, so that the application becomes available again to the editor. You can also create new issues for your application or open existing issues and fix them.
Integration with Bugzilla, JIRA, and Hudson rounds off the complete project management cycle that NetBeans IDE enables you to handle within a single environment. It really lifts NetBeans IDE to a higher level, beyond an editor to a project management system:
DZone: Aside from those project management features, what else does NetBeans IDE 6.7 provide?
Geertjan: Several pretty cool enhancements. For example, Groovy and Grails support is much better than it's ever been. The big thing I like most in this areas is that, in the NetBeans code completion, i.e., in the editor, I have access to the 'dynamic finders' that Grails provides for domain objects:
I can also call commands inside the IDE coming from Grails plugins, which I can install from within the IDE too.
Another cool set of enhancements relate to Maven. A lot of work has been done in that area. In particular, an excellent visual graph is provided on top of POM files:
That enables you to debug your Maven application during development, because errors and warnings coming from bad library dependencies are shown in that graph.
DZone: How about performance? That's always an issue with an application that's constantly increasing in size.
Geertjan: Yes, exactly. NetBeans IDE has an incredible breadth of features and no one needs all of it. So, in NetBeans IDE 6.7, a feature is only made available to the IDE once the user begins using it. That's made possible by a set of facades that have been built into the IDE. For example, when I choose to create a new web application, the relevant modules are installed and so, if I never create a web application, the related modules will never be installed.
And that means that unused modules are also not loaded when the IDE starts up, so that start up time is improved in a big way in this release.
Underpinning all of this is the modularity of the NetBeans Platform, which is a modular Swing application framework used by many applications, as can be seen here. Without it, it would have been completely impossible to create a version of the IDE that supports PHP developers only, for example. What that means is that there's a distribution of NetBeans IDE that ONLY contains the modules required by PHP developers, so that it is very small and light without all the modules required by Java developers, or Ruby developers, or some other kind of developers. That modularity can be used for your own applications too, if you build your application on the same Swing framework, i.e., the NetBeans Platform. Many tools and tutorials on this topic exist, as well as several books, all of which can be found from the NetBeans Platform Homepage.
DZone: What are some reasons to use NetBeans IDE rather than one of its competitors?
Geertjan: Based on user feedback, one of the big plus points for NetBeans IDE is that so much functionality is provided right out of the box. That's why NetBeans IDE is being used a lot at schools and universities: it's incredibly easy to get started with it. Just download it and start it up and you have everything you need. No treasure hunt for plugins that end up conflicting with each other because, for all the basic features, NetBeans provides everything out of the box.
Two other unique features are the deep Ant integration into the NetBeans project system (meaning that, for example, your own Ant scripts can be integrated into your NetBeans projects) and the award winning Matisse GUI Builder, which is a drag-and-drop interface for Swing developers.
Something else considered very valuable is the breadth of technologies covered, together with the thoroughness of the related documentation set to help you get started with everything:
The fact that NetBeans IDE is free & open source is also a big plus, of course. You can study its sources when extending it and, as pointed out above, you can even use its modular Swing framework as the basis of your own applications.
DZone: This is not the first version of the NetBeans Refcard. Are there big changes between the previous version and this one?
There are few very big changes. Mostly small tweaks and fixes. However, if you have the previous version, you're strongly advised to get this one, since many small bugs have been fixed. And the many review comments received have also impacted the Refcard in various ways.
DZone: Finally, what will the next version of the NetBeans Refcard provide?
Geertjan: That's up to its users! A lot of feedback was received on the current version of this Refcard and I'd especially like to thank the big group of reviewers who painstakingly went through everything and offered many suggestions. In most cases, their ideas were incorporated. And, still, of course, any feedback is more than welcome and will be considered for incorporation into the next version!