[room] Лекция по Java

Денис Смирнов =?iso-8859-1?q?mithraen_=CE=C1_altlinux=2Eru?=
Ср Окт 25 22:10:43 MSD 2006


On Wed, Oct 25, 2006 at 02:43:40PM +0400, Eugene Prokopiev wrote:

EP> Первое: пусть польют меня грязью, но я в данном вопросе сторонник 
EP> недистрибутивного подхода, из Сизифа меня интересует только JDK/JRE. 
EP> Обоснование: продукт должен работать не только в ALT, и не только в 
EP> Linux (даже в качестве IDE я использую Eclipse в Linux, но со мной 
EP> работает один человек в Windows и один еще не определился :) ). Более 
EP> того, мне хочется, чтобы он собирался везде, где нет ничего, кроме JDK. 
EP> Поэтому мне пока проще таскать все необходимые библиотеки с собой, они у 
EP> меня лежат прямо в CVS вместе с исходниками. Я задницей чувствую, что 
EP> когда-нибудь это начнет меня напрягать, когда потребуется гарантировать 
EP> одинаковые версии библиотек в разных проектах, и тогда я буду смотреть 
EP> на maven, а пока мне достаточно ant. Грубые аналогии: ant - это make, 
EP> maven - это hasher/spt :)

Гм. У меня ситуация немного другая -- мне достаточно если он будет
_работать_ где угодно. Увы, скорее всего то что будет распространяться
будет распространяться в бинарном виде :(

EP> Далее: CGI в виде отдельных процессов на каждый запрос в Java никто в 
EP> здравом уме делать не станет - это слишком дорого. Основа всех 
EP> технологий - это сервлеты, которые выглядят так:

Правильно ли я понимаю что Tomcat это "штука для запуска сервлетов"? И по
сути это дает возможности идентичные FastCGI?

EP> Принцип ясен?

То есть класс содержит в себе код обработчики запроса? Ага.

EP> Есть надстройки над этим - template engines типа JSP и Velocity, которые 
EP> позволяют писать в стиле PHP, т.е. html + вставки кода. Кстати, Velocity 
EP> как template engine используется в проектах, которые к web никаким боком.

Добровольно мешать код и данные? Нет уж :)

EP> Есть надстройки над этими надстройками :) Есть другие надстройки над 
EP> сервлетами. Начать читать можно отсюда - 
EP> http://www.techinfo.net.ru/docs/web/javawebdev.html

Прочитал... жуть! Описано только одно средство (XMLC) которое упрощает
разработку, а не усложняет %-/

Откуда такая XML-мания?

 EP>      <display-name>Hello, World Application</display-name>
 EP>      <description>
 EP>          This is a simple web application with a source code organization
 EP>          based on the recommendations of the Application Developer's Guide.
 EP>      </description>

Где используется эта информация?

 EP> build.xml (и вызывающий его build.sh) умеет строить из этого дерева 
 EP> файлов war-архив. Этот архив можно разными способами продеплоить в 
 EP> Tomcat: например, скопировать его в определенный каталог, который он 
 EP> мониторит на предмет появления новых приложений. Будет это приложение 
 EP> работать и в других контейнерах вроде Jetty и Resin, а также в тяжелых 
 EP> серверах приложений вроде JBoss и Geronimo, которые содержат встроенные 
 EP> сервлет-контейнеры (коими являются Tomcat и Jetty :) ).

Я правильно понимаю что минимальный сервлет-контейнер должен уметь "всего
лишь" каким-либо образом обрабатывать клиентские соединения, подгружать
сервлеты и передавать данные? То есть можно, например, написать простой
сервлет-контейнер который будет общаться с тем же nginx через FastCGI.

 EP> Мне больше нравится Jetty, т.к. он легче, меньше, проще, понятнее ... 
 EP> Взять маленький Jetty можно тут - 
 EP> http://lib.juga.ru/article/articleview/222/1/0?PrintableVersion=enabled
 EP> Т.е. Apache web server здесь отдыхает. Его подставляют как frontend. 
 EP> Можно ли задействовать nginx - не в курсе.

Если он фронтенд как http proxy -- однозначно можно.

EP> Если хочется странного (FastCGI), то пишется обычное java-приложение, 
EP> которое обменивается с web-сервером через сокеты.

Ага.

EP> Такое приложение можно писать, забыв о наличии каких-либо frameworks. Но 
EP> если я знаю, что будет много относительно независимых и взамозаменямых 
EP> модулей (и я узнаю о том, какие конфигурации будут нужны, только на 
EP> этапе внедрения), то я задействую Spring.
EP> Стартовый класс:
EP> public class Main {

 EP> 	public static void main(String[] args) throws InterruptedException {

Что означает этот exception?

EP> Кто скажет, что это не изящно, пусть бросит в меня камень :)

XML... Я так понимаю что редактируется это обычно все отнюдь не руками?

EP> Да, похоже я исполнил мечту г-на dlaygovta@ :)

:)

EP> Денис, если все это тебе еще интересно, то в качестве оплаты лекции 
EP> прошу написанное причесать и куда нибудь на f.i. выложить :)

Еслп под причесать подразумевается только форматирование -- легко и
непринужденно. Если редактирование -- ой вряд ли я сейчас с этим
справлюсь...

>> Кстати о. Какие наиболее простые средства a-la flex/bison сейчас есть в
>> Java?
EP> кажется, именно antlr и есть

Ага...

>> Меня String убивает именно тем, что код который на perl том же занимает
>> несколько символов и понятен -- на Java получается простыня кода :)
EP> В Java есть регулярные выражения - не помогут?

В Java вообще все есть :) Дело в синтаксисе.

-- 
С уважением, Денис

http://freesource.info
----------------------------------------------------------------------------
Мда.. есть такое поле в RPM... Packager ;-)
		-- rider in devel@



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