[room] Вопрос по PHP (или I Hate PHP)

Eugene Prokopiev =?iso-8859-1?q?prokopiev_=CE=C1_stc=2Edonpac=2Eru?=
Пн Фев 19 09:40:42 MSK 2007


Eugene Prokopiev пишет:
> Денис Смирнов пишет:
> 
>>On Mon, Feb 12, 2007 at 09:00:12AM +0300, Eugene Prokopiev wrote:
>>
>>
>>
>>>>Вот обижусь на все эти языки, уйду в отпуск, и начну писать себе набор
>>>>библиотек чтобы на ocaml каком писать... :)
>>
>>EP> Боюсь показаться навязчивым, но есть такая платформа - JVM ;) c жутким 
>>EP> количеством библиотек и с несколько меньшим количеством языков, среди 
>>EP> которых, помимо Java, есть и функциональные (Scala и CAL - аналог 
>>EP> хаскела без части syntax sugar, кстати и небезызвестный г-н Луговской 
>>EP> вроде как на том же поприще подвизался), и много еще какие, если же 
>>EP> того, что надо все же нет, то есть, например, ANTLR ;)
>>EP> Вот хостиг с Java - да, дороже LAMP выйдет ...
>>
>>Зря боишься :) О JVM я думаю больше всего. А твоими стараниями думаю более
>>осознанно :)
>>
>>Из последнего твоего разъяснения и вкуривания докуметации я уяснил для
>>себя что:
>>
>> - Java как язык мне очень нравится для построения платформы;
>> - Java категорически не нравится собственно для написания web-приложения.
>>   В общем-то это пофиг, потому как я не ленивый, и сделать некий простой
>>   скриптовый язык из которого генерировать код на жабе я смогу. А где
>>   нужна хоть чуть-чуть нетривиальная логика не выпендриваться, а писать
>>   на жабе;
>> - Генерировать самому код для JVM -- гм, а что, есть для этого
>>   более-менее удобные средства (типа тех что есть в .NET)? Да ещё и
>>   более-менее эффективные (умеющие задействовать при необходимости фишки
>>   как сановской, так и IBM'овской реализации)?
> 
> 
> http://java-source.net/open-source/bytecode-libraries

а в Java 6 есть такое - 
http://java.sun.com/javase/6/docs/api/javax/tools/package-summary.html

хотя и раньше jasper (компилятор JSP в байт-код) и ant как-то 
выкручивались, используя, как я понимаю, недокументированные классы из 
tools.jar

в некоторых случаях для динамической генерации кода удобнее AOP, см. 
AspectJ и Spring AOP

>> - То, что считается общепринятым методом разработки web-приложений на
>>   Java мне не нравится ну совсем. JVM поднимается не шустроб поэтому
>>   использовать как CGI нельзя. Остается FastCGI или встраивать в свое
>>   приложение http-сервер. Я псих, и могу пойти даже на второе, хотя
>>   предпочел бы FastCGI. Как я понимаю писать мне его поддержку придется
>>   самостоятельно.
> 
> 
> http://docs.codehaus.org/display/JETTY/Embedding+Jetty
> 
> Я не пойму, чего ты так цепляешься за FastCGI. Чем это принципиально 
> отличается от HttpServlet.do*? Сделай поверх сервлетов любое API, 
> которое тебе будет удобно, в FastCGI ты же ведь тоже наверное не в 
> терминах ввода/вывода символов работаешь ...

Кстати, встраивание http-сервера в приложение - не такая глупая мысль, 
как поначалу кажется. Многие проекты это практикуют, правда я не могу 
вспомнить ни одного, кто бы использовал свой наколенный http-сервер. В 
большинстве случаев встраивают Jetty, и я не могу придумать причины для 
написания своего http-сервера вместо него. С учетом использования NIO 
его конкурентом в плане производительности должен быть скорее nginx, 
нежели apache, хотя задачи выжать из него максимум пока у меня не было.

Я встраивал Jetty, правда не прямо в свой Java-код, а в контекст 
Спринга. И наблюдаю интересную тенденцию: многие проекты уже используют 
Spring/XBean или Hivemind в качестве механизма конфигурирования 
отказываясь от изобретения собственных велосипедов. Меня, как 
пользователя Spring, это очень радует. Логика работы контекста и 
синтаксис его описания в Spring разделены, т.е. xml - только один из 
возможных способов его описания. Еще поддерживается никем вроде не 
используемый формат properties, а одни веселые ребята сделали реализацию 
Ruby-подобного синтаксиса - 
http://svn.trampolinesystems.com/springy/trunk/README

Сейчас для одного совсем маленького web-проекта я использую DWR, там 
работа ведется не в терминах http-запросов, а скорее в терминах RPC. GUI 
на HTML (еще лучше здесь будет смотреться XUL), клиентская логика на 
JavaScript, серверная - Java (точнее контекст Spring со встроенными в 
него бинами Jetty, DWR, самого Spring и моими). Собственно DWR нужен, 
чтобы из JavaScript дергать Java-код (бины, размещенные в контексте 
Spring) и наоборот. Не факт, что тебе это подойдет, но посмотри.

-- 
С уважением, Прокопьев Евгений




Подробная информация о списке рассылки smoke-room