[room] язычки и библиотечки
Eugene Prokopiev
=?iso-8859-1?q?prokopiev_=CE=C1_stc=2Edonpac=2Eru?=
Ср Окт 25 10:00:16 MSD 2006
Денис Смирнов пишет:
> On Tue, Oct 24, 2006 at 12:58:59PM +0400, Eugene Prokopiev wrote:
>
>>>Если честно, я бы уже совсем обиделся и ушел на Java, написав к ней
>>>несколько классов для обраобтки FastCGI, темплейтов и прочей радости, а
>>>также компилятор в неё с простого PHP-like язычка. Только вот
>>>инфраструктура вокруг неё какая-то кривенькая, не могу я к ней привыкнуть.
>
> EP> А конкретнее? Что показалось кривым в инфраструктуре? Может не туда смотрел?
>
> Вполне возможно, в том что касается жабы я ламерюга редкостный.
>
> Буду рад если ткнешь меня носом в то, с чем следовало бы ознакомиться.
В первую очередь скажи, что такое для тебя инфраструктура? Может мы о
разном?
Сразу скажу, что с Java я начал работать тогда, когда мода на тяжелые
решения вроде EJB стала проходить. Много было написано на эту тему,
например Better Faster Lighter Java и J2EE Development without EJB - у
меня есть pdf, если надо, пиши ...
Для подавляющего большинства немонолитных проектов бывают полезны
технологии вроде IoC - эдакий универсальный клей для модулей ;) . Почти
чистая реализация - это HiveMind. Spring - тоже IoC + готовые заготовки
для упрощения кода работы с БД, ORM, JMS, AOP (и реализованное поверх
него декларативное управление транзакциями, которое в Java относится не
только к БД). EJB3, кстати, в каком-то смысле нацелен именно на нишу
Spring, но, думаю, уже поздно. Хотя для неподсевших на Spring это
большой прогресс по сравнению с EJB2.
У Spring есть собственный web framework и интеграция практически со
всеми другими web frameworks, ежели собственный не угодил. Есть прямая
поддержка модулей, написанных на JRuby, Groovy, BeanShell, и нет
препятствий для дописывания поддержки других. Scala (это функциональный
язык для JVM) нет пока, и, честно говоря, на практике я до этого еще не
дошел.
Есть в Java такая вкусная штука, как JMX - это средство для написания
своего рода админских интерфейсов, чем-то по идеологии смахивающее на
SNMP. Грубо говоря, определяешь параметры, которые надо мониторить, и
операции, которые можно применять к запущеному сервису, транспорт и
механизмы авторизации, а UI (хоть web, хоть Swing) тебе нарисуют куча
готовых JMX-клиентов, начиная от встроенного jconsole. И опять, в Spring
ты определяешь это декларативно.
> EP> Другое дело, что FastCGI - это штука для JEE несколько чужеродная ...
> EP> Не смотрел, к примеру, на Tapestry?
>
> Нет. Гляну.
По поводу web опыта у меня практически нет. Но концепция web-приложений,
собираемых и размещаемых в виде war-архивов в любой контейнер (Tomcat,
Jetty, Resin) мне нравится. И годится далеко не только для обычного webа
с UI, а и для сервисов, которые доступны по любому протоколу,
реализованному поверх HTTP (SOAP, Hessian/Burlap либо что-то
самопальное). Внутренности web-приложения к этой концепции ортогональны
- можно и на голых сервлетах остаться или построить поверх них свой
framework, а можно сначала ознакомиться с существующими (среди которых
есть и AJAX, и даже трансляторы Swing -> Web).
> EP> А если хочется "FastCGI, темплейтов и прочей радости, а также компилятор
> EP> в неё с простого PHP-like язычка" - то бишь именно своего велосипеда -
> EP> то вообще непонятно, что в PHP есть такого, что ты предпочел именно его
> EP> ... К слову, компиляторов в байт-код JVM с различных функциональных и
> EP> императивных языков довольно много
>
> Скорее уж проще самому налабать интерпретатор на той же жабе.
Свой DSL? Возможно, есть смысл посмотреть в сторону antlr ...
> PHP было выбрано как меньшее из зол. То бишь либо самому делать весь стек,
> либо не строить из себя идеалиста а просто сделать чтобы хорошо работало.
>
> Но я все равно ищу что-то куда свалить.
:)
Прелесть Java не в языке. Язык средний, в частностях вроде интерфейсов и
анонимных классов лучше предшественника (C++), а в некоторых более
глобальных вопросах (класс String ;) ) просто потрясающий своей
нелогичностью. Хотя привыкнуть можно :)
Прелесть именно в окружении. В наличии спецификаций, в конкурирующих и
относительно совместимых реализаций этих спецификаций. В количестве
библиотек (один jakarta.apache.org чего стоит). В средствах сборки типа
ant/maven. В неплохих IDE вроде Eclipse и IDEA, хотя, конечно, для
любителей vim/emacs это не аргумент :)
>>>Зато с масштабируемостью проблем вообще никаких :)
>>>А разве не любое приложение, хранящее свои данные исключительно в SQL
>>>легко кластеризуется?
>
> EP> Любое, пока ему не потребуется кэш перед SQL ;) Правда, реализации этого
> EP> в JEE есть, но на практике не сталкивался ...
>
> Ну, в жабе в этом смысле все можно сделать красиво, если я правильно
> понял. Спрятать вообще доступ к SQL в объеты, реализовать для них
> интерфейсе serializable после чего сделать кэш. Вот во всяких PHP-подобных
> это уже оказывается куда тяжелее.
А в Java даже есть готовое вроде JBoss Tree Cache :)
--
С уважением, Прокопьев Евгений
Подробная информация о списке рассылки smoke-room