What's the big deal?
I've been following Cafe au Lait for a few weeks now, and it really amuses me. Quotes like "the best Java can or should do is faithfully mimic the native user interface" and "the goal of a Java application is to fit in with other native applications, not to stand out" most certainly indicate that the writer is a strong proponent of a native look and feel, which is kind of bemusing. The Mac UI is shifting constantly, and the upcoming OS X release is supposed to feature a new UI (Illuminous?). Given the history of OS X for the past few years, and numerous native look and feels (Aqua, Graphite, Brushed Metal), it would appear that even Apple's UI designers don't consider the current state of affairs as the best. But i digress.
You need to be able to change the UI around really easily during development â€” after user testing, or a Steve Jobs encounter session â€” even after youâ€™ve attached a lot of code to it. That means no RAD tools that write code for you, because once their code mingles with your code, it gets hard to disentangle. Instead, the UI should be described with data, like an Interface Builder ".nib" file.
The obvious target of this quote is NetBeans Matisse which puts the UI-related code in the same file as the business logic (say, event handlers). However, that is misleading at best and fanboyish at worst.
- The code that NetBeans generates doesn't "mingle" with your code. It is kept in one section of code which is folded by default, and the Java editor doesn't allow you to edit it (you can still view it).
- If you do open this class in an external editor, change the generated code and then play surprised that NetBeans doesn't like it (if you don't follow its conventions), think about what would happen if you'd do the same with the NIB file. Or with the good old Visual Studio RC files. Or with brand new XAML / C# extravaganza.
- NetBeans doesn't use any proprietary format and is already supported by Instantiations for editing in Eclipse. Any other major Mac IDE providing support for editing NIB-based UIs?
So, what's the big deal? What's all the bickering about? That NetBeans doesn't use two separate files? Or that a major Java IDE finally provided a decent UI editor? Or that Java developers seem to treat a 5% market as what it is (a 5% market)?
I don't want to reopen the entire native against cross-platform look-and-feel debate again. I just would like to understand the real difference between Interface Builder approach and Matisse approach, as long as each one of these is used as it's designed to.