Great Expectations and a few disappointments with NetBeans 5
Last Saturday (November 19th) I went to OneDayJava 2005, an event hosted by Rio de Janeiro SouJava affiliate and had the privilege of hearing a speech from Robert Brewin, NetBeans and Sun Java Studio Creator Chief Architect. It was a great opportunity to ask him about the relationship between NetBeans development and Java Studio Creator.
I was always suspicious that NetBeans were a second-class citizen inside Sun, as most of their marketing and development were focused in Sun Studio. Of course I know Sun Studio uses NetBeans as its base, but this fact was never made very clear by Sun marketing, almost as if it were a secret. Besides that, sometimes Sun Studio and NetBeans seems to be developing the feature in parallel, for example Matisse x Raven or the J2EE features.
Well, Robert admitted that in the past Sun Studio and NetBeans teams did not interacted as they should, and a lot of effort was duplicated, but assured us that his vision is that both teams will be working together to improve NetBeans and delivering Sun Studio as a set of value-added plug-in modules for NetBeans. He said the focus is now on NetBeans and not on Studio, that core features will be developed by both teams as part of newer NetBeans releases and Studio won't hide anymore the fact that it is NetBeans + plug-ins.
It takes courage for a person in Robert's position to admit mistakes from the past, kudos to him. Better yet, his vision should benefit both NetBeans and Sun Studio users, who will getter better software and more advances. But I would like to see NetBeans leave Sun's umbrella. I welcome Sun efforts into the product and I am very grateful for them, but NetBeans should have ideas from people outside Sun. The user community should decide how NetBeans would evolve, not only Sun by itself.
And NetBeans 5 can help this a lot. The new support for creating NetBeans plug-in modules enables many small developers to improve NetBeans. Sun should use that to foster a healthy ecosystem around NetBeans, a more open and participative one. But people won't join if they perceive NetBeans as being controlled by only Sun and being just a â€œdemoâ€ for Sun Studio.
If you think this has already been done by Eclipse, think again. Most Eclipse projects look like elephants, too slow to move and â€œownedâ€ by big companies. Nothing against big companies, but it is not easy to participate and influence Eclipse as an individual, the way we can with other open source development organizations like the Apache Foundation.
The end result is that Eclipse projects are not quick to bring in results (but I have to admit when they do bring results they are great!). Check, for instance, Eclipse VE and WTP against current NetBeans 4.1 and 5.0 betas. Eclipse projects may look more powerful on the web site, but NetBeans is ready for use right now.
My main disappointment with NetBeans 5 is the Matisse GUI builder. It is really great, until you get the wrong layout constraints and find that very few layout properties are exposed. Of course a beta release for such a new software is expected to behave somewhat erratically and miss some functionality, and in fact beta 2 is much more reliable than beta 1, but I don't like to have the visual tools as my only choice. I also have nothing against generated, non-editable, code sections, if these sections are simply property initialization and registering event handlers. But I'd like to change anything I want from the properties and inspector windows, just like I can do if I use other layouts like GridBag and Border. I want to be in control, I do not want black boxes as part of the Software I develop.
By the way, Matisse relies on a non-standard layout, the â€œNatural Layoutâ€ or â€œFree Designâ€ as it is called from NetBeans menus. Inside the generated code, we see lots of instances of org.jdesktop.layout.GroupLayout. If you know from where it came from, please tell me. Was it created by NetBeans folks, or is it part of other open source project? It looks a lot like JGoodies FormLayout. My complain is, no matter how easy this makes drawing Swing user interfaces, most newbie Java developer's won't understand why the project jar generated from NetBeans will fail to run on another machine having the JRE already installed. But there's still time to add a â€œdistribution packaging wizardâ€ to add a â€œlibâ€ folder containing all libraries and external classes used by an application project.
And what if I want to lower my app size for Swing-enabled smartphones, PDAs or just plain Applets? I'd like to have improved tools for dealing with other layout managers too. But if not using â€œFree Designâ€, we are stuck with the same NetBeans 4.0 features. It's a shame NetBeans still cannot visually edit a GridBag layout (the customizer is far from WISIWIG, although it is an improvement over 3.x). Eons ago I could do that using Visual Age for Java (today I could to this using Eclipse VE, but I'd need a faster machine than my 2.0 Ghz Athlon).
Other statement from Robert let me a little bit worried: he said the future of development tools lies with visual tools. I can understand the strong desire to get all VB developers out there using Java, but I don't thing cloning VB style of visual development is the key. Eclipse got its strength from helping coding, and newer Software Engineering practices like Agile Modeling focus on coding. Many tools that became indispensable to Java developers today like Ant and JUnit also focus on coding. Even Microsoft seems to be realizing this.
The VB style of development is opposed to current Java culture, and I don't think you can become the new â€œnumber oneâ€ by just imitating the current number one. You have to to make something different that proves to be better. So I think NetBeans (and Studio by extension) development may be constrained by the current Sun vision of fighting Microsoft by imitation.
But, if you do believe this the way to go, why not pursuing it from an Open Source project or JCP Expert Group? Why dont't we have yet â€œdata-bound controlsâ€ as a standard part of the Java platform, ready to be used by whoever wants them, no matter the IDE of choice? Sun Studio won't win VB developers by being just another RAD tool. Delphi and PowerBuilder already tried that but with only limited success. Sun Studio per se is not compelling enough, but the Java Platform may be.
We should also wonder why haven't any open source library taken this space like Struts did. Maybe the RAD style of development actually does not matter so much.
Bottom line, NetBeans is a great IDE and Sun is still putting great technology within it. It is best of breed in many respects, but still has rough edges where such an old and mature software shouldn't. It is probably being hurt by too much Sun control over it and would benefit immensely from ideas coming from outside. The question is, what will Sun do to attract outside developers to NetBeans, and will Sun be willing to let them take control?