Amino — новый UI toolkit для десктопных Java приложений

http://weblogs.java.net/blog/joshy/archive/2010/10/09/announcing-amino-new-ui-toolkit-desktop-java
  • Перевод
image
Хочу представить вам Amino — графическую библиотеку и очень классный UI toolkit. Изначально библиотека разрабатывалась Leonardo Sketch как вспомогательная, но теперь становится самостоятельным продуктом. Сейчас Amino находится в состоянии ранней alpha-версии и является 100% open source Java библиотекой, которая обладает следующими преимуществами:

  • 2D/3D сценография на различных движках (Java2D, JOGL и многие другие);
  • множественные UI контролы, синование с помощью CSS;
  • разнообразные утилиты, для ускорения процесса разработки;
  • протестирован до мелочей;
  • является 100% бесплатной (BSD);
  • 100% Java, готова к использованию на различных можно использовать в разных языках, портированных под JVM (Groovy, JRuby, Jython, JavaScript, JavaFX Script и так далее)


Кому нет терпится начать, могут прочитатьgetting started, который покажет как сделать совершенно базовое приложение. Swing-разработчикам Amino покажется достаточно очевидным, но важно учесть определенные отличия:

  • Вместо слушателей (listeners) используется шина сообщений (event bus), то есть грубо говоря слушатели все равно есть, но вместо того, чтобы цепляться к каждому компоненту, цепляются все к шине сообщений, что позволяет лучше отделить модель от отображения
  • Доступен background task API, для работы с многопоточностью
  • Совмещение различных режимов сценографии в paint APIs, позволяет работать на удобно уровне абстракции.
  • Look & Feel нету. Все скинование происходит за счет CSS 3, либо же используется стандартный L&F.
  • При использовании JOGL в качестве backend можно смешивать 2D графику с кодом OpenGL.
  • По аналогии с JavaScript всем контролам можно задать id, чтобы потом к ним обращаться напрямую.
  • В Amino создан инструмент под названием AppBundler, который генерит бандлы .app для Mac OSX, по аналогии с JNLP. В конце концов, пользователю должно быть глубоко все равно, на чем написано приложение. Оно ему должно тупо нравится.

В чем отличие Amino от JavaFX и других UI платформ



Amino не является чем-то таким инновационным. Наоборот, Amino вобрало в себя лучшие идеи за последние 20 лет, которые проявлялись в различных тулкитах. Было выбрано лучшее, а любые отрицательные моменты либо улучшены, либо они были каким-то образом выкинуты.

Главное влияние на Amino было оказано JavaFX и Swing. На конференцииt JavaOne 2010 компания Oracle рассказала, что JavaFX 2.0 будет идти по пути с Java, что делает JavaFX еще более похожим на Amino. Но несмотря на все сходства, есть и несколько различий:

  • Amino распространяется по лицензией BSD и разрабатывается сообществом, что позволяет делать вещи недоступные с JavaFX, которым владеет Oracle. Например, подмена каких-либо классов, such as: subsetting, поставка в рамках вашего приложения, создание удобных для вас версий и так далее.
  • Amino сфокусировано на десктопных приложениях. JavaFX на вэбе и мобильных приложениях, наподобие Flex и Sliverlight.
  • Amino значительно более легковесна чем JavaFX. Перед создателями стоит задача сделать его быстрым, легким в изучении, и очень, очень незаметным, что конечно скажется в трудностях с обратной совместимость и количеством фишек.
  • Amino подключается к Swing панелям, так что можно будет понемногу добавлять компоненты Amino в имеющиеся приложения.

Что ждут от конечных разработчиков



Amino находится в ранней alpha-версии и все четко понимают что это значит. Устремления конечно великие, но пока что мы имеем медленный, убогий и глючный релиз. Так что первая задача перед конечными пользователями тулкита — это поиск имеющихся багов, так что вперед на сайт за последней версией. Если вам интересен этот проект, то есть следующий фронт задач:

  • Работа с событиями — нужна новая реализация, так как текущая очень медленная и, скорее всего, имеет проблемы с утечкой памяти.
  • Управление сценой — текущая версия очень минималистична и позволяет работать только с элементарными вещами.
  • Поддержка Maven — сейчас в проекте его нет совсем, однако большое количество разработчиков его используют. Было бы здорово, если со временем Amino появится в репозиториях Maven .
  • Парсер CSS — его надо дописать, чтобы он обрабатывал все свойства и делал это правильно
  • Installers: сейчас AppBundler поддерживает JNLPs and Mac OSX .app. Мы бы хотели сделать поддержку MSI и скриптов под Linux, так что нужны разработчики, которые с этим работали.
  • Нужно больше контролов: не хватает таких вещей как меню панели задач, полей поиска, диаграмм и прочего.

Ссылки по теме:
Поделиться публикацией

Комментарии 43

    +14
    Добавьте скриншоты, то, что по ссылке в туторе — жуть какая-то, tk без tile примерно так же выглядит
      –2
      Чего не нашел, того не нашел.
        +5
        Если вы про него пишете, то, уж наверное, попробовали и могли бы свои скрины сделать.
      +1
      Некорректно переведен пункт про слушателей, в оригинале:

      Uses an event bus instead of listeners on each component, enabling better separation of model and view

      То есть грубо говоря слушатели там все равно есть, но вместо того, чтобы цепляться к каждому компоненту, цепляются все к шине сообщений, что позволяет лучше отделить модель от отображения
        +1
        Спасибо, внес изменения.
          +1
          вот если бы они реализовали это аналогично RoutedEvent (Bubble, Tunnel) в WPF, это было бы действительно круто
            0
            Значит ли это, что каждый обработчик проверяется (нужно его вызвать или нет) при каждом событии? Это ведь очень не эффективно.
              0
              Ну, как они пишут у себя в вики, шина событий сейчас работает очень неэффективно и нуждается в переработке.
            0
            Как бы известный одноименный производитель IP-STB название не отсудил…
              +2
              Жду плагина для NetBeans
                +5
                «готова к использованию на различных JVM (Groovy, JRuby, Jython, Javascript, JavaFX script и так далее)»

                а что за различная JVM — «Javascript»?
                +3
                ---100% Java, готова к использованию на различных JVM (Groovy, JRuby, Jython, Javascript, JavaFX script и так ---далее)

                Это не JVM. Нет такого понятия как Groovy JVM. Вы хотели сказать — можно использовать в разных языках, портированных под JVM?
                  +1
                  именно
                  +2
                  Хочется чтобы у них всё получилось.
                  Swing уже устарел, а JavaFX появился мертворожденным.
                    0
                    JavaFX 2.0 обещали исправиться.
                    +1
                    На оф сайие хабраэфект?
                      0
                      похоже
                      0
                      А чем он лучше SWT? (java newbie)
                        +1
                        SWT платформозависима, т.к. являтся оберткой над нативными графическими библиотеками
                          0
                          это так сложно — таскать за собой одну dll/so? :)
                          • НЛО прилетело и опубликовало эту надпись здесь
                              0
                              согласен. Но в итоге все же зависит от конечных целей, если нужны только linux, macos и win, то swt предоставляет отличный нативный интерфейс. А если нужны экзотические платформы/веб — тогда да, надо думать :)
                                0
                                К чёрту идеологию. Хочется, чтобы приложения смотрелись «как родные» там, где используются. Это серьёзная проблема, я считаю. И этот новый ui toolkit её не решает, тогда уже лучше swing. Зачем нам столько разных «лиц» для оконных приложений на java?
                                • НЛО прилетело и опубликовало эту надпись здесь
                                    0
                                    java это скорость разработки, гибкость и, все-таки, относительная платформонезависимость (таскать за собой одну dll/so, как сказали выше — не проблема). Разработка десктопных приложения — задача вполне для java (не только же серверные приложения писать).
                                    • НЛО прилетело и опубликовало эту надпись здесь
                          –1
                          черепаха в логотипе неудачна. как бы намекает
                            –5
                            > пока что мы имеем медленный, убогий и глючный релиз

                            holywar {
                            да такое о любом java-приложении можно сказать!
                            }
                              +1
                              Зачем изобретать собственный велосипед (для опыта?), когда давно уже есть, например, Eclipse RCP?
                                0
                                Кстати, а что со Swing?
                                В NetBeans при создании нового проекта, приложение пишет, что разработка больше не ведется, и в JDK7 включен он не будет.
                                  0
                                  SWING жив и здоров, насколько может быть жив и здоров UI toolkit для языка, на котором в основном серверные приложения пишут. Нсколько я знаю, свернули разработку Swing application framework, а это не сам свинг, а его надстройка.
                                  +18
                                  сложно придумать что-то круче, чем статью про UI без скриншотов))
                                    +6
                                    Скриншоты вырезаны ради душевного спокойствия читателей :)
                                    +5
                                    выглядит нативно на всех платформах? Если нет — в утиль.
                                      0
                                      Лично у меня все наоборот. Выглядит всегда нативно — в утиль ибо есть SWT. Лучше всего иметь систему Look&Feel в которой есть как стили не отличимые от нативных, так и отдельные независимые стили.
                                        +1
                                        кому как конечно, но я никогда не пойму разработчиков, пишущих разноцветные приложения с собственными темами
                                          +1
                                          В таких случаях на много легче переключаться между операционными системами — приложение всегда выглядит одинаково (я в последнее время регулярно использую винду, мак и линукс). Другая область применения — игры. В них никто нативными контролами не пользуется. Еще одно применение — создание своих контролов, у которых нет нативных аналогов. В eclipse например их больше чем обычных и никто не жалуется.
                                        0
                                        а я вот для себя заметил, что Nimbus нравится пользователям гораздо больше нативного L&F
                                        0
                                        «Наоборот, Amino вобрало в себя лучшие идеи за последние 20 лет, которые проявлялись в различных тулкитах. Было выбрано лучшее, а любые отрицательные моменты либо улучшены, либо они были каким-то образом выкинуты.»

                                        — «Amino находится в ранней alpha-версии и все четко понимают что это значит. Устремления конечно великие, но пока что мы имеем медленный, убогий и глючный релиз.»

                                        WTF?
                                          +1
                                          Первое — это то, что они запланировали. Второе — то, что имеют =)
                                          –1
                                          блин, столько комментариев а ссылок на скриншоты так и нет :)

                                          и потом:
                                          «Было выбрано лучшее, а любые отрицательные моменты либо улучшены, либо они были каким-то образом выкинуты.»

                                          через абзац
                                          «Amino находится в ранней alpha-версии и все четко понимают что это значит. Устремления конечно великие, но пока что мы имеем медленный, убогий и глючный релиз.»

                                          где логика?
                                            0
                                            leonardosketch.org/features/

                                            ROADMAP:



                                            R4:
                                            * sharks with laserbeams
                                            * world domination



                                            Акулы с лазерами
                                            Мировое господство

                                            :D

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

                                            Самое читаемое