Scott Palmer: My Five Favorite NetBeans IDE Features!

DZone 's Guide to

Scott Palmer: My Five Favorite NetBeans IDE Features!

· Java Zone ·
Free Resource

Continuing a series of articles focusing on NetBeans users and their five favorite NetBeans IDE features, here's the next part, by Scott Palmer. -- NetBeans team.

Scott Palmer is an Application Architect at Digital Rapids Corp. where he's been doing client-side desktop applications in Java for over ten years. He's been programming computers since he first saw a Commodore Pet when he was in grade 5. He still loves to code and play around with tech toys. He's recently been experimenting with Java 8 and JavaFX on the Raspberry PI.

What are your 5 favorite NetBeans IDE features?

1. Editor Hints. They catch potential problems:

Suggest a better way:

Or help migrate to more compact/modern code:

The editor hints in NetBeans helps me clean up my code and adapt it to new features.

2. Standards-based projects and the Gradle Plugin. ...and NetBeans support for industry standard build tools in general.

Like most Java developers, I used Ant for building Java projects, then tried Maven. They both have their place, but as my projects got more complicated I needed a bit more. Gradle is the next step in build tool evolution and I love it.

It's great that I can open my Gradle-based projects in NetBeans without having to go through any fancy "import" process. All my build tasks are accessible and large multi-project builds are supported.

Thanks to Geertjan for getting this started and Attila for taking the reins and pushing it forward.

Ant and Maven support work out of the box and the Gradle plugin is available from the update center. So whatever build tool you choose, NetBeans has it covered and your projects will build on your integration server without needing NetBeans installed.

3. Support for GUI design. Starting with the Swing UI builder (Matisse) which offers an excellent drag and drop GUI building experience. It is great for layout and support of the various layout managers, making sure the UI resizes well, etc. Being able to wire up the event handlers in the same place helps get the UI up and going in very little time.

These days though, I’ve switched to JavaFX. (The JavaFX team has done a great job at making an improved GUI framework.) NetBeans works well with SceneBuilder, so you can leave Scene Builder and NetBeans running and things just stay synchronized between the two.

While that sort of integration was how Scene Builder was designed, NetBeans takes it a bit further with the "Make Controller" action, which doesn’t just give you a skeleton of a controller class, but can be invoked repeatedly to update the existing controller with new fields and methods that you have added on the Scene Builder side.

4. Version Control Aware Change Markers. Indicators on both sides of the editor show you where you have made changes in the current file. Clicking the markers in the gutter lets you see what used to be there and allows you to selectively undo edits in any order or bring up a full diff view. The markers on the right help you easily navigate to the areas you are working on. What’s great is that these changes are based on the version control system, not some undo buffer that is lost when you restart the IDE.

My company has transitioned from Subversion to Mercurial and both systems have great support in NetBeans out of the box.

5. Project Groups. Around here there is always more than one project on the go at any given time. NetBeans Project "Groups" allows me to flip from one context to another easily.

I can have the production code in one group for when I’m asked to reproduce an issue or make a patch. I can have the latest development code in another group, so I can easily flip back to working on the new features.

Do you also want to share your favorite NetBeans features with the world? Write to netbeans dot webmaster at gmail dot com.


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}