JAVA

индекс
157,35

Sun убрало Swing Application Framework из Java 7

Я думаю на Хабре существует много разработчиков, которые так или иначе связаны с такой технологией как SWING. Недавно, я прочитал новость, означающую неопределенность его дальнейшего существования, и был удивлен, что здесь про это ничего не написали. Поэтому — читаем.

Компания Sun прекратила разработку стандарта JSR 296: Swing Application Framework (SAF), входящего в Java 7. Вот как пишет об этом в своем блоге Александр Поточкин:
После продолжительных дискуссий стало очевидно, что Swing Application Framework API в том виде, в каком он есть сейчас, не удовлетворяет требованиям, и мы осознаем, что наша работа над ним еще не окончена. Начиная с того момента, как SAF API было добавлено в пятое обновление JDK7, мы поняли что вернуть все как было невозможно, нам пришлось в итоге убрать SAF из всех версий JDK 7.

В 5 версию, в соответствии с планом, вовремя было добавлено всего два новых компонента: это криптосистема на основе эллиптических кривых и Swing JXLayer. В результате этого, Sun пришлось объединить 5 и 6 обновления, передвинув срок сдачи 5 обновления до 29 октября. Только после этого пятое обновление стало полным, включив в себя новый функционал из Project Coin, JXDatePicker для Swing, а так же обновления, связанные с JAXP, JAXB и JAX-WS API, которые дополнили группу Java XML технологий, сделав их более устойчивыми. Следуя плану обновлений, с конца октября Sun планирует выпустить еще 14 версий, закончив работу над ними к февралю 2010.
С того момента как Поточкин сделал свое заявление, было развернуто как минимум две ветки проекта (BSAF, SAFF). Вот как выразил свое мнение по этому поводу Джонатан Гиллз (Jonathan Giles) в своем блоге:
От оригинального проекта SAF, требования о помощи которого так и не были услышаны (по крайне мере со стороны Sun не было видно каких-то видимых действий), мы пришли к двум новым разработкам. Конечно, если бы мы могли вернуть время вспять, на тот этап когда JSR-296 было только включено в JDK 7, мы могли бы этого не сделать, но время было упущено и идея оказалась загубленной, так что нам, видимо, придется ждать JDK 8, прежде чем Swing framework будет включен в выпуск.

Позднее Гиллз отправил письмо в рассылку SAF, в котором предлагал сделать выбор между двумя ветками проекта, и, прекратив разработку одной, полностью сосредоточиться на второй.
Принимая во внимание мнение разработчиков, нам следует выбрать одну из веток и назвать ее SAF.next. Разработку же второй следует немедленно прекратить, дабы в будущем не возникло никаких конфликтов.

Поточкин также рассказал InfoQ, что другое очень ожидаемое нововведение, а именно поддержка CSS для компонент Swing, которое могло бы войти в 5 обновление, в дальнейшем не появится в Java 7. Данный функционал включен в JavaFX, а Этан Николас (Ethan Nicholas) создал более чем тщательно разработанный прототип для Swing, о чем он написал в своем блоге летом 2008. Он также написал руководство и код, которые доступны для скачивания с вебсайта проекта.

UPD: перенесено в блог JAVA
+24
5 октября 2009, 19:45
3

комментарии (59)

–11
MarkNeumann #
этого следовало ожидать — java уходит с десктопа потихоньку, к сожалению.
+3
Tirion #
Почему же? А как же SWT?
Да и к тому же JavaFX гораздо перспективнее Swing'a выглядит, в том числе и на десктопах.
0
DZhon #
SWT отходит немного от идеологии кроссплатформенности и управляемого кода.
–1
Leonov #
+1, кроме того я очень редко, да практически два раза за 10 лет в нише, работал с эклипсовскими фичами. В продакшн их боятся вставлять.
0
joedm #
А ничего, что, например, даже новый JBuilder основан на Eclipse? :-)
Я к тому, что Eclipse-based приложения вовсю шагают по планете ;-) И совешенно непонятно, почему это вдруг надо «бояться вставлять в продакшн»?
0
joedm #
В чём это, по Вашему, выражается, уточните?
0
DZhon #
en.wikipedia.org/wiki/Standard_Widget_Toolkit

