Есть ли будущее у JavaFX? (перевод)

Оригинал статьи - "JavaFX… does it have a future?".

Не знаю, бывало ли еще когда-нибудь, чтобы технология получила столько упреков, сколько получила их JavaFX на прошлой неделе (здесь, здесь и здесь). JavaFX стала технологией, которую уже просто модно ненавидеть. Это как бельмо в глазу, для разработчиков.

JavaFX была впервые представлена на JavaOne 2007 (три года назад). Многие предсказывали ей смерть еще до того, как вышла ее версия 1.0 в декабре 2008 г. и многие продолжают предсказывать ей это и сейчас.

Прошлая неделя была ознаменована двумя событиями - моим представлением JavaFX масштаба предприятия (Enterprise JavaFX) для сообщества "Силиконовая долина разработчиков на JavaFX" (Silicon Valley JavaFX JUG), и петицией Стивена Чина (Steven Chin), чтобы JavaFX стала open source проектом.

Хочу, чтобы меня в точности поняли - JavaFX далека от совершенства, она имеет свои проблемы (см. ниже) и сейчас решается, есть ли у нее будущее. Давайте сначала посмотрим на ее положительные стороны.

Положительные стороны

JavaFX Script - это очень мощный язык. И в самом деле, это DSL (Domain Specific Language) для создания функционально насыщенных пользовательских интерфейсов, в которых приложение работает под управлением виртуальной Java-машины, на клиентской стороне. JavaFX Script вначале кажется непонятным (как и любой другой новый изучаемый язык программирования), но поработав с ним некоторое время, ощущаешь его мощь и простоту использования. Функция связывания (binding) в JavaFX - очень сильно упрощает разработку интерфейса пользователя (UI), ведь при этом все изменения модели отслеживаются автоматически. Я работаю с JSF (JavaServer Faces) со времени ее создания и могу вам сказать, что использование JavaFX Script для создания пользовательского интерфейса, возможно, даже проще, чем использование JSF. И на стороне JavaFX-приложений - вся мощь виртуальной машины Java, это позволяет нам строить достаточно функционально насыщенные и сложные клиентские приложения.

Отрицательные стороны

Как мантру, для жилищного строительства все твердят: район местоположения, район местоположения, район местоположения. Мантра же JavaFX: развертывание (deployment), развертывание, развертывание. К несчастью, это то, с чем у JavaFX дела обстоят очень плохо. Так было у оригинальных Java-апплетов, это же унаследовала от них и JavaFX (которая должна была стать следующей технологией апплетов или апплетами 2.0). Иными словами, ничего практически не изменилось с 1995 года. Я не понимаю, почему Oracle (ранее Sun) не решила эту проблему. Я знаю, что в Oracle есть очень умные люди, которые могли бы решить ее давно.

В большинстве случаев она выглядит примерно так - вы кликаете на ссылку для запуска JavaFX -приложения, тем самым оно запускается как апплет в браузере. Давайте предположим, что у вас уже установлен Java плагин. Браузер зависает примерно на 5 секунд. После 5 секунд, или около того, вы увидите внутри пунктирной окружности логотип Java. Пунктирный круг движется вокруг логотипа, как бы показывая процент загрузка апплета. Печально то, что это всего лишь анимированный GIF, который не показывает реальный прогресс загрузки. Почему так трудно показать процесс, сколько фактически уже загружено?

После этого все идет еще более "интересно". Если вам повезет, вы увидите довольно устрашающее предупреждение безопасности (нужно нажать "да"), после чего появится приложение. Если вам не повезет, вы будете продолжать видеть анимацию загрузки (с логотипом Java внутри), пока не закроете окно браузера. Ничто другого не произойдет. Не будет сообщения об ошибке. Не будет объяснения причины, почему апплет не был загружен. Ничего. Если вы захотите узнать, почему апплет не удалось загрузить, вам придется запустить Java-плагин в консоли и смотреть на исключения / ошибки. Запустить консоль не так то просто. Попробуйте объяснить процесс запуска ее - не-разработчику. Желаю удачи. Также нередки случаи, когда апплет, который работал секунду назад - на следующем запуске уже не работает, по неизвестным причинам.

То, что я описал выше - является основной причиной теперешнего состояния дел у JavaFX. Развертывание - самая настоящая катастрофа. Если Oracle нужно знать, как должно работать развертывание, то это очень легко. - Достаточно взглянуть на Flash. Сделать максимально простым и прозрачным, как работает Flash-приложения. Вот и все.

