Интересный перевод. Я пробовал использовать JavaFX в несколько других целях. Изначально хотелось найти технологию, чтобы сделать обычное оконное приложение, но с HTML интерфейсом. Обратился к JavaFX, попробовал несколько примеров, а потом забросил.
Не знаю как на западном, но на российском рынке технология не востребована. На job.ru или rabota.ru не найти вакансии JavaFX программиста.
Я и не пробовал, если честно. :) Долгое время специализировался по ActionScript/Flash (сейчас - по Java), как-то не виделось в JavaFX хотя бы возможностей флеша, ну и чего тогда заморачиваться - все ждал, может допилят...
Вообще, если смотреть на недостатки апплетов, то я помимо вопросов развертки выделил бы проблему унылого подхода к интерфейсу. Я, конечно, понимаю, что имея известный навык и хороший LookAndFill можно и swing сделать конфеткой. Однако, на это уйдёт масса усилий. JavaFX была хорошей попыткой отказаться от desctop подхода к интерфейсу. Попытка попыткой, но на практике нужны отлаженные технологии.
Других нормальных альтернатив LookAndFill-у - кажется нет. Обе удачные десктопные Java-технологии (AWT/Swing и Eclipse Plug-ins) - используют этот подход.
Что знаю, то и сказал, уж как прокомментировал. :)
Кстати, в C# идеологию по поводу интерфейса утянули из явы. Те же грабли, но от другого производителя + проблема с потоками, которая в яве не ощущается. Я говорю о ситуации, когда компоненты созданы в одном потоке, а вызываются из другого. В лоб такой вызов приводит к нарушению прав доступа; это подаётся как ноухау.
Мне нравится как сделаны формы в HTML. Маловато компонентов, но всё очень гибко. Однако, взаимодействие с логикой через ajax добавляет кучу лишнего кода. К тому же нетипизированные языки с потугами на объектную модель настроения не добавляют.
В desctop всё наоборот. С логикой взаимодействовать просто. Компонентов много, но чтобы их модифицировать надо кучу кода написать.
Есть альтернатива MS Silverlight, который объединяет C#, JS, HTML и CSS, но до него руки не доходят. К тому же у меня на Java опыта больше. Небольшой пример программы на Silverlight можно посмотреть тут: http://silverlightru.net/prostoj-mediaplayer
> Однако, взаимодействие с логикой через ajax добавляет кучу лишнего кода.
В JEE есть такой фреймворк - JBoss RichFaces, в нем работа с Ajax - реализована в виде компонентов. В отличии от простого Ajax - это на много удобнее и интереснее, использовал в проекте. Есть аналог - Oracle IceFaces, не пробовал, но по идее тоже должна быть компонентная схема работы с Ajax.
> Есть альтернатива MS Silverlight
У меня в блоге есть различные новости по этой технологии. ;) Пока не пробовал, но оцениваю как одну из самых перспективных. Еще в блоге есть про гугловское очень интересное решение - приложения пишутся в нативном коде и все это работает в браузере, технология совсем молодая. По метке "Google" можно легко отыскать, месяца полтора-два назад публиковал. И на днях была у меня публикация про обещания Adobe - добавить 3D во флеш. Поживем, увидим. ;)
Из того обилия фрэймворков JSF, что есть, я пробовал только GWT и RichFaces. GWF я не смог подружить с 7-ой JIdea. Потом времени мало было и я забросил свои ковыряния. Вообще, от технологий вокруг JSF у меня осталось довольно странное чувство. Приходится использовать большое число различных конфигурационных файлов, что-то где-то прописывать, что-то куда-то подсовывать... В итоге, когда приложение разрастается, следить за всем этим колхозом становится очень сложно. Среды разработки немного помогают, но не всегда.
Присмотритесь к фреймворку JBoss Seam, это следующее поколение, по сравнению с "JSF + EJB 3".
У него есть аналог, Apache Struts, он появился раньше. Он относительно технологичен, но с него многие плюются (мыши кололись, но продолжали лезть на кактус).
Seam появился немного позже, и если Struts медленно эволюционировал, то Seam изначально задумывался конфеткой.
Для разработки на Seam Вы можете использовать бесплатный Eclipse + бесплатный комплект инструментов разработки JBoss Tools (они устанавливаются "на" эклипс).
В моем блоге есть некоторая информация про Seam.
Seam объединяет два фреймворка, основанных на бинах заднего плана - в качестве представления в нем часто используется JBoss RichFaces + бизнес-логика, которая реализуется посредством EJB 3. Seam не только объединяет эти два фреймворка, но и обеспечивает их "бесшовную работу".
У меня был проект на Seam и был проект на JSF+EJB3, это небо и земля.
Ключевые особенности Seam - были утверждены в спецификациях JEE 6.
Эти же ключевые особенности (подходы, решения) - уже есть в недавно вышедших версиях Eclipse и NetBeans, т.е. можно говорить, что они стали mainstram.
В Seam есть не только то, что из него перенесли в стандарты JEE 6, в Seam все конечно же расширено (в нем все это и было изначально, просто часть его технологии обобщили, в какой-то более простой и ужатый вид - и вынесли в спецификации JEE 6).
Фреймворк JBoss Seam разработал - угадайте кто? - Разработал отец-основатель технологии JBoss Hibernate. Это одна из ключевых mainstream технологий в JEE.
Как видите, в моих комментариях выше - часто упоминается слово JBoss:
- JBoss RichFaces - JBoss Hibernate - JBoss Seam
Есть мнения, что IBM далеко отстал от JBoss.
Многие, кто сравнивает Struts и Seam - говорят, что Seam однозначно лучше.
Минусы Seam:
1) Скорее всего придется завязываться на сервер приложений от JBoss. Да, он бесплатен, да, компании JBoss уже лет 15. Однако многие ставят как mainstream - апачевские фреймворки. Мучаются, но Struts применяют раза в 3-4 чаще, чем Seam. То же самое и с сервером приложений - хотя JBoss AS и довольно широко применяется, но чаще все же используют сервер приложений Apache Tomcat.
2) Все-таки и Эклипс и JBoss Tools - это бесплатные инструменты. Чтобы с ними работать - нужен опыт. Чтобы запустить под ними Seam - нужен опыт, в том числе понимание JEE. Иными словами Seam и инструменты разработки для него - можно сравнить с языком программирования Java. - Новичку не реально за пару недель изучить Java - как минимум нужен опыт ООП. А откуда его взять, если кто-то, например - имеет опыт только программирования на С? Поэтому многие пионеры долбятся с PHP, чтобы перейти на Java - нужно много потрудиться, чтобы его изучить. Зато результат, как знаете - превыше всех ожиданий - Java не сравнимо мощнее и лучше, чем PHP.
Так же и с бесплатными инструментами Eclipse + JBoss Tools - даже опытные Java-программисты зачастую пасуют, чтобы настроить и получить ЗАМЕЧАТЕЛЬНУЮ среду разработки для Seam.
Спасибо за развёрнутый ответ. Я обязательно попробую Seam.
По поводу сред разработки, предпочитаю NetBeans. С него начинал (всему виной К.Хорстман, чей двухтомник по J2SE был для меня первой книгой по Java) и на нём и остался. Хотя, в этом плане я быстро адаптируюсь.
Там придется потратить значительные усилия, для "пробы". :) Но что сразу хорошо - освоитесь с сервером приложений JBoss AS, он достаточно популярен, поэтому это однозначно пригодится в проектах и будет дополнительным плюсом для работодателя.
В принципе - ключ к пониманию работы с сервером приложений от JBoss - это всего-навсего разместить 1 xml-файлик в основном каталоге распакованного сервера - и имя этого файлика обязано заканчиваться на "ds" (например по умолчанию уже установлен файл-пример, называется он hsqldb-ds.xml, в нем всего несколько строк, все тривиально просто; в нем указываются минимальные настройки для подключения к нужной Вам базы данных - url, login/password и пару еще опций - все достаточно очевидно и логично). Очень интересная тут сразу возможность - в ЛЮБОЙ момент времени можно этот файл от туда нафиг убрать, или добавить - сервер приложений (запущенный) САМ определит - поместили вы туда файл, или убрали - т.е. сервер приложений автоматически распознает источники подключений к базам данных. В этом файлике Вы можете указать JNDI-name Вашего источника данных (datasource) - и ЕСЛИ УКАЗАЛИ - можете уже СВОБОДНО юзать подключенную, таким образом, базу данных - в любом EAR- или WAR-архиве, который Вы разместите (скопируете в одну из папок) данного сервера приложений.
Второй момент - у сервера приложений JBoss AS есть по умолчанию несколько конфигураций для запуска (например - default). Лучше всего - скопировать ее под другим именем, например alex_rude_1 - и тогда уже свободно можете менять что-то в ней. Все конфигурации отличаются только одним - сколько JAR-файлов (библиотек) - запустится при старте данного сервера приложений. Запуская default-конфигурацию - Вы получаете какой-то сбалансированный набор. Запуская конфигурацию "all" - запустятся еще всевозможные поддержки веб-сервисов и прочее, и прочее. Соотв. это выльется в объем занимаемого ОЗУ.
Да, и третий момент работы с JBoss AS - не забыть добавить JAR-файл КОНКРЕТНОЙ БАЗЫ ДАННЫХ (нужной Вам) в подкаталог Вашей конфигурации запуска сервера.
Самая популярная версия JBoss AS - это 4.2.3.GA
Есть и 5-ая и относительно скоро выйдет 6-ая. Но лучше попробуйте с 4-ой - для большинства проектов ее хватает и потребление ОЗУ - будет довольно маленьким.
Хорстман у меня тоже самый "главный" учебник по Java. :)
Касательно NetBeans - у меня был с ним опыт в том проекте, где JSF+EJB3. Не очень он мне глянулся, но пришлось использовать... А вот IDE Sun Studio, которая основана на NetBeans и которая служит для программирования на С/С++ для Линукса/Соляриса - мне очень понравилась, по сравнению с IDE Microsoft VS 2008 в плане именно программирования на С/С++.
IDE Sun Studio по рейтингу одного из российских журналов - заняла 1-ое место. Она бесплатно, но ставится только пол линуксами/юниксами (под Windows "прямым способом" - не поставить).
По рейтингам (возвращаясь к Java) - IDE и серверов приложений - у меня в блоге была некоторая статистика. Вас заинтересует. ;)
касательно JBoss, сейчас на работе в основном проекте мы его используем. У меня задачи в основном на периферии, так что опыта с JBoss набрал совсем мало. Был отдельный проект на C#, его я и мой напарник вели, естественно, использовал IIS.
Сейчас я участвую в софтверном стартапе. JSP + Tomcat + Hibernate + PostgreSQL , примерно такая картина по технологиям. Короче, остановиться на каком-то одном сервере не получается.
К сожалению, поддержать тему по веб-серверам мне особо не чем.
Последние дни разбираю гомоморфное шифрование, приходится математику подтягивать, к тому же тема свежая и литературы мало (в основном это диссертации на английском X_X ). Студенческие заботы много внимания требуют :).
Интересный перевод. Я пробовал использовать JavaFX в несколько других целях. Изначально хотелось найти технологию, чтобы сделать обычное оконное приложение, но с HTML интерфейсом. Обратился к JavaFX, попробовал несколько примеров, а потом забросил.
ОтветитьУдалитьНе знаю как на западном, но на российском рынке технология не востребована. На job.ru или rabota.ru не найти вакансии JavaFX программиста.
Я и не пробовал, если честно. :) Долгое время специализировался по ActionScript/Flash (сейчас - по Java), как-то не виделось в JavaFX хотя бы возможностей флеша, ну и чего тогда заморачиваться - все ждал, может допилят...
ОтветитьУдалитьВообще, если смотреть на недостатки апплетов, то я помимо вопросов развертки выделил бы проблему унылого подхода к интерфейсу. Я, конечно, понимаю, что имея известный навык и хороший LookAndFill можно и swing сделать конфеткой. Однако, на это уйдёт масса усилий. JavaFX была хорошей попыткой отказаться от desctop подхода к интерфейсу. Попытка попыткой, но на практике нужны отлаженные технологии.
ОтветитьУдалитьДругих нормальных альтернатив LookAndFill-у - кажется нет. Обе удачные десктопные Java-технологии (AWT/Swing и Eclipse Plug-ins) - используют этот подход.
ОтветитьУдалитьЧто знаю, то и сказал, уж как прокомментировал. :)
Кстати, в C# идеологию по поводу интерфейса утянули из явы. Те же грабли, но от другого производителя + проблема с потоками, которая в яве не ощущается. Я говорю о ситуации, когда компоненты созданы в одном потоке, а вызываются из другого. В лоб такой вызов приводит к нарушению прав доступа; это подаётся как ноухау.
ОтветитьУдалитьМне нравится как сделаны формы в HTML. Маловато компонентов, но всё очень гибко. Однако, взаимодействие с логикой через ajax добавляет кучу лишнего кода. К тому же нетипизированные языки с потугами на объектную модель настроения не добавляют.
В desctop всё наоборот. С логикой взаимодействовать просто. Компонентов много, но чтобы их модифицировать надо кучу кода написать.
Есть альтернатива MS Silverlight, который объединяет C#, JS, HTML и CSS, но до него руки не доходят. К тому же у меня на Java опыта больше. Небольшой пример программы на Silverlight можно посмотреть тут: http://silverlightru.net/prostoj-mediaplayer
> Однако, взаимодействие с логикой через ajax добавляет кучу лишнего кода.
ОтветитьУдалитьВ JEE есть такой фреймворк - JBoss RichFaces, в нем работа с Ajax - реализована в виде компонентов. В отличии от простого Ajax - это на много удобнее и интереснее, использовал в проекте. Есть аналог - Oracle IceFaces, не пробовал, но по идее тоже должна быть компонентная схема работы с Ajax.
> Есть альтернатива MS Silverlight
У меня в блоге есть различные новости по этой технологии. ;) Пока не пробовал, но оцениваю как одну из самых перспективных. Еще в блоге есть про гугловское очень интересное решение - приложения пишутся в нативном коде и все это работает в браузере, технология совсем молодая. По метке "Google" можно легко отыскать, месяца полтора-два назад публиковал. И на днях была у меня публикация про обещания Adobe - добавить 3D во флеш. Поживем, увидим. ;)
Из того обилия фрэймворков JSF, что есть, я пробовал только GWT и RichFaces. GWF я не смог подружить с 7-ой JIdea. Потом времени мало было и я забросил свои ковыряния. Вообще, от технологий вокруг JSF у меня осталось довольно странное чувство. Приходится использовать большое число различных конфигурационных файлов, что-то где-то прописывать, что-то куда-то подсовывать... В итоге, когда приложение разрастается, следить за всем этим колхозом становится очень сложно. Среды разработки немного помогают, но не всегда.
ОтветитьУдалитьПрисмотритесь к фреймворку JBoss Seam, это следующее поколение, по сравнению с "JSF + EJB 3".
ОтветитьУдалитьУ него есть аналог, Apache Struts, он появился раньше. Он относительно технологичен, но с него многие плюются (мыши кололись, но продолжали лезть на кактус).
Seam появился немного позже, и если Struts медленно эволюционировал, то Seam изначально задумывался конфеткой.
Для разработки на Seam Вы можете использовать бесплатный Eclipse + бесплатный комплект инструментов разработки JBoss Tools (они устанавливаются "на" эклипс).
В моем блоге есть некоторая информация про Seam.
Seam объединяет два фреймворка, основанных на бинах заднего плана - в качестве представления в нем часто используется JBoss RichFaces + бизнес-логика, которая реализуется посредством EJB 3. Seam не только объединяет эти два фреймворка, но и обеспечивает их "бесшовную работу".
У меня был проект на Seam и был проект на JSF+EJB3, это небо и земля.
ОтветитьУдалитьКлючевые особенности Seam - были утверждены в спецификациях JEE 6.
Эти же ключевые особенности (подходы, решения) - уже есть в недавно вышедших версиях Eclipse и NetBeans, т.е. можно говорить, что они стали mainstram.
В Seam есть не только то, что из него перенесли в стандарты JEE 6, в Seam все конечно же расширено (в нем все это и было изначально, просто часть его технологии обобщили, в какой-то более простой и ужатый вид - и вынесли в спецификации JEE 6).
Фреймворк JBoss Seam разработал - угадайте кто? - Разработал отец-основатель технологии JBoss Hibernate. Это одна из ключевых mainstream технологий в JEE.
Как видите, в моих комментариях выше - часто упоминается слово JBoss:
ОтветитьУдалить- JBoss RichFaces
- JBoss Hibernate
- JBoss Seam
Есть мнения, что IBM далеко отстал от JBoss.
Многие, кто сравнивает Struts и Seam - говорят, что Seam однозначно лучше.
Минусы Seam:
1) Скорее всего придется завязываться на сервер приложений от JBoss. Да, он бесплатен, да, компании JBoss уже лет 15. Однако многие ставят как mainstream - апачевские фреймворки. Мучаются, но Struts применяют раза в 3-4 чаще, чем Seam. То же самое и с сервером приложений - хотя JBoss AS и довольно широко применяется, но чаще все же используют сервер приложений Apache Tomcat.
2) Все-таки и Эклипс и JBoss Tools - это бесплатные инструменты. Чтобы с ними работать - нужен опыт. Чтобы запустить под ними Seam - нужен опыт, в том числе понимание JEE. Иными словами Seam и инструменты разработки для него - можно сравнить с языком программирования Java. - Новичку не реально за пару недель изучить Java - как минимум нужен опыт ООП. А откуда его взять, если кто-то, например - имеет опыт только программирования на С? Поэтому многие пионеры долбятся с PHP, чтобы перейти на Java - нужно много потрудиться, чтобы его изучить. Зато результат, как знаете - превыше всех ожиданий - Java не сравнимо мощнее и лучше, чем PHP.
Так же и с бесплатными инструментами Eclipse + JBoss Tools - даже опытные Java-программисты зачастую пасуют, чтобы настроить и получить ЗАМЕЧАТЕЛЬНУЮ среду разработки для Seam.
Спасибо за развёрнутый ответ. Я обязательно попробую Seam.
ОтветитьУдалитьПо поводу сред разработки, предпочитаю NetBeans. С него начинал (всему виной К.Хорстман, чей двухтомник по J2SE был для меня первой книгой по Java) и на нём и остался. Хотя, в этом плане я быстро адаптируюсь.
Там придется потратить значительные усилия, для "пробы". :) Но что сразу хорошо - освоитесь с сервером приложений JBoss AS, он достаточно популярен, поэтому это однозначно пригодится в проектах и будет дополнительным плюсом для работодателя.
ОтветитьУдалитьВ принципе - ключ к пониманию работы с сервером приложений от JBoss - это всего-навсего разместить 1 xml-файлик в основном каталоге распакованного сервера - и имя этого файлика обязано заканчиваться на "ds" (например по умолчанию уже установлен файл-пример, называется он hsqldb-ds.xml, в нем всего несколько строк, все тривиально просто; в нем указываются минимальные настройки для подключения к нужной Вам базы данных - url, login/password и пару еще опций - все достаточно очевидно и логично). Очень интересная тут сразу возможность - в ЛЮБОЙ момент времени можно этот файл от туда нафиг убрать, или добавить - сервер приложений (запущенный) САМ определит - поместили вы туда файл, или убрали - т.е. сервер приложений автоматически распознает источники подключений к базам данных. В этом файлике Вы можете указать JNDI-name Вашего источника данных (datasource) - и ЕСЛИ УКАЗАЛИ - можете уже СВОБОДНО юзать подключенную, таким образом, базу данных - в любом EAR- или WAR-архиве, который Вы разместите (скопируете в одну из папок) данного сервера приложений.
Второй момент - у сервера приложений JBoss AS есть по умолчанию несколько конфигураций для запуска (например - default). Лучше всего - скопировать ее под другим именем, например alex_rude_1 - и тогда уже свободно можете менять что-то в ней. Все конфигурации отличаются только одним - сколько JAR-файлов (библиотек) - запустится при старте данного сервера приложений. Запуская default-конфигурацию - Вы получаете какой-то сбалансированный набор. Запуская конфигурацию "all" - запустятся еще всевозможные поддержки веб-сервисов и прочее, и прочее. Соотв. это выльется в объем занимаемого ОЗУ.
ОтветитьУдалитьДа, и третий момент работы с JBoss AS - не забыть добавить JAR-файл КОНКРЕТНОЙ БАЗЫ ДАННЫХ (нужной Вам) в подкаталог Вашей конфигурации запуска сервера.
Самая популярная версия JBoss AS - это 4.2.3.GA
Есть и 5-ая и относительно скоро выйдет 6-ая. Но лучше попробуйте с 4-ой - для большинства проектов ее хватает и потребление ОЗУ - будет довольно маленьким.
Хорстман у меня тоже самый "главный" учебник по Java. :)
Касательно NetBeans - у меня был с ним опыт в том проекте, где JSF+EJB3. Не очень он мне глянулся, но пришлось использовать... А вот IDE Sun Studio, которая основана на NetBeans и которая служит для программирования на С/С++ для Линукса/Соляриса - мне очень понравилась, по сравнению с IDE Microsoft VS 2008 в плане именно программирования на С/С++.
ОтветитьУдалитьIDE Sun Studio по рейтингу одного из российских журналов - заняла 1-ое место. Она бесплатно, но ставится только пол линуксами/юниксами (под Windows "прямым способом" - не поставить).
По рейтингам (возвращаясь к Java) - IDE и серверов приложений - у меня в блоге была некоторая статистика. Вас заинтересует. ;)
касательно JBoss, сейчас на работе в основном проекте мы его используем. У меня задачи в основном на периферии, так что опыта с JBoss набрал совсем мало. Был отдельный проект на C#, его я и мой напарник вели, естественно, использовал IIS.
ОтветитьУдалитьСейчас я участвую в софтверном стартапе. JSP + Tomcat + Hibernate + PostgreSQL , примерно такая картина по технологиям. Короче, остановиться на каком-то одном сервере не получается.
К сожалению, поддержать тему по веб-серверам мне особо не чем.
Последние дни разбираю гомоморфное шифрование, приходится математику подтягивать, к тому же тема свежая и литературы мало (в основном это диссертации на английском X_X ). Студенческие заботы много внимания требуют :).
Ясно. :)
ОтветитьУдалить