Ответ 1
Я думаю, что, несмотря на плохое управление Sun, Swing все еще отличная рамка. Вы можете многое сделать с этим, особенно если эта "партия" включает персонализированные элементы управления пользовательского интерфейса. Если вашему приложению нужен фирменный LAF или даже несколько сложных пользовательских элементов управления здесь и там, Swing - именно то, что вы хотите.
На другой стороне монеты я очень люблю SWT. Он получает плохой рэп, потому что все привыкли считать, что IBM-уловка перехватила Java, но это действительно просто еще одна инфраструктура пользовательского интерфейса, которая вполне дополняет Swing. Я бы не советовал использовать SWT для суперкомплексного графического рендеринга (в частности: композитинг) или для создания действительно нетривиальных пользовательских элементов управления, но для всего остального это действительно денди. Сам API получает много критики из-за таких вещей, как уверенность в бит-масках и управляемый пользователями цикл отправки событий, но большинство из этих вещей довольно прозрачны, как только вы привыкнете к ним. Сами компоненты намного проще, чем Swing (с точки зрения расширяемости и тому подобного), что означает, что API может быть пропорционально проще. Я действительно могу запомнить, как создавать и заполнять таблицу в SWT; тогда как я не думаю, что когда-либо занимался этим в Swing без помощи Google.
Самая большая проблема SWT прямо сейчас - стабильная версия зависит от Carbon в Mac OS X. Это означает, что приложения SWT могут запускать только 32-разрядные версии на Java 5 (или 32 бит на SoyLatte). Что касается других платформ, SWT феноменальна для Windows (Vista и XP) и почти так же хороша в GTK Linux. У меня нет (в последнее время) каких-либо проблем с SWT в Linux, поэтому я немного удивлен, что вы упомянули бы это как больной.
Возвращаясь к вашему вопросу: все зависит от того, что нужно вашему приложению. Если это кричащее приложение в обычном стиле с множеством пользовательских элементов управления и сложным композитингом, Swing - единственная игра в городе. Однако, если более простой API более важен для вас, или если ваши пользователи требуют максимальной точности в платформе LAF, лучшим выбором будет SWT.