Что вы думаете о JavaFX?

В настоящее время я много работаю с ActionScript 3.0, я также люблю программировать на Java. Подходит ли мне JavaFX? Каково общее впечатление от JavaFX, станет ли он мощным предприятием или пойдет по тому же пути, что и Java-апплеты? Могут ли дизайнеры, с которыми я работаю, освоиться с JavaFX в той же мере, в какой они знакомы с ActionScript и JavaScript?


person ForYourOwnGood    schedule 10.02.2009    source источник


Ответы (10)


Просто хотел добавить свои 0,02 доллара ... Последние 4 дня я работал с JavaFX над своим первым небольшим побочным проектом, использующим его. В качестве некоторого опыта я профессионально занимаюсь программированием около 9 лет, начиная с C, и последние 6 лет занимаюсь Java и C # /. NET.

ИМО, JavaFX расстраивает больше, чем должно быть. Вот некоторые нарекания:

  1. Синтаксис временами просто странный. Он мог бы быть больше похож на Java, поскольку его Java FX. Но синтаксис - это непростой переход от Java.

  2. На самом деле имеет значение порядок элементов в файле .fx, что означает, что вы сталкиваетесь с глупыми ошибками циклической ссылки и проблемами типа «о, вы еще не можете использовать эту переменную, потому что она не была инициализирована». компилятор должен справиться с легкостью, но этого не происходит.

  3. Случайные вещи просто не работают. Действия / события в элементах управления Swing не всегда работают, например, onKeyPressed / Release SwingSliderBar, похоже, не вызывается.

  4. Обработка ошибок - это просто плохо. Если возникает исключение, которое не обрабатывается, нет реального способа сообщить об этом, кроме консоли Java, и элементы пользовательского интерфейса начинают забавно реагировать. Например, создайте блок SwingText и привяжите его значение к переменной. Теперь попытка изменить значение в текстовом поле вызовет исключение, потому что вы не можете изменить связанную переменную. Однако в пользовательском интерфейсе в текстовом поле начинают происходить забавные вещи. некоторые символы окрашиваются только наполовину, иногда backspace ничего не делает, иногда удаляет символ, иногда вы можете нажать 2 клавиши на клавиатуре, например «1» и «2», и в текстовое поле будет введено «21» вместо «12» и т.д ...

Хотя сейчас моя абсолютная проблема №1 в разработке JavaFX - это Netbeans. В JFX это ужасно плохо. Невозможно отладить, ошибки отображаются неправильно в среде IDE (у меня есть пометки комментариев как ошибки!), Интеллект работает только в 40% случаев, даже если шаблоны кода, предварительно запрограммированные в среде IDE для элементов управления перетаскиванием, отсутствуют. т правильно. Я забыл, какой из них, но один из них оставляет символ "&" в конце вставленного кода, который никогда не является допустимым и всегда должен быть удален вручную ... это просто ужасно и недопустимо для такой компании, как Sun.

Еще одна проблема - общая документация. Его просто не хватает. Почему-то JavaFX API даже не занимает первое место в результатах поиска Google при поиске методов / классов. Тонны «примеров» в сети больше не работают, поскольку каждая версия имеет серьезные изменения рефакторинга, а классы удалены или переименованы.

В целом, я ставлю JFX 4 из 10. Я хочу, чтобы он понравился, но JFX 1.1 просто не режет его ... это определенно не то, что я считаю "готовым к производству".

person CodingWithSpike    schedule 05.04.2009
comment
+1 Синтаксис действительно странный. Хотя на первый взгляд кажется, что между Java и JavaFX много общего, есть много тонких различий. - person helpermethod; 07.03.2010
comment
Хотя синтаксис между Java и JavaFX различается ... совместимость действительно хорошая. Вызов Java из JavaFX - это фантастика ... а поскольку JavaFX - это многофункциональная технология на стороне клиента ... Java на самом деле не нуждается в вызове JavaFX. И, по моему скромному мнению ... JavaFX превосходит устаревший Java SWING для разработки графического интерфейса на стороне клиента. - person Eric Warriner; 31.08.2010

Громкое «Мех».

Когда я посмотрел на него год назад, у них был инструмент одностороннего преобразования SVG в JavaFx. Отлично, так что вы можете один раз создать свой визуальный контент, разметить его с помощью большого количества действий, а затем в следующий раз, когда вы захотите, чтобы он выглядел хорошо, что тогда?

Если вы посмотрите это руководство, вы сможете понимаете, что я имею в виду. Мы рисуем вещи, перетаскивая фигуры из палитры в исходный код. OMGWTF. Я не показываю это своему графическому отделу.

Надеюсь, я ошибаюсь насчет JavaFx, но не думаю, что они это понимают. Пожалуйста, разве кто-нибудь в Sun не предоставит нам презентационный слой, щупальца которого не переплетаются неразрывно с кодом?

person joeforker    schedule 10.02.2009
comment
Я согласен с твоей последней строкой. Хотя, честно говоря, в последнее время я думаю, что это касается Java в целом. - person Randolpho; 11.02.2009
comment
Вам следует взглянуть на Production Suite. В нем есть отличные инструменты для Photoshop и Ilustrator, а API загрузчика FXD позволяет довольно красиво отделить пользовательский интерфейс от логики. - person Honza; 18.02.2009
comment
Производственный пакет JavaFx выглядит интересно. Могу ли я сделать то же самое при использовании компонентов Swing в JavaFx? - person joeforker; 18.02.2009

Я оставил свою последнюю работу, чтобы перейти от разработки Java к .NET.

Для этого был ряд причин, но самая большая причина заключалась в том, что я устал от попыток создать программное обеспечение 1-го класса для пользовательского интерфейса с помощью Java и Swing. Прошло шесть лет, и я так рад, что ушел. Я не вижу причин полагать, что Sun наконец-то понимает разработку пользовательского интерфейса с помощью JavaFX.

Я убежден, что Microsoft наконец-то предоставляет нам платформу для создания полнофункциональных интерактивных приложений в браузере. Я говорю, что после создания коммерчески доступного программного обеспечения, которое было доставлено в виде подключаемого модуля Netscape 13 лет назад, за которым последовали элементы управления ActiveX и Java-апплеты, и что все эти платформы по той или иной причине не смогли стать повсеместными на предприятии.

Я понимаю, что Silverlight 2 все еще не хватает глубины и зрелости, но Microsoft продемонстрировала мне достаточно приверженности на этом этапе, и я верю, что через несколько коротких лет он станет доминирующей платформой RIA - по крайней мере, для проектов, требующих «настоящего» программирования. язык. Я уверен, что Flash et al. в ближайшее время не исчезнет, ​​но Flash не подходит для программного обеспечения, которое разрабатывает моя компания.

Для меня вишенкой на торте является тот факт, что я все еще смогу использовать Visual Studio, C # и большую часть моей текущей кодовой базы (основной движок, который полностью отделен от пользовательского интерфейса). Конечно, если вы используете ActionScript, это вам не поможет.

Еще один важный момент - это то, что у Silverlight и WPF так много общего. Наш план состоит в том, чтобы разделить большой объем реализации между версиями Silverlight и WPF нашего программного обеспечения. Это только вопрос времени, когда WPF станет стандартом для приложений Windows - я не знаю, пройдет ли это через пару лет или через десять лет, но, несомненно, это произойдет со временем. ИМО, возможность настроить таргетинг на самые популярные браузеры / ОС с Silverlight и Windows из одной и той же кодовой базы является огромным преимуществом.

Если вы знаете Java, то переход на C # - это несложно. И если вы не используете одну из хороших (не бесплатных) Java IDE, то даже бесплатные версии Visual Studio будут улучшением по сравнению с тем, к чему вы привыкли. Препятствием будет изучение нового способа работы с XAML, но это довольно крутые штуки, так что вам, возможно, действительно понравится.

person Joe Erickson    schedule 17.02.2009

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

Я бы поспорил за то, чтобы пойти по пути Silverlight 2, но я в первую очередь разработчик C #, поэтому я немного предвзято. Если вам не нравится этот маршрут по какой-либо причине, но вы все же хотите более богатый UX для ваших пользователей, я бы посоветовал Flex; мне он кажется намного лучше организованным, чем JavaFX.

Всего два цента за эту тему.

person Randolpho    schedule 10.02.2009

Если вы знаете Java, но хотите делать то, что, по вашему мнению, возможно только во Flash, тогда да, JavaFX вам подойдет.

Без сомнения, будет намного проще объединить ваши знания Java с дизайном.

И я верю, что инструменты станут только лучше, что упростит их использование.

person Mark Wilcox    schedule 10.02.2009

Если вы не работаете над внутренним приложением, я бы не стал его использовать. Пользователи обычно не хотят иметь дело с другой программой, которая выполняет те же функции, что и Flash. Я не думаю, что его установочная база еще достаточно велика, чтобы сделать его удобным для конечных пользователей.

person Jared    schedule 10.02.2009
comment
Может, им стоит придумать, как скомпилировать его в байт-код Flash. - person joeforker; 11.02.2009

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

Это один удар для Flash (без широкой мобильной поддержки).

Честно говоря, я был очень впечатлен JavaFX (в очень плохом смысле).

  • Документация неполная.
  • Сценарий просто ужасен; это странный гибрид JSON и R с чувством Java-дежавю.
  • Я потратил первые 3 дня на рисование полигонов и создание градиентов с помощью CODE ... WTF !!
  • Я пытался убедить свой графический отдел попробовать это, но они просто не понимают, как должен работать производственный пакет, они продолжают жаловаться, что скиннинг Flex намного проще и в конечном итоге выглядит лучше (что абсолютно верно).
  • «Поддержка CSS» - просто плохая шутка.
  • Обычно кажется посредственной попыткой предложить вариант для интерфейса RIA.

Я могу вспомнить только пару хороших моментов об этом:

  • Его можно запускать с IPhone / IPad и практически со всех мобильных устройств.
  • У вас есть доступ ко всему Java-коду, который вам нужен, и это здорово, учитывая ограничения ActionScript (отсутствие перегрузки, никаких частных конструкторов и т. Д.). Это отличная вещь для нас, программистов, но давайте вспомним на секунду, что это технология внешнего интерфейса / презентации ... это означает, что пользователям придется действительно увидеть эту вещь, поэтому, если она не выглядит хорошо и имеет классный анимации / эффекты они не копают.
  • Сценарий менее подробен, чем файлы MXML (за счет того, что он непонятен).
  • Говоря о производительности ... Flash Player - это огромная зеленая капля, которая продолжает расти и расти до тех пор, пока не останется ОЗУ по сравнению с тем, как работает JavaFX (JVM потрясающе! К сожалению, это не имеет ничего общего с фактическим API JavaFX, это просто JVM ... ну качает!).
  • В нем есть замечательная функция, с помощью которой вы можете перетащить апплет за пределы веб-браузера.

В конце концов, я счастлив, что у меня есть возможность стать мобильным, но это световые годы пути зрелости, достигнутой Flex / Flash в отношении приложений RIA. Будущее Flex / Flash как широко распространенной веб-технологии неясно (в конечном итоге он может использоваться только для надоедливых баннеров и онлайн-игр), никто не хочет полагаться на близкую технологию, как Flash Player, поэтому весь Интернет-сообщество стремится избавиться от Flash (поддержка видео HTML5, отсутствие Flash Player для устройств Apple и т. Д.). Так что попытка создать открытый всегда приветствуется, просто JavaFX ощущается как неполная поспешная бета-версия чего-то, что Sun считала своим долгом придумать на выходных во время тяжелого похмелья.

Надеюсь, это будет кому-то полезно (и оскорбительно для кого-то в Sun / Oracle = p).

person Chepech    schedule 09.04.2010

Я провел выходные, играя с ним. Ничего полезного в этом не вижу. Это итерация Swing / awt. Я думаю, это будет хорошо для мобильных устройств, но кроме этого ничего полезного.

В идеале я бы хотел использовать флеш-память, но мне сложно интегрировать с серверной частью любого типа.

person Steve    schedule 29.03.2009
comment
Это не только для программирования с графическим интерфейсом, это полноценный язык программирования / сценариев. Я думаю, что он очень хорошо решает многие уродливые вещи в Swing (например, шаблонный код слушателя действий). - person helpermethod; 22.01.2010

Что ж, синтаксис как ActionScript, так и JavaFX, похоже, имеет много общего, так что, возможно, «Да».

В данный момент я изучаю сценарий JavaFX, и он мне действительно нравится. Но что мне не нравится, и, возможно, это самый большой недостаток, так это ужасная документация, которая часто не актуальна или неполна.

person helpermethod    schedule 20.02.2010

Я работаю над приложением JavaFX уже несколько месяцев. Лично я люблю язык. Мне показалось, что они приняли очень разумные решения при выборе синтаксиса и языковых конструкций (я могу утомить вас списком, если хотите). Я программирую на нем уже несколько месяцев, и он кажется очень эффективным и даже приятным для программирования.

Я думаю, что сейчас его лучше всего использовать для настольных приложений и / или приложений, развертываемых через веб-запуск. На настольном компьютере он имеет богатый набор функций и по-прежнему может использовать другие функции Swing и остальной части Java. Насколько я знаю, апплеты все еще работают медленно в некоторых системах, а без поддержки Android мобильные возможности не являются функциями. Поддержка апплетов / мобильных / ТВ / веб-приложений кажется мне скорее бонусом для разработчиков настольных компьютеров, чем ключевыми функциями, которые заставят вас использовать эту технологию.

Так что на самом деле все зависит от того, для чего вы планируете его использовать. Если вы создаете настольные приложения, которые хотите запускать на виртуальной машине Java, которые могут использовать простые мультимедиа и элементы управления с богатым пользовательским интерфейсом, то я думаю, что есть веские причины обратить внимание на этот язык. WebStart немного улучшился и стал хорошим инструментом для развертывания. Если вы хотите создавать веб-приложения, это может быть интересно, но сейчас я бы сказал, что HTML5 / ajax более актуальны (в этом случае вы можете посмотреть на ZK). Однако даже с HTML5 у ajax есть свои ограничения, и если вы столкнетесь с ними, JavaFX может предложить вам варианты. Для мобильных платформ это не будет актуально, пока не появится стабильная поддержка Android - в этом случае я бы пока остановился на самой платформе Android.

person Praeus    schedule 17.08.2010