Любую технологию сложно осваивать если нет задачи, благо ВУЗ, всегда предлагает нам большой выбор несложных и часто бесполезных задач.
Организовал я группу ребят писать очередной курсач на JavaFX, результаты работы доступны на сайте http://otu.mabogdanov.ru
Что я могу сказать после этого про JavaFX?
- Писать на JavaFX приятней чем на Action Script 3. Работая после этого Java, мне постоянно хотелось после этого прибиндить что нибудь к чему нибудь. Механизм привязок влюбляет в себя сразу и навсегда. (Тригеры тоже ничего ;) )
- Элементы функциональности прекрасны, структуры типа
- Понятно что разделение декларативного описания интерфейса и логики приложения - это правильно, но не правильно что иногда разделив, их сложно заставить работать вместе. Такая проблема неизбежно когда используются два совершенно разных языка, например XML и ActionScript, XML и C#... JavaFX - уникальное решение, язык который очень удачно совмещает в себе декларативные и императивные черты.
- Как бы не прекрасен был механизм биндинга им надо пользоваться акуратно, первая моя программа на JavaFX работала медленно, ненадежно, в общем плохо. Для избежани таких пролем надо всегда четко представлять себе какие цепочки привязок заускаются в каждый момент, не происходит ли это в цикле, в критических по скорости местах. Иногда один лишний bind делает программу медленнее в десятки раз, вплоть до полного зависания
- До сих пор остается проблема с запуском на клиентских машинах. Во-первых к сожалению не у всех есть JRE, думаю с приходом BlueRay в массы эта ситуация поправится, а пока очень непросто уговорить пользователя скачать и поставить себе на компьютер нечто размером в 14 мегабайт. JavaFX аплеты не запускаются в браузере Opera, все еще непонятно что с Linux системами. Правда это ситуация постепенно исправляется - JavaFX 1.2 по утверждению создателей работает на Ubuntu и OpenSolaris. Java - она тем и славится что работает везде, и думаю что JavaFX очень скоро догонит своего старшего брата.
var values = for (varLine in vl where indexof varLine mod 2 == 0) {varLine.valueRange};
экономят кучу времени и кода