[room] язычки и библиотечки

Eugene Prokopiev prokopiev на stc.donpac.ru
Ср Окт 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