Several members of the NetBeans GUI Editor (code name "Matisse") team talked about the past, present, and future of the tool today at NetBeans Day. By the end of the week there should be a special "JavaOne update" that will include several new features, including a look and feel changer, a context sensitive toolbar, and automated internationalization support.
All these were demoed during the presentation. The coolest feature was probably internationalization support. Normally when you're just trying to knock a GUI together you just hard code everything, and try to go back later and do it with "real" i18n, property files and so on. With this new update, while you might appear to be hard coding things the tool is actually putting all those strings in property files. All the time. So there's no need for going back to redo it later.
They also demonstrated how to change your language context, so you could, for example, switch from 'Default Language' to 'Polish' and start replacing labels in Matisse, then switch back and forth. This is the way it should work.
Because the Swing and Matisse teams have been working together, the new GroupLayout class that Matisse needs has been incorporated into JDK6. So for JDK6, Matisse generates completely "standard" code (i.e., the code conforms to the APIs that come with the JRE and no other classes are needed).
So what can we look forward to in NetBeans 6.0 and beyond? Some things the team is working on include:
- GUI templates/component snippets
- Visual inheritance, using forms in forms
- Data binding, data-aware applications
- Layout design enhancements
- Improving small things, and most frequent tasks
The most significant new feature is probably data binding, or as developer Scott Violet calls it, "beans binding". Scott says it will make things easier for you, automating common tasks. It's not specific to database applications. Wiring is a big part of swing apps, for example, wiring ResultSets to JList, PoJos to JList, etc.. This will be addressed by beans binding.
There's a JSR (295) now forming and they need more expert group members. A session at JavaOne, TS-1594, will go into more details. They will have a stand-alone version that works on Tiger and Mustang but it'll be targeted to Dolphin. It will have a tools-centric design.
Hans Muller showed off the new Swing Application Framework. The basic idea is that Swing is complicated, and the time has come to build a framework to make it easier to build applications. The focus will be on a small number of APIs. It'll include Lifecycle elements, Actions, Resources, and Session state. Hans pointed out what Application Framework is not - It's not modules for Java, data binding, XML schema for Swing, a new set of Swing components, or the NetBeans Platform. All these are covered well by other JSRs or projects.
JSR296 has been filed for the Application Framework but hasn't been approved yet. An expert group will hopefully start work this summer. A prototype has already been built, and JavaOne session TS-3399 will discuss what they have so far.
At the end of the presentation, the team gave a demo showing how the app framework, beans binding, automatic localization, and other features work together (see above). This was all experimental code, subject to change, but I have to say it was very impressive.