Skip to main content

The Ability To Swing

Posted by editor on June 18, 2007 at 7:44 AM PDT

Has Matisse succeeded or failed?

Not to beat a dead horse, but the discussion that has been moving around the Java community about using GUI-building tools versus writing your GUI's by hand continues to generate new opinions, anecdotal recommendations and warnings, and a fair amount of controversy.

Over on JavaLobby, Michael Urban has touched off an intense debate by asking the open question, Has Matisse Really Changed Anything? A one-time supporter of Matisse, he found he's using it less than he would have expected. His reasons include the following:

  1. I think I actually find it faster to code by hand using a good layout manager, than I do working in a GUI visual designer where I have to drag and drop components using the mouse, size them, edit property text fields, etc. The visual designer breaks my flow I think, where as just writing code maintains my flow.

  2. I generally find hand written code easier to maintain, since I am much more familiar with the code than if it is magically written by a GUI visual designer. It's also easier to debug IMHO. Since although Matisse for example, scores great on rapidly mocking up a GUI. It doesn't score nearly so well on the human readability scale.

  3. Finally, yes, I'm sure some of it is just because hand coding is what I know and am familiar with. Until relatively recently most GUI visual designers seemed to be quite buggy. Combine that with the fact that you still had to coerce components into layout managers anyway, it was just easier to do it by hand. Yes, Matisse changes that. But again, at the expense of human readability of code.

It can be faster to write with your own layout manager? I don't know... I used Matisse for the first time on my Glossitope desklet, and for putting together a simple GUI with specific positioning and a few static images (e.g., images loaded from inside the desklet JAR and put into ImageIcons), Matisse was extremely efficient. The usual counter-argument is that tool-built GUI's sacrifice flexibility or maintainability; you usually don't hear people claiming it's slower to use a tool. There's also the question of approachabillity: Michael's an accomplished, long-time Swing developer. But not everybody is or has time to become one... if a tool unblocks more Swing development, isn't that a good thing? What do you think?

Also in Java Today,
Vladimir Sizikov has an update on What's new in ME Framework 1.2. "We (the ME Framework team) are getting closer and closer to the release date of ME Framework 1.2, and I thought that it would be useful to provide a high-level list of most important changes, improvementns and new features that we implemented in this upcoming release." His list includes a new Text Export feature, a "Debug Agent", a major Distributed Test Framework update, and more.

The latest issue of the JavaTools Community newsletter has been posted, with tool news from around the web, announcements of new community projects and one graduation from the community's incubator (Jarvis), and a "Tool Tip" on enabling GZIP compression on Apache.

Today's Weblogs
start off with a
Seam Refresh from Brian Leonard.
"It's been over a year since I first wrote about Seam and enough has changed over that time to provide a refresh of the entry. Seam is now at version 1.2.1 and JBoss just recently released version 4.2. The entry shows you how to set everything up using the latest releases of both, as well as on running Seam on GlassFish."

Lance Andersen checks in with
Using Java Web Start with the Java Persistence API.
"Ever try to use the Java Persistence API with Java Web Start successfully? If not read on..."

Finally, Norbert Truchsess offers some webapp guidance in
JSF 1.2: why you cannot store references to UIComponents in Component State.
"If you are writing cooperating components (compound components) for JSF you most likely want free and easy access from each component your compound component is build of to each other. To archive this you need references to these other components - JSF 1.2 lets you get these using findComponent or you may walk the component-tree yourself to do so. But if you try to store references to other UIComponents in you components state for later reuse these references will not survive clientside statesaving."

In today's Forums,
Jacob Abrams explains the limits of what's practical for the ME API in
Re: MIDP3 Proposal to remove the MIDlet pauseApp() lifecycle method.
"Personally I don't believe there is any use in complicating the system by adding additional information about the callbacks as BREW does. Who cares if it is an SMS interrupt or a phone call interrupt, especially if it isn't going to give us any other information such as the contents of the SMS or an audio stream to the phone call. There is certainly no reason to make the system more complex if OEMs are going to continue to do as they please. Device fragmentation will only become worse as the devices have more ways in differentiating themselves by implementing the API differently."

ZhangJiHui is looking for
The relation between quicklook test and SQE test.
"Hi, everyone, I'm a glassfish fan. I know that when a glassfish build prompted, it needs to pass quicklook tests, SQE smoke tests and CTS smoke tests. I downloaded the glassfish/appserv-tests module from glassfish cvs repository, it contains sqetests directory. Does sqetests dirctory contain all SQE tests? If it does, I want to know where are SQE smoke tests, I could not find any "smoke" word in files in sqetests directory."

Finally, dhirwinjr wants to find a
Combined date and time selection component.
"Does anyone know of a good free date and time picker? I know of the JXDatePicker in the SwingX project but from what I can tell that only allows date selection and not time selection as well. Most other libs I find doing a Google search turns up similar tools, nothing that integrates both date and time selection. I know I can do it separately but just wondering if anyone knew of an integration tool."

Current and upcoming Java

Registered users can submit event listings for the href=""> Events Page using our href="">events submission form.
All submissions go through an editorial review before being posted to the

Archives and Subscriptions: This blog is delivered weekdays as
the Java
Today RSS feed
. Also, once this page is no longer featured as the
front page of it will be
archived along with other past issues in the href=""> Archive.

Has Matisse succeeded or failed?