Потребуется ли учить новый язык?

Некоторые люди говорят, что им не нравится JavaFX потому, что им придется изучить новый язык. Ну, это больше только одни слова. Во-первых, любой приличный Java-разработчик сможет выучить JavaFX Script примерно за 2 дня. А во-вторых, никто не жалуется на то, что они должны выучить новый язык (или язык сценариев) при использовании Flex, или Ruby, или Scala, или даже JSF. Чтобы что-то новое узнать, всегда нужно что-то новое изучить. Сегодня, если вы  разработчик "широкого профиля", то вы должны постоянно учить что-то новое.

Что могло бы быть лучше

Посмотрите на любую крупную конференцию Java в течение последних двух лет, и вы увидите, что по крайней мере есть одна сессия, которая посвящена JavaFX. Судя по блогосфере и Twitter - сообщество JavaFX растет. Люди размещают примеры, создают пользовательские компоненты и пишут к ним руководства по CSS (наверное имеется в виду, что все подобные технологии обычно скинезуются посредством CSS, пользовательские компоненты в JavaFX - тоже. - прим. перев.). Сообщество разработчиков есть. Люди пытаются работать с JavaFX, но ни одна организация по настоящему ее не используют. Во время зимних Олимпийских игр 2010 в Ванкувере на основе JavaFX была разработана история наград, но я сомневаюсь, что ее многие сейчас вспомнят. Совсем недавно MLB.com разместила фантазийное приложение о бейсболе. Вот и все.

Аргумент, что в JavaFX нет средства, служащим мостом между дизайнером и разработчиком - является одним из самых важных.

Инструменты для JavaFX сейчас разрабатываются. NetBeans имеет JavaFX Composer  (визуальный инструмент для создания макета JavaFX приложений). Exadel (моя компания) работает над Exadel JavaFX плагин для Eclipse. Сейчас мы нацелены на создание наиболее мощного инструмента разработки для JavaFX. Кроме того, IntelliJ недавно объявил, что теперь предлагает поддержку JavaFX.

Тот факт, что в JavaFX отсутствуют многие стандартные элементы управления - также является веским аргументом. Новые и более технически продвинутые элементы управления на самом деле разрабатывается группой Oracle JavaFX. Но, кроме того, чтобы помочь сообществу строить компоненты сторонних производителей, JavaFX должна быть с открытым исходным кодом.

JavaFX масштаба предприятия

Корпоративные приложения, такие как мультимедийные и интерактивные панели (dashboards) и другие, функционально и графически насыщенные элементы пользовательского интерфейса - являются очень хорошими кандидатами для использования в JavaFX. На самом деле сейчас нет применения JavaFX масштаба предприятия. Adobe и ее сообщество проделали отличную работу, продемонстрировав, что Flex может быть использован для создания приложений реального предприятия. То же самое должно произойти и для JavaFX. Чтобы обеспечить проникновение JavaFX в корпоративный сегмент - Exadel создала фреймворк Flamingo. Flamingo позволяет подключить пользовательский интерфейс (UI), написанный на JavaFX - к back ends предприятий (к серверной стороне вопроса - прим. перев.), в виде Java EE, Spring, и Seam. Я лично пытался достучаться до Sun, а затем до Oracle, для совместной работы над корпоративными инструментами для JavaFX, но, как вы уже догадались, никакого ответа я не получил.

Будущее?

Еще есть время, чтобы технология JavaFX стала успешной, но это время уходит. Во-первых, как можно скорее решить вопрос с развертыванием (deployment). Просто начать с нуля, не пытаясь исправить текущий механизм развертывания. Во-вторых, Oracle-у необходимо прояснить свои планы по поводу JavaFX (возможно на JavaOne 2010?) Если Oracle не хочет или не нуждается в  JavaFX, тогда сделать open source, и пусть сообщество управляет этим в будущем. Я думаю, у Oracle есть 6-12 месяцев для того, чтобы попытаться возродить JavaFX. Если ничего не произойдет к тому времени (что составит около 4 лет с тех пор, как технология была объявлена) наверное путь к JavaFX будет закрыт.

Мои 2 копейки (Оригинал - "My 2 cents" - прим. перев. :) ).

Комментариев нет:

Отправить комментарий