В настоящее время я много работаю с ActionScript 3.0, я также люблю программировать на Java. Подходит ли мне JavaFX? Каково общее впечатление от JavaFX, станет ли он мощным предприятием или пойдет по тому же пути, что и Java-апплеты? Могут ли дизайнеры, с которыми я работаю, освоиться с JavaFX в той же мере, в какой они знакомы с ActionScript и JavaScript?
Что вы думаете о JavaFX?
Ответы (10)
Просто хотел добавить свои 0,02 доллара ... Последние 4 дня я работал с JavaFX над своим первым небольшим побочным проектом, использующим его. В качестве некоторого опыта я профессионально занимаюсь программированием около 9 лет, начиная с C, и последние 6 лет занимаюсь Java и C # /. NET.
ИМО, JavaFX расстраивает больше, чем должно быть. Вот некоторые нарекания:
Синтаксис временами просто странный. Он мог бы быть больше похож на Java, поскольку его Java FX. Но синтаксис - это непростой переход от Java.
На самом деле имеет значение порядок элементов в файле .fx, что означает, что вы сталкиваетесь с глупыми ошибками циклической ссылки и проблемами типа «о, вы еще не можете использовать эту переменную, потому что она не была инициализирована». компилятор должен справиться с легкостью, но этого не происходит.
Случайные вещи просто не работают. Действия / события в элементах управления Swing не всегда работают, например, onKeyPressed / Release SwingSliderBar, похоже, не вызывается.
Обработка ошибок - это просто плохо. Если возникает исключение, которое не обрабатывается, нет реального способа сообщить об этом, кроме консоли 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 просто не режет его ... это определенно не то, что я считаю "готовым к производству".
Громкое «Мех».
Когда я посмотрел на него год назад, у них был инструмент одностороннего преобразования SVG в JavaFx. Отлично, так что вы можете один раз создать свой визуальный контент, разметить его с помощью большого количества действий, а затем в следующий раз, когда вы захотите, чтобы он выглядел хорошо, что тогда?
Если вы посмотрите это руководство, вы сможете понимаете, что я имею в виду. Мы рисуем вещи, перетаскивая фигуры из палитры в исходный код. OMGWTF. Я не показываю это своему графическому отделу.
Надеюсь, я ошибаюсь насчет JavaFx, но не думаю, что они это понимают. Пожалуйста, разве кто-нибудь в Sun не предоставит нам презентационный слой, щупальца которого не переплетаются неразрывно с кодом?
Я оставил свою последнюю работу, чтобы перейти от разработки 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, но это довольно крутые штуки, так что вам, возможно, действительно понравится.
Несмотря на то, что он кажется довольно мощным с точки зрения возможностей, я не могу не сказать о JavaFX из-за его структуры и реализации. Это похоже на вялую попытку попасть на рынок Flash / Silverlight. Слишком уж загадочно.
Я бы поспорил за то, чтобы пойти по пути Silverlight 2, но я в первую очередь разработчик C #, поэтому я немного предвзято. Если вам не нравится этот маршрут по какой-либо причине, но вы все же хотите более богатый UX для ваших пользователей, я бы посоветовал Flex; мне он кажется намного лучше организованным, чем JavaFX.
Всего два цента за эту тему.
Если вы знаете Java, но хотите делать то, что, по вашему мнению, возможно только во Flash, тогда да, JavaFX вам подойдет.
Без сомнения, будет намного проще объединить ваши знания Java с дизайном.
И я верю, что инструменты станут только лучше, что упростит их использование.
Если вы не работаете над внутренним приложением, я бы не стал его использовать. Пользователи обычно не хотят иметь дело с другой программой, которая выполняет те же функции, что и Flash. Я не думаю, что его установочная база еще достаточно велика, чтобы сделать его удобным для конечных пользователей.
Я занимаюсь разработкой 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).
Я провел выходные, играя с ним. Ничего полезного в этом не вижу. Это итерация Swing / awt. Я думаю, это будет хорошо для мобильных устройств, но кроме этого ничего полезного.
В идеале я бы хотел использовать флеш-память, но мне сложно интегрировать с серверной частью любого типа.
Что ж, синтаксис как ActionScript, так и JavaFX, похоже, имеет много общего, так что, возможно, «Да».
В данный момент я изучаю сценарий JavaFX, и он мне действительно нравится. Но что мне не нравится, и, возможно, это самый большой недостаток, так это ужасная документация, которая часто не актуальна или неполна.
Я работаю над приложением JavaFX уже несколько месяцев. Лично я люблю язык. Мне показалось, что они приняли очень разумные решения при выборе синтаксиса и языковых конструкций (я могу утомить вас списком, если хотите). Я программирую на нем уже несколько месяцев, и он кажется очень эффективным и даже приятным для программирования.
Я думаю, что сейчас его лучше всего использовать для настольных приложений и / или приложений, развертываемых через веб-запуск. На настольном компьютере он имеет богатый набор функций и по-прежнему может использовать другие функции Swing и остальной части Java. Насколько я знаю, апплеты все еще работают медленно в некоторых системах, а без поддержки Android мобильные возможности не являются функциями. Поддержка апплетов / мобильных / ТВ / веб-приложений кажется мне скорее бонусом для разработчиков настольных компьютеров, чем ключевыми функциями, которые заставят вас использовать эту технологию.
Так что на самом деле все зависит от того, для чего вы планируете его использовать. Если вы создаете настольные приложения, которые хотите запускать на виртуальной машине Java, которые могут использовать простые мультимедиа и элементы управления с богатым пользовательским интерфейсом, то я думаю, что есть веские причины обратить внимание на этот язык. WebStart немного улучшился и стал хорошим инструментом для развертывания. Если вы хотите создавать веб-приложения, это может быть интересно, но сейчас я бы сказал, что HTML5 / ajax более актуальны (в этом случае вы можете посмотреть на ZK). Однако даже с HTML5 у ajax есть свои ограничения, и если вы столкнетесь с ними, JavaFX может предложить вам варианты. Для мобильных платформ это не будет актуально, пока не появится стабильная поддержка Android - в этом случае я бы пока остановился на самой платформе Android.