«SWT widgets, unlike almost any other Java toolkit, requires manual object deallocation, as opposed to the standard Java practice of automatic garbage collection. SWT objects must be explicitly deallocated using the ».dispose()" function, which is analogous to the C language's «free».[14] If this is not done, memory leaks or other unintended behavior may result."

«SWT is written in Java. To display GUI elements, the SWT implementation accesses the native GUI libraries of the operating system using JNI (Java Native Interface) in a manner that is similar to those programs written using operating system-specific APIs. Programs that call SWT are portable, but the implementation of the toolkit, despite the fact that it is written in Java, is unique for each platform.»
0
joedm #
С первым ещё как-то соглашусь, а вот со вторым — нет: Swing тоже имеет native часть.
0
culvert #
Самое большое отличие Swing'a и SWT в том, что SWT более тонко интегрируется в OS, соответственно тут вы получаете некоторые плюсы в частности интерфейс выглядит в едином стиле с OS, в винде все кнопки и свойства окон будут вточь вточь такие же. Минусы этого подхода в том, что надо сохранить платформо-независимость. А это значит, что нельзя давать доступ к примеру winapi циклу, т.к. под тем же юниксом, другие принципы отрисовки интерфейсов.(в частности нельзя удалить элетемент, без пересоздания окна, или встанить новый элемент, все должно быть сделано до отрисовки окна). ИМХО подход SWT более жизнеспособный, но зато возникают проблемы с платформенно-независимостью(для разработчиков библиотеки).
Ну и согласитесь, Swing выглядит весьма убого, с учетом, что многие уже давно сидят в винде на Aero, и даже look and feel библиотеки не сильно тут помогают. Плюс недавно вышел новый стандарт OsGi bundle.
+6
sdmitry #
Нынешних возможностей Java уже вполне достаточно для создания десктопных приложений разной степени наворочености, нужно лишь уметь готовить. Как показывет практика работы в коммерческом проекте с функционально богатой десктопной частью, тянущегося еще с ранних версий Java, вполне посильная задача придать приложению самый современный вид пользуясь богатыми наработками open-source сообщества без необходимости переписывать весь интерфейс на корню. Могут ли этим похвастаться приложения на других языках которые начинали писать лет 5 назад, а то и больше? Принципы, изначально заложенные в swing, дают очень широкие возможности разработчикам сторонних библиотек, даже без поддержки Sun/Oracle.
0
zeroed #
Кстати, IDEA на Swing написана, может знаете?
0
sdmitry #
Знаю, и NetBeans тоже. Но это только подтверждает мои слова, к чему ваша тональность?
+1
zeroed #
Какая тональность? Это был вопрос.

И так как ответ утвердительный, то я хотел сказать что это подтверждает ваши слова.

Везде бы вам негатив увидеть.
0
MarkNeumann #
да-да, я помню как такие же говорили лет 10 назад мне, что винт на 40 гигов мне хватит навечно и заполнить будет нечем. Любой продукт в IT сфере, не развиваясь, быстро устаревает. Винформс вот тоже устарели, хотя их и развивают, жить им уже не так долго.
0
sdmitry #
Разумеется не развиваясь устаревает, я не спорю, но ведь я о том, что околосвинговая флора успешно развивается, а судьба одного проекта не показательна еще, истерия топика искусственна. С WinForms я бы не сравнивал, от него изначально Delphi VCL веяло, совсем другие принципы, и судьба последнего уже кажется ясна…
0
MarkNeumann #
ну почему сразу истерия, уход в веб это не так уж плохо. Когда состоится сделка с ораклом, судьба десктопной платформы будет точно известна уже (а ораклу десктоп нафиг не нужен:). JavaFX, кстати, тоже как слабо развивается. А вот JavaEE развивать явно будут.
ps винформс это к тому, что устаревае все со временем. Опенсорсное сообщество не вытянет развитие десктопной платформы без санок. (свит не в счет)
0
Q2W #
QtJambi рулит =)
0
some_x #
Его ж прикрыли?
0
Q2W #
Его не прикрыли, а оставили только open source версию.
+1
Gorthauer87 #
Да декстопе джавы не так уж и много кстати. В основном это или IDE или какие то специализированые приложения типа CADов или навроде Матлаба. Основная её ниша это Enterprise системы.
0
kai #
Кто-бы сомневался. На GUI реализованное средствами java без слез не взглянешь. Оно быть может и функционально. Но пользоваться им можно только там, где нужна функциональность и можно не обращать внимание на внешний вид и интеграцию в ОС. Кстати, Eclips весьма радует в этом смысле, но он вроде для каждой ОС юзает нативные библиотеки?

Я кагбы без наездов, я так это вижу.
0
Drevlyanin #
Используйте подходящий Look and Feel (Например, Quaqua: www.randelshofer.ch/quaqua) и всё будет красиво.
0
xaerom #
Ну не знаю, на любой платформе путает ненативный интерфейс
–2
olegchir #
это ужасно.
–3
Gospodin #
Они убили Swing!
+2
AnatolyB #
> Sun прекратило работу над Swing Application Framework

Вы ничего не путаете? По указанной ссылке не увидел чего-то то было бы воспринято как:

> я прочитал новость, означающую его смерть
+24
apple_fan #
Вот так вот получаются сенсации для новостей…

Swing Application Framework — это не Swing. SAF является надстройкой над Swing, позволяющей делать некоторые вещи несколько проще. Например, указывать параметры компонентов в property-файле, объявлять команды (actions) аннотированием метода и т. п.
Далеко не все Swing-приложения используют этот фреймворк.

Swing, в свою очередь, вполне жив и пока умирать не собирается.
–12
mythmaker #
Ну на мой взгляд, текущее его состояние сложно назвать жизнью, это больше похоже на существование.
+3
apple_fan #
Я не хочу вступать с Вами в дискуссию на тему Swing rokzz/Swing suxx.

Однако, было бы здорово, если бы Вы либо убрали фразу "[...] новость, означающую его смерть", либо эту фразу обосновали.
+1
mythmaker #
Да, согласен, я погорячился с высказыванием. Исправил на более нейтральное.
+1
AnatolyB #
Поясните все же, откуда взялось утверждение «Sun прекратило работу над Swing Application Framework»?
0
mythmaker #
Оно прекратило над ним работу, в том виде как это осуществлялось и планировалось. Многое будет переработано. И вряд ли это можно будет считать первозданным SAF.
0
AnatolyB #
По-моему, «прекратило над ним работу, в том виде как это осуществлялось и планировалось» и просто «прекратило над ним работу» — это совершенно разные вещи.
0
mythmaker #
Готов изменить название на дословный перевод, если это всех будет устраивать.
0
AnatolyB #
Заголовок оригинальной статьи «Sun исключила SAF из Java 7» с припиской «из-за его недоработок» намного точнее отражает суть.
0
mythmaker #
Спасибо, я исправил. Несколько импульсивное название было вызвано большими ожиданиями от SAF, а тут такие новости. Неприятно.
0
olegchir #
А через сколько веков будет Java 8? Это как смерть для массового использования.
0
Scala #
Версии выходят раз в 3 года среднем. SAF вовсе не та фича, которая не может развиваться за пределами JDK.
0
olegchir #
Ох, уже прочтал. Я думал, что в SAF входит и сам SWING. Волосы на голове зашевелились, бросился писать разработчикам «какого черта происходит!1111». Потом оказалось что зря дергался.

Если пошла такая пьянка, то еще у нас есть Spring…
0
zeroed #
Ну так примерно такое же с AWT случилось, в результате чего и появился Swing. Может и здесь чего хорошего придумают.
+3
dive #
интриги, скандалы, расследования.
тут уже были одни с заголовком «java стала платной» по поводу коммерческой поддержки G1. кричали упорно, пока Sun сама не сказала обратного.
теперь вот Swing похоронили.
внимательнее надо быть, товарищ (:
+3
dive #
оу. не обратил внимание на ник mythmaker. показать то, что скрыто (:
0
Xternal #
*опять придирки к названию*
Как-то не ложится на душу «Sun убрало».
–1
mythmaker #
готов выслушать предложения по названию.
0
Scala #
Нельзя делать выводы, что Sun забили на Swing — а как же NetBeans Platform? Да и при работе над JavaFX было множество улучшений для платформы сделано.

Что касается Java GUI — то тут кроме Eclipse RCP стоит отметить ещё Griffon.
0
Throwable #
Блин, ну не надо так-то пугать! Куда Java без Swing-a? Как NetBeans без него будет работать? А тысячи апликаций и аплетов? Swing Application Framework — это отдельный проект из инкубатора, который предоставляет некоторые шаблоны для создания декстопной апликации. Swing никто не собирается убирать. Тот же JavaFX использует под собой Java2D/Swing. И вообще без Swing Java остается без GUI (разве что бедный AWT)

Вместе с тем, направление Swing довольно бесперспективное. Различные сторонние библиотеки виджетов (напр. QT) уже превзошли по скорости, функционалу и простоте использования. Swing наполовину дохлый. Но убрать его никто не собирается.
0
Dmitry_f #
Случаем не подскажите — порт QT на Java и правда работает быстрее swing?

Просто развиваю хороший проект на swing, это для меня довольно критично.
А вообще, если грамотно продумать интерфейс и работу, то медленности можно психологически свести к минимуму. Просто надо реализовать так, чтобы программа делала вычисления в моменты пользовательской неактивности.
Например, критично, когда после клика на кнопке прога подвисает дольше пол-секунды (создание нового окошка с уймой компонентов, и т.п.)
Но если подгрузить нужное заранее, и по клику лишь вывести графически, то создается иллюзия скорости.
0
Gorthauer87 #
Nokia прекратила официальную разработку Qt-Jambi, так как бросила силы на более перспективные разработки, и отдала его на откуп сообществу, поэтому лучше или полностью на Qt перейти, который по понятным причинам быстрее любого джавовского UI и при этом нативен в каждой из систем или остаться полностью на джаве. А вот гибрид как то не очень жизнеспособен оказался.
Кстати этот же рецепт годится для любого графического фреймворка, кеширование творит чудеса
0
Q2W #
Тот факт, что QtJambi отныне будет развивать только сообщество ещё не убивает сам QtJambi. Так что он ещё жив.

> А вот гибрид как то не очень жизнеспособен оказался.
Вот в этом месте по подробнее, плиз, если речь не только о том, что не-open source версию QtJambi закрыли.
0
Gorthauer87 #
Ну в общем то о том самом :) Ибо я на яве не пишу, а пользуюсь самым что ни на есть родным для Qt C++
Ну а ежели сообщество справится, то отлично, но может и так выйти что Джамби будет потихоньку умирать, отставая от мейнстрима все сильнее и сильнее. Посмотрите например на то, что творится в QtD, идеи хорошие, а вот не поспевают.
0
Dmitry_f #
Если вы про QT на C++, то по понятным причинам быстрее.
А если порт QT на java — не совсем ясно, почему.
Если можно, поподробнее? Другая архитектура?
0
Gorthauer87 #
Ну ясно дело, что Qt будет рисовать с одной скоростью виджеты, будь то родная C++ прога или любой из биндингов
0
Dmitry_f #
Так может qt на java-машине будет по скорости даже медленнее swing?
Будь порт swing на C++, думаю, может он бы мог сравниться по скорости с QT
0
Gorthauer87 #
Если бы я знал, как там все взаимодействует ответил бы на вопрос, а я только примерно представляю, как Qt это дело рисует, там есть бэкенды, так называемые графические системы и при переносе на новую платформу пишется бэкенд под неё, а после дергается родной для платформы движек стилей. В джаве с этим проблематично, она идеологически не слишком приемлет нативные вызовы
0
Throwable #
Зацените сами:
dist.trolltech.com/developer/download/webstart/index.html

Мои проекты тоже на Swing вертятся. Скорость вроде бы удовлетворительная.
0
Scala #
На маке не запускается, например. Да и Cocoa-Java & Qt Jambi официально слили — для нативных контролов есть SWT. Будущее Swing во многом зависит от Oracle и его решении о сохранении и развитии десктопного направления: Netbeans/JavaFX.
0
Drevlyanin #
Мышки на сыре порадовали. :-)
+1
sgolubev #
Мммде, слышу звон да не знаю где он…
0
Sauron #
Никто на свинг не забивал.

openjdk.java.net/projects/jdk7/features/
Nimbus look-and-feel for Swing — A next-generation cross-platform look-and-feel for Swing.
Swing updates — Small additions to the Swing API including the JXLayer component decorator, JXDatePicker, and possibly CSS-based styling.

Фреймворка не будет… пока. Но некоторые апдейты всёже будут. Плюс Нимбус — клёвый look'n'feel.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.