Pull to refresh

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

Reading time 3 min
Views 3.5K
Original author: Josh Marinacci
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, так что нужны разработчики, которые с этим работали.
  • Нужно больше контролов: не хватает таких вещей как меню панели задач, полей поиска, диаграмм и прочего.

Ссылки по теме:
Tags:
Hubs:
+23
Comments 43
Comments Comments 43

Articles