Most of all, I find myself empathizing with Mac Safari users because I haven't been able to switch away from IE7 on Vista. GAIM has a cross-platform UI based on GTK, which produces predictably bland, least-common-denominator results: The goal of a Java application is to fit in with other native applications, not to stand out. They should be changed only from operating system to operating system, not application to application. Pluggable look-and-feels are necessary in Swing only because Swing apps have to run on multiple platforms. Unless your name is Bruce Tognazzini or Kai Krause, you almost certainly won't do better than that and you'll be very, very lucky if you don't do worse. The best Java can or should do is faithfully mimic the native user interface. The bottom line is that we don't really need different look-and-feels in Java. Sadly the Linux and Java communities haven't really figured this out yet, and are still trying to have programmers do it all, with predictable results. Apple and Microsoft at least recognize that these are different skill sets, and that looks and feels should be created by a team of programmers, graphic designers, and interaction designers. This project should be a cautionary tale for people who think programmers should be interface designers.
And more often than not, it can't even manage to do that: Ultimately, the best any Java app can do is pretend to be a native app.
The APIs are too clumsy to code to, and compared to any decent Mac app, the results look like a Soviet tractor built on a Monday. Worse, the GUI portions of the Java platform are awful, because Sun is a server company with no core competency at GUIs. This led to terrible bloat, making every app as heavyweight to launch as Photoshop. Then I took a one-week Cocoa training course, and wrote the first prototype of iChat.ĭesktop Java never worked because Sun tried to build their own OS on top of the real OS, duplicating every API and feature. I spent five years as a raving Java fanboy, but I gave up after optimizing AWT, implementing drag and drop, and trying to make 1,200 pages of crappy APIs do the right thing on the Mac. I'm another of those Apple Java engineers who dropped out. Most Java developers have given up completely on GUI applications: Java has struggled with this problem for years, producing results spanning the continuum between "terrible" and "awful", depending on who you ask.
If you truly want to win the hearts and minds of your users, you go to the metal and take full advantage of the native UI. When two applications with rough feature parity compete, the application with the native UI will win. The default theme for OSX FF2 uses these really ugly widgets that are really blocky and Netscape 4-y looking.Īs vain as it may sound, those ugly widgets are actually one of the major reasons I use Safari instead of FF on OSX. These are the same buttons and scroll bars used in nearly all Cocoa apps for OSX (basically every program you've ever used).
"Native cocoa widgets" refers to the use of the natively rendered components such as scroll bars and submit buttons. The lack of a completely native UI on OS X may seem like a minor implementation detail, but it's actually a showstopper for a lot of people, like this commenter: The next version of Firefox will use some native UI elements in OS X. But if you ask Mac users why they chose Safari, and if you keep pressing them, you'll probably find the deciding factor was that Safari feels like a native Mac app. Safari is, of course, a completely competent browser that stands on its technical merits, very much unlike IE6. Mac users favor for its rendering speed, clean interface and fast launch times.
But it's not just a monopoly play there are legitimate reasons for Mac users to choose Safari: It is the browser bundled with the OS – and we know how that generally works out.
It's common knowledge that Mac users prefer Safari to Firefox.