Не так давно вышел Early Draft спецификации JSF 2.0. По высказанным мной недавно соображениям (а также без их учета) это вещь, которая заслуживает внимания, которое я ей и уделил. Напомню, что представители экспертной группы обещали нам, помимо прочих вкусностей, конфигурацию с помощью аннотаций, новый удобный язык разработки страниц и простое создание компонентов a-la Tapestry 5 (но по-умному).
Чем же нас порадовали в первом материальном результате работы экспертной группы?
- Появилась возможность указывать параметр ProjectStage ("Production", "Development" etc.), в зависимости от значения которого JSF будет слегка менять свое поведение.
- Появился стандартный способ упаковывать ресурсы вместе с библиотеками компонентов, версионировать их и локализовывать.
- Появилась возможность ссылаться на ресурсы с помощью EL.
- Появилась новая система публикации/подписки на события.
- Появился механизм релокации ресурсов (можно в компоненте указать, что он зависит от такого-то ресурса, и ссылка на этот ресурс будет автоматически встроена в head итогового кода страницы).
- Появилась практически пустая глава "Integration with Facelets", в тексте которой амбициозно заявлено нечто вроде "Здесь потом будет спецификация Facelets, а пока что мы сюда сваливаем всякую фигню, чтобы не забыть".
- Плюс некоторые телодвижения в общем направлении упрощения интеграции с Ajax.
Это все.
Я несколько обескуражен. Нет, конечно же, все перечисленные фичи очень полезны и несколько облегчат жизнь (особенно разработчикам компонентных библиотек). Но тем не менее все это лишь частичные, второстепенные улучшения, которые не затрагивают фундаментальных проблем, с которыми сталкиваются каждый божий день абсолютно все, имеющие дело с JSF.
Точнее, одну из фундаментальных проблем призвано решить внедрение Facelets. Но, как было отмечено, пока что готово только название главы. Более того, я лично (и в этом я не одинок) категорически против использования указанного термина в официальной спецификации вообще. Facelets - это посторонний проект, проект очень удачный и могущий послужить основой для спецификации нового языка описания страниц. Но тем не менее это проект посторонний, не являющийся частью Java EE, не имеющий спецификации, и потому ссылки на него выглядят очень странно и ненадежно. Никто же не ссылался на Hibernate или TopLink в спецификации JPA?
Выходом может быть объявление, что в этом документе под Facelets понимается не всем известный проект, а новый язык описания страниц, являющийся неотъемлемой частью спецификации JSF. Но об этом нужно громко и внятно сказать, дабы не вводить народ в смущение. А еще лучше придумать новое подходящее название, слово Facelets выбросить из спецификации, зато на основе этого проекта первую официальную реализацию нового языка (собственно, в отдельных частях документа это название даже встречается - "Faces PDL").
Наконец, про использование аннотациq для конфигурации (типа @ManagedBean) в документе вообще не слова. То есть нам по-прежнему предлагают писать XML-файлы размером в тысячи строк. И это в то время, когда подавляющее большинство остальных Java EE - технологий избавились от XML hell еще в версии 5.0 (JSF 2.0 должна войти в Java EE 6.0).
Все это тянет максимум на версию 1.3, но никак не на 2.0.
Я, конечно, понимаю, что это всего лишь "раннее черновое превью". Но в этом превью я ожидал увидеть контуры будущего грандиозного здания, пусть и нечеткие, которые будут уточняться и обростать деталями в последующих выпусках на пути к финальной версии. Вместо этого нам показали все тот же сарай с парой новых пристроек и интегрированным сортиром, а также табличкой с надписью "Здесь будет погреб".
Возникает ощущение, что экспертная группа пошла по пути наименьшего сопротивления и описала те изменения, с которыми все понятно, оставив сложные вещи на потом. Такой подход имеет право на жизнь, но зачем тогда публиковать такое превью, по которому нельзя судить о том, что, хотя бы в общих чертах, будет из себя представлять конечный продукт? Неужели только для того, чтобы показать, что EG работает, а не балду пинает?
Несмотря ни на что, продолжаю ждать и надеяться :).
No comments:
Post a Comment