Tuesday, July 26, 2005

NetBeans Dev 4.2 - Going from bad to worse?

For as long as Matisse has been advertised (starting June 26th) I've never had the success of building GUIs that others seem to have. Enough with the hype. Starting with this post, I've started to document the brokeness of NetBeans Matisse by trying to build Roman's DemoForm. I pulled down the latest developer releases for NetBeans 4.2, dated the 24th and the 25th of July. Both of them are broken now in some fundamental areas besides Matisse. In particular you can't run the update center. For the last two releases invoking the update center has produced the lovely exception dialog you can see to the right.

The Matisse module is still very broken, and it is still impossible to create the DemoForm that is a part of Roman's flash demo. I would strongly suggest to the developers and boosters of NetBeans that they quietly hide Roman's demo until such time as Matisse is robust enough that the entire demo can be successfully built. Otherwise Matisse is now little more than vaporware. And go back and fix the update center.

What follows is the text of the update center exception.

at org.netbeans.modules.autoupdate.XMLAutoupdateType.getDefaultURL(XMLAutoupdateType.java:325)
at org.netbeans.modules.autoupdate.XMLAutoupdateType.readObject(XMLAutoupdateType.java:373)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:919)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1813)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
at org.netbeans.modules.settings.convertors.XMLSettingsSupport$SettingsRecognizer.readSerial(XMLSettingsSupport.java:514)
at org.netbeans.modules.settings.convertors.XMLSettingsSupport$SettingsRecognizer.instanceCreate(XMLSettingsSupport.java:542)
at org.netbeans.modules.settings.convertors.SerialDataConvertor$SettingsInstance.instanceCreate(SerialDataConvertor.java:357)
at org.openide.loaders.FolderLookup$ICItem.getInstance(FolderLookup.java:485)
at org.openide.util.lookup.AbstractLookup$R.allInstances(AbstractLookup.java:875)
at org.openide.util.lookup.ProxyLookup$R.computeResult(ProxyLookup.java:435)
at org.openide.util.lookup.ProxyLookup$R.allInstances(ProxyLookup.java:388)
at org.openide.util.lookup.ProxyLookup$R.computeResult(ProxyLookup.java:435)
at org.openide.util.lookup.ProxyLookup$R.allInstances(ProxyLookup.java:388)
at org.netbeans.modules.autoupdate.AutoupdateType.autoupdateTypes(AutoupdateType.java:68)
at org.netbeans.modules.autoupdate.ServerPanel$ServerTableModel.refreshContent(ServerPanel.java:181)
at org.netbeans.modules.autoupdate.ServerPanel.(ServerPanel.java:49)
at org.netbeans.modules.autoupdate.FirstPanel.(FirstPanel.java:49)
at org.netbeans.modules.autoupdate.Wizard$3.(Wizard.java:497)
at org.netbeans.modules.autoupdate.Wizard$StartPanel.getComponent(Wizard.java:496)
at org.openide.WizardDescriptor.updateState(WizardDescriptor.java:641)
at org.openide.WizardDescriptor.initialize(WizardDescriptor.java:369)
at org.openide.NotifyDescriptor.getterCalled(NotifyDescriptor.java:237)
at org.openide.NotifyDescriptor.addPropertyChangeListener(NotifyDescriptor.java:599)
at org.netbeans.modules.autoupdate.Wizard.(Wizard.java:202)
at org.netbeans.modules.autoupdate.Wizard.(Wizard.java:106)
at org.netbeans.modules.autoupdate.Wizard.(Wizard.java:101)
at org.netbeans.modules.autoupdate.Wizard.go(Wizard.java:254)
at org.netbeans.modules.autoupdate.UpdateAction.performAction(UpdateAction.java:68)
at org.openide.util.actions.CallableSystemAction$1.run(CallableSystemAction.java:94)
at org.netbeans.modules.openide.util.ActionsBridge.doPerformAction(ActionsBridge.java:47)
at org.openide.util.actions.CallableSystemAction.actionPerformed(CallableSystemAction.java:90)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.AbstractButton.doClick(AbstractButton.java:302)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1000)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1041)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3803)
[catch] at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)


  1. charlie huntJuly 26, 2005

    Hi Bill,

    Thanks for trying Matisse and providing feedback.

    As you have seen in Roman's flash demo, Matisse makes gui building very simple. That does come at a cost of very complex software that's prone to be buggy at this stage of development. That being a development release.

    FWIW, the nature of NetBeans IDE nightly development builds are that bugs are expected. In addition, it's also one of the reasons we have not chosen to enable Matisse right out of the box in the NetBeans IDE 4.2 Development Release.

    At the same time we wanted to put Matisse out there to the NetBeans community via the enabling of a switch so that the community could provide feedback. (Like what you've done)

    Could I ask if you could file bug(s) or check if there are bugs currently filed against Matisse in the NetBeans issuezilla bug database that cover what you've seen? You can use this link to file bugs(s) / search issuezilla, http://www.netbeans.org/community/issues.html

    You may have noticed when you downloaded a nightly build of the 4.2 development release, there's also a "QBuild" type of download. These 4.2 development releases tend to be more stable. But, they are not made available as often as a nightly basis. The "QBuild" has some sanity testing / qualification done on them. It would just be too time consuming and costly to do the same level of testing / qualification on a nightly build.

    Stay tuned ... we should have some demo scripts in the near future you can execute which should help get you up to speed with using Matisse.



  2. >> FWIW, the nature of NetBeans IDE
    >> nightly development builds are that
    >> bugs are expected. In addition,
    >> it's also one of the reasons we
    >> have not chosen to enable Matisse
    >> right out of the box in the
    >> NetBeans IDE 4.2 Development
    >> Release.

    I understand that. But the problem I have is the "advertisement" of Matisse on the front page along with a link to Roman's flash demo. All that would be great if Matisse were more solid than it appears to be. But right now the flash demo in particular reminds me of old school software salesmanship where the system was sold on slideware and mockups. I would think that in an open source project such as NetBeans there would be a little more openness with regards to "your mileage may vary" if you use the developer builds to try and reproduce what Roman did.

    You're right, the Q builds are a lot more stable than the bleeding edge developer builds. And now with the July 26th developer build it appears that Matisse has hit a level of stability capable of allowing something as complex as Roman's form to be created. Look at my next blog entry.

  3. Hi Bill,

    I'm sorry about that you have had some problems with recent NetBeans builds.

    I'm a responsible engineer for AutoUpdate module and this module seems as working for me.

    I speculate about what gone wrong to you cannot connect Update Center: Are you able reproduce it with a fresh userdir? What Update Center do you try to connect?

    Could you please file a defect in http://www.netbeans.org/community/issues.html?

    Thanks for your feedback in advance,

  4. >> I speculate about what gone wrong to you cannot connect Update Center:
    >> Are you able reproduce it with a fresh userdir?

    That rang a bell. Read this post (http://blogbeebe.blogspot.com/2005/07/netbeans-dev-42-one-mystery-solved.html) where I started over with a fresh userdir, or .netbeans/dev under Windows. That corrected the problem. Thanks.


All comments are checked. Comment SPAM will be blocked and deleted.

Note: Only a member of this blog may post a comment.