[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