There are two types of GUI: * Data entry, configuration or monitoring GUI, what we tend to see in the industry * Interactive GUI that has strong shell integration Strangely enough, most of the software we use everyday falls into the second category, while all the platform-independent GUI frameworks only address the first one. More specifically, as I'm writing this text, the following GUI softwares are running on my computer: * InternetExplorer * MicrosoftOffice * WinAmp * WindowsMessenger * EclipseEditor * ProcessExplorer * A couple of NT CommandBox''''''es Only one of these is written using some platform-independent GUI framework: JavaSwt. Incidentally, this framework is known for allowing easy creation of platform-dependent code if not used carefully. This leads to my point: if you plan to target everyday users (not the industry users), forget about platform-independent GUI. Can you imagine WinAmp being developed using Swing? Or WindowsMessenger? Not to talk about WinZip and its deep shell integration... The truth is that platforms are different in essence, and trying to deny these specificities will alienate your users. You don't design a GUI on Windows the way you design it on MacOS or on Linux, and trying to do so will lead to ugly results on all of them (ugly meaning: not following user's expected LookAndFeel). '''Therefore''': if you target everyday users (my mother), opt for a GUI framework that allows you to create platform-dependent code so that you can integrate more with the native environment. But ensure that this framework will allow ''easy'' (not ''transparent'') port on other platforms the day you will want to target other user bases. '''However''', if you plan to target professional users on several platforms, don't hesitate and go for a fully platform-independent framework. '''Conclusion''': if your Java application has a client and a server part, and if you don't opt for a ThinClient approach, the server GUI should be written in JavaSwing and the client code in SWT. -- PhilippeDetournay ---- See also: TheGuiThreadIsTheMainThread, PlatformIndependence, PlatformPortability, ProgrammingLanguageNeutralGui, NoApplication