New and Noteworthy: NetBeans IDE 6.7
Connected Developer: NetBeans Integration With Kenai.com
The NetBeans IDE supports the typical developer workflow of the software project hosting site Kenai.com. The following features are available.
Support for Kenai-hosted projects in the IDE
Use the new Kenai window and the new Team menu for Kenai project management and version control related operations.
- Search for projects on Kenai.com. (Search does not require login.)
- Login to Kenai.com.
- Create a new Kenai-hosted project from within the IDE.
- View "My Projects" in the IDE's Kenai Window
- Get sources for selected Kenai projects and open them in the IDE.
- Query, open, edit and create issues for given Kenai projects, directly in the IDE. Bugzilla supported.
- For some features (creating a Kenai.com user account, managing a project, using a wiki, etc) the IDE navigates the user to the corresponding Kenai page in the web browser.
- Navigate between Kenai-hosted projects and the local sources in open NetBeans projects.
- Kenai.com chat rooms and presence service for project members integrated into the IDE
- Integrated version control access to Kenai.com is pre-configured. (Subversion and Mercurial)
- Integrated version control access to repositories using CVS, Mercurial, or Subversion.
Getting Started with the Kenai integration in the IDE:
- Search and open existing projects on Kenai and get their sources, which does not require login.
- To get more involved, create an account on Kenai.com, and bookmark some projects or ask for membership.
- The Sandbox project will allow you to try various features safely.
- To create your own project, you need to ask for project creation permission first (will not be required when NB 6.7 is released).
Issue Tracking Integration
The IDE now offers full integration with Bugzilla; JIRA support is coming soon. It can be used with Kenai.com projects (with everything automatically set up), as well as with separately configured bug repositories.
- Create queries, see results, sort, filter issues.
- Save queries, see differences from last run of the query.
- Open, edit, create new issues. Attachments supported.
- Simplified patch manipulation:
- When creating a patch (diff) in the IDE, it can be simply attached to the selected issue.
- Apply a patch directly from an issue to the respective source file.
- Navigation extensions:
- Clicking on a stacktrace in an issue jumps directly to the source code.
- You can open an issue from wherever it is referenced in the IDE - from source code, from commit messages in version control history, from versioning annotations, etc. E.g. Ctrl-clicking on
#issue 123in source editor will open issue 123 from the associated issue repository.
- Navigation between issues.
- Commit hooks:
- In commit dialog you can easily select the issue whose number should appear in the commit log.
- The issue can be automatically closed in one step together with the commit, with additional info about committed changes added to the issue.
- Only Bugzilla supported at this moment. Support for JIRA is under works, will appear on Auto Update later.
- For creating a new continuous build, you need to set up your own Hudson server. Kenai will provide continuous integration service in the future, but not for NB 6.7.
Features on Demand
We optimized the NetBeans IDE to deliver the first and only adaptive IDE that fits itself to its user's needs.
The NetBeans IDE 6.7 is the first NetBeans IDE distribution that adjusts to user needs by only loading functionality on demand. That is, the IDE does not load all technologies as soon as it starts. Instead it lets users express their preferences, and then adjusts its resources to best suit their needs.
The running IDE process enables only the required functionality, eliminates bugs and inefficiencies from those parts that are unused, without the user having to deactivate them explicitly.
Thus the NetBeans IDE goes even further to deliver on its promise of being "the only IDE you'll ever need": We continue to expand the IDE's functionality while still allowing for different needs of its individual users.
Profile Me Now!
The NetBeans IDE 6.7 has been enhanced with an excellent self-diagnostic tool to help with "in field" identification of errors and to simplify the reporting process.
The NetBeans community --users, partners, developers-- is known for the valuable feedback it provides, so we want to make it easier for you to report issues, so you can report them more frequently and with more detail.
Here's how Profile Me Now! works:
- Make sure the Memory toolbar is displayed.
- Then click on the Snapshot toolbar button to let the system start to capture thread dumps from the running IDE.
- Then work in the IDE, emulate an action which seems to be slow. Press the Snapshot toolbar button again to turn the self profiling off.
- The system then generates a standard NetBeans Profiler snapshot and shows it. Now you analyze the dump or attach it to an Issuezilla bug report.
IDE improvements: Options, Plugins, Views and Projects
Export and Import of Options
Now it is possible to export or import NetBeans options. This means you can share options with workmates, back up options, and easily transfer options between NetBeans releases. Details: ExportImportOptions
Importing plugins from previous release into the new one
NetBeans IDE users can install various plugins (extensions) into their IDE (Menu: Tool > Plugins). But after installing a new release of the IDE, they used to have to identify and install the same set of plugins again.
Since NB 6.7 M1 you have now the directly option to import plugins from an old version of the IDE to new one.
- The Editor pane can be synchronized with the Projects and Files views. In other words: When the editor is in focus then the file in the editor is also selected in the Projects tab or Files tab.
- The Freeform Project wizard will scan first two levels of folders under selected project folder root and offer possible source roots in the next wizard panel.
- The ParsingAPI has been merged to the trunk.
- The keymap options pane has been revamped for better usability. A completion popup is displayed, suggesting typical shortcuts which are not yet occupied.
Code completion settings improvements
- Guess Filled method arguments -- provides arguments based on its type when a method is supplied by CC
- Auto Popup Triggers -- patterns, upon which CC popup shows up
- Auto Popup on Typing any Java Identifier Part -- show CC upon every char typed
- Code Completion Selectors -- characters which confirm current CC selection
- Packages/Classes Code completion Excluder -- patterns which are excluded from CC
- Apply rules to methods -- apply rules to method CC also
- Auto Popup triggers for Javadoc -- patterns, upon which CC popup shows up inside Javadoc comments
Module developers can now register some kinds of objects into the runtime system using Java source code annotations rather than separate metadata.
In particular, @ServiceProvider can be used instead of META-INF/services/* files; and some things that previously needed to be registered in an XML layer can now be registered using an annotation like @SomeSPI.Registration.
Improved toolbars behavior
The implementation of the main window toolbars has been rewritten from scratch so now the toolbars behave better when the main window is being resized. It's also possible to dock any toolbar to the right edge of the main window.
Improved Declarative MIME Type Resolvers
DTD of declarative MIME resolver was extended by new elements. The name element is intended for file name checking and the pattern element enables to check a string pattern in file content. For performance reasons it is highly recommended to use declarative resolvers instead of procedural ones.
- Customizations at TopComponent level - it's possible to disable closing, dragging, undocking, sliding and maximization for a single TopComponent - Issue 156693.
- Support of 'importance' of messages displayed in main window's status bar - Issue 156357.
- Improved look-and-feel on Mac OS X:
Output Window enhancements
- API enhancements:
- Possibility to embed I/O components (Output Window tabs) to other components (e.g. Test Runner window)
- Support for multiple I/O providers, any IOProvider can add tab to Output Window
- Color lines printing, colors for "default" output can be set
- Icon and tool tips support for IO tabs
- Programmatic scrolling
- New core.output2 functionality:
- Custom font selection in plain mode, font size for wrapped mode
- Grep-like filtering
- RegExp searching
Export/Import actions are accessible from the Options dialog.
User must select target zip file for exported options and select some items from available options. For import user can choose whether to import from arbitrary userdir or previously created zip file.
Change File Extension
Now it is possible to change extension of files in IDE. You can open Properties sheet of the file (Windows>Properties or popup menu Properties) and modify the Extension property. If the file its extension is changing is opened in editor, it is closed afterwards to accomodate appropriate data type.
Update Center catalog enhancement
Now licenses are stored not in Update Center catalog files (catalog.xml) but in separate files and downloaded only on demand for the plugins been installed. This makes the catalog reload faster and consumes much less memory than before.
Find/Replace in projects enhancements
- Performance of the search was improved by changing the objects used for the context search and improving the mechanism for determining the file encoding. In other words search become faster and consumes less memory.
- Each search results now displayed in the different tab. So it's possible to work with different search results at once without invoking re-search.
- It's possible now to search multilines i.e. search text divided by line separators (CR, LF, CRLF).
- It's allowed now to use back-references in the replace regular expression.
- Search and replace options now persistent between sessions. It allows to reuse frequently used options.
NetBeans RCP Platform projects
Module Suite and RCP Application projects can now reference and use modules from other projects as well as external binary modules. This allows for more modular design of RCP applications:
- RCP application can be split into several suites and clusters
- parts of the application can be built separately as e.g. module libraries, Lite versions and so on
- developing of large-scale RCP application is easier, sets of 3rd party modules can be updated independently, etc.
Suite chaining can be configured in IDE in Properties -> Libraries tab of Suite project.
When adding external cluster (consisting e.g. of unpacked 3rd party NBM files), sources and Javadoc can be assigned to it in the same way as for NetBeans Platform.
Automatic resolution of excluded modules
Warnings about excluded depended upon modules can now be resolved automatically with Resolve button.
Maven project Support
Broad support for Maven based projects was added to standard NetBeans distribution. Maven NetBeans support allows you to easily open, build, run, profile and deploy your existing Maven projects or create new one from the scratch. If interested, we encourage you to read Maven Best Practices document which describes how to use IDE's Maven support. Note that document refers to state in 6.5 version, and there are couple of improvements in 7.0 M1, which include:
- Compile On Save support
- Improved, more powerful Add Dependency dialog with as-you-type searching in Maven repositories and wise handling of "dependencyManagement" section for complex POM inheritance scenarios. Dialog can be invoked either by right-clicking "Libraries" node -> "Add Library..." or by Alt+Insert in POM editor.
- Better POM xml editing support like support for generating profiles, dependencies via Alt + Insert shortcut:
- Various Web Services (SOAP) support
POM Editor enhancements
- Hints in POM files editor
- Warn against usage of RELEASE/LATEST version in plugins
- Check overrides of versions of managed plugins/dependencies
- Check usage of latest parent POM.
- Improved code completion for Maven plugin parameters, now with documentation popup.
- Code generators for
- Dependency excludes
- Mirror in ~/.m2/settings.xml file
- It's now possible to define what JDK the Maven build will be executed with, and what JDK the IDE will use in completion and elsewhere. Only applies to build execution from within the IDE.
- New "Build with Dependencies" action, based on execution of maven-reactor-plugin. Allows for rebuilding of projects and the dependencies that were changed. Only applies to dependencies that are included in the Maven reactor build.
- New project wizards for Maven web applications, EJB and enterprise projects, supporting J2EE 1.4 and JEE5
- Deploy on save for web applications.
- J2EE APIs are added to projects as provided dependencies and as needed by the various file wizards and code generators.
- Persistence area improved, container based resources now supported.
- Profiling of Maven based J2EE applications enabled.
Web Services in Maven
Full support for Web Services, based on JAX-WS 2.1 framework, implemented for Maven projects:
- Support for Web Service creation in Maven Web and EJB application
- WS from Java wizard
- WS from WSDL wizard
- Automatic detection of Web Services in projects (detection of Java classes annotated with @WebService annotation)
- Support for Web Service consumption in Maven J2SE, Web and EJB applications
- WS Client wizard
- Maven JAX-WS plugin integration to enable JAX-WS stub classes generation
- Client code generator
- Support for SOAP handlers creation and configuration
- jax-ws-catalog.xml integration, to enable working with local wsdl/xml resources instead of remote
- Test Web Service action implemented
- Refresh action implemented for WS client to enable re-generation of JAX-WS stub classes, in case the wsdl file is changed
- Support for both JSR109 deployment (GlassFish) and non JSR109 deployment(Tomcat)
Artifact Details Viewer
New multi-tabbed artifact details viewer is now available, accessible from Maven Repository Browser or Maven section of Quick Search toolbar field.
- "Basic" tab shows basic artifact's info, versions and related artifacts.
- "Project" tab shows artifact project's info like links to bug tracking, source management, mailing lists etc.
- "Classpath" tab shows direct dependencies in lists
- "Graph" tab shows transitive dependency graph, see special section below
New actions on Details Viewer's toolbar allow users to checkout sources and open in NB in one click or make NB library from given artifact.
Dependency Graph Viewer
Graphical view of transitive dependencies is now available, with additional features:
- Identification of version conflict using red and yellow colors
- Automatic zooming on mouse-over to ensure readability for complex graphs
- Show subset of graph on single click on artifact rectangle
- Zoom to fit on double click, either on artifact or on whole graph
- Text search highlighting
- Spinner for highlighting of transitive path length
- Standard zooming and scrolling features
POM Navigator Improved
- now displays more POM sections
- shows sections defined in active POM editor with bold font
- allows to jump to parent POM easily
Generated Java Source Files
For Java sources generated by various tools, like JAXB, JAX-WS, or JAX-RPC, the generated source roots are now displayed in grey in the Projects tab. These sources are generated by tools and not expected to be edited by users.
The behavior of these generated sources is as follows:
- They are handled in the project almost like regular Java sources:
- You can refer to these classes from your own classes you edit.
- Code completion works the same as for regular sources.
- You can step through these classes in a debugger.
- Javadoc is generated for generated classes.
- The sources are usually generated by Build Project.
- Clean Project deletes all generated sources, so do not try to edit them!
- Generated source roots will not be offered in the New File dialog.
- Generated sources are ignored by SCMs such as Subversion.
Java SE, Web, EJB, and EE App Client projects handle generated sources.
You can also use this feature for your own custom build steps: override the -pre-compile target in your build.xmland generate classes to a direct subdirectory of
The IDE should automatically detect and display them, and include them along with real sources when compiling your project.
Now it is possible to create Qt applications and libraries without complex project configuration and hand-editing of Makefiles.
Typical Qt files, such as forms, resources, and translations, can be easily created from inside the IDE using standard Qt editing tools: Qt Designer for form files and Qt Linguist for translations.
Code Assistance will be configured automatically for you, if NetBeans can find a Qt installation on your computer.
New Qt-specific project properties cover typical configuration needs, at the same time allowing experts to fine-tune the generated qmake project file.
Macro Expansion View
The Macro Expansion view allows you to view code with expanded macros.
To enable the Macro Expansion view, choose Window->Other->Macro Expansion from the main menu. To expand a certain piece of code, select Navigate->View Macro Expansion from the pop-up menu.
Macro expansions are located inside guarded blocks.
Semantic highlighting is provided for expanded code. It is also possible to use hyperlinks.
Macro Expansion Tooltip
New hyperlink operation is available Alt+Ctrl+Click to open Macro View. If hold Alt+Ctrl and hover block with macro expansion then tooltip is shown and no need to open macro view until more details are needed.
C/C++ Code Assistance
There are some improvements in code assistance for C/C++ projects.
- Code completion for preprocessor directives and preprocessor blocks (i.e. #ifdef/#else/#endif)
- Navigation between correspondent preprocessor statements #ifdef/#else/#endif with Alt+UP/DOWN (works in dead code as well)
- The "Insert Code" (Alt+Insert) command generates getters/setters for class fields. To invoke this operation, the cursor can be inside the class body or hovered over the field declaration (to have this field pre-selected).
Creating C/C++ Projects From Existing Code
- The new project wizard now creates NetBeans projects in one step.
- auto view (only variables in the current line and the line before)
- debug macros (macro value is shown in watch view and tooltips)
- debug core files
- stop on signals
- show functions arguments in stack view
- attach window improvements
- displays various information about application runtime
- appears on project start
- no setup is required
- for now Linux and Solaris only
Remote development: new host setup is made easier and more clear.
In first step, it searches network neighborhood
During the second step (which may take a while), it makes clear what is going on:
Change Method Parameters refactoring
Basic support for Encapsulate Fields refactoring
Refactorings are available not only in editor, but in Class View and Navigator as well
- Exception breakpoints print the name of the exception class and exception message when hit.
- It's possible to evaluate code fragments, not just single expressions.
Now available, the ability to easily view and setup sources before a debugger session is started. When no debugger session is running, Sources window displays source roots of the main or currently selected project. In a separate tab, the set of sources used for remote attach can be customized.
Evaluator Window is Docked
Evaluator window is now docked into main NetBeans window. It is opened in a bottom Editor area, above other debugger-related windows. The result is displayed in the Evaluation Result window, together with a history of evaluated expressions and their values.
Options for Java Debugging
Debugger options were introduced to be able to customize the debugging process.
- General options
- Stepping Filters setup - Classes or packages that should be skipped during stepping can be specified here.
- Variable Formatters - These are used to format values displayed in Local Variables, Watches, etc.
In Breakpoints and Sources view, check-boxes that enable and disable individual breakpoints or source roots were moved from a special column to the front of each line.
Export data into CSV, HTML and XML
Data from CPU profiling and Memory profiling views and VM telemetry graphs are now exportable into CSV, HTML and XML file.
This feature is available through "Export to..." button formerly used only to save snapshots.
OQL support for heapwalker
Now it is possible to use jHat compatible OQL queries to analyze the contents of the heapdump. The OQL support offers a basic syntax and keyword highlighting, code completion for OQL keywords and the class names on the heap and the query results are integrated with the rest of the heapwalker.
Java Web, EE, Web Frameworks
- Struts library has been migrated to version 1.3.8
- The SQL Editor now supports Save As. This also allows an SQL file created through "View Data" or "Execute Command" to be saved as another name or in another directory.
All the features are described in more detail on netbeans php blog.
- Generating Getters and Setters Improved
- SFTP support added
- Parameter Info
- Code completion for constructors
- Marking returns
- Go to type for class members - improved
- SQL code completion in the PHP editor
- Marking occurrences improved
- Defining a variable type in comment. For more info see also this blog entry
- Hint: Implement all abstract methods
- PHPUnit support added && UI
- PHPUnit Code Coverage
- Code coverage
- Selenium plugin
- Path Mapping In PHP Debugger
- PHP interpreter/PHPUnit output improvements
Sun GlassFish Enterprise Server v3 Prelude Integration
Added Hierarchy to the Tree View in the Services Explorer
The tree is starting to look like the tree view of Glassfish v2.
Resolver for Sun GlassFish Enterprise Server v3 Prelude
Support code completion and the like when Glassfish v3 Prelude is your only registered Java EE server
Start the server with the same proxy configuration as the IDE.
Register Derby associated with v3 Prelude instance with the IDE's Derby support.
If no Derby instance is registered with the IDE.
Populate data for samples when user registers v3 Prelude
Start the Derby instance registered with the IDE when v3 Prelude instance is started.
This can be controlled by a Glassfish v3 Prelude server instance property.
The 6.7 release includes a new feature, integration with the Hudson continuous integration server.
Start by specifying the location of your Hudson server under Services > Hudson:
(If you use Maven, you can just configure your pom.xml to point to it:
<ciManagement> <system>hudson</system> <url>http://..../</url> </ciManagement>
and NetBeans should connect to that Hudson server automatically!)
If you do not already have a job for your project, the IDE can help you make one. Currently Maven and (Ant-based) Java SE project types are supported, as are Subversion and Mercurial for the SCM. You can right-click your server node, or use Team > New Continuous Build... to start:
Browse your hosted jobs and their builds. You can also browse the job's workspace, and artifacts from a build. The console from a build can be viewed in the IDE's output window. You should also get notifications in the status bar when a build fails:
Not sure why a failure happened? Right-click a build and get stack traces for all its test failures, or get a changelog and browse file diffs inside the IDE:
Project page with more details and bug reporting and testing information: HudsonInNetBeans
JUnit was switched to use Common Test Runner API to display test results.
As a result the following functionality become available in test results window:
- Colored passed/total tests bar.
- Rerun the tests which were previously run.
- NOTE: The ability to re-run tests is not available for NetBeans Platform projects
- View differences in color in the separate window in case of comparison failure.
Java ME / NetBeans Mobility
Java ME SDK 3.0
Java ME SDK 3.0 Platform integration
Full support for SVG Rich Components in the Visual Mobile Designer
This feature allows tracking and editing of several SVG Rich Component parameters using the: Properties Window, Inspector and Flow Designer in the Visual Mobile Designer.
Improved SVG Composer - Landscape Mode
This feature allows users to rotate an SVG image by 90/180/270 degrees. It helps developers to design SVG mobile applications in landscape mode:
Pluggable SVG Rich Component Snippets
This feature allows users to switch between registered SVG Snippets. There are two default snippets registered, "Classic" and "Gradient". This API also allows users to plug in new sets of Snippets.
Panel to switch registered SVG Snippets.
- SVG Rich Components Runtime Landscape mode
- Screen Designer supports the selection of SVG Rich Components. SVG Component parameters are now editable using the Visual Mobile Designer
- SVG Composer Landscape
- SVG List - SVG List Elements are now visible in the Flow Designer
Groovy and Grails
Grails 1.1 supported out of the box.
It is possible to configure Grails directly from new project wizard.
Artifact (domain, class, controller, etc.) wizard now provides package selection/creation.
Grails Project Properties
You can now disable browser opening on run.
And you can configure the JDK to use with Grails project.
The code completion can handle method reference and safe dereference operators. For Grails domain and controller classes it provides names of dynamic methods.
Now there is a support to invoke any Grails command (or custom script) on your project. You can invoke it from context menu item "Run Grails Command...".
In displayed dialog you can easily filter out commands and run selected.
Ruby and Rails
- Remote Debugging Support
- Platform Node in the project logical view
- ability to enable logging through GUI
- Context menu actions for running/debugging test cases and suites
- Initial support for Shoulda tests.
- Tooltips showing the output of the selected test case / suite.
The Ruby Platform node now contains child nodes for the gems that are installed for that platform.
There is a new visual diff viewer for displaying assert_equals failures.
In addition run focused test is now supported for Shoulda tests.
The Rake Runner dialog now maintains a list of the previously entered parameters and automatically populates the list of parameters for migrate and fixtures tasks.
It is now possible to specify the initial URL that should be displayed when running a Rails application.
- Improved support for E4X