metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-12-16 03:42 pm

Кто-то тупой, или я или гвозди

Сижу изучаю различные варианты реализации middle-tier, который планируется использовать в будущем для нескольких проектов. Решил пересилить свой страх и взглянуть на J2EE. А надо сказать, что для неподготовленного ума ентерпрайз жаба выглядит совершенно ирреально бредовой: миллиарды фреймворков, утилит, серверов, сотни страниц документации, проекты на ней содержат over 9000 папок и мелких исходников и xml-конфигов и вообще я не уверен, что в здравом уме и имея некую начальную свободу выбора инструментов, с этим стоит вообще связываться.

Начал искать что-нибудь вроде "J2EE для начинающих с пошаговыми инструкциями". Нашел AppFuse. Вроде все описано понятно, есть QuickStart, написано откуда качать зависимости, итд, итп. Но таки вы будете смеятся - но я не могу найти, где качать исходники этого дела. Ссылки "Download" на сайте нету.

Я, конечно, счас попытаюсь произвести описанные там вуду-ритуалы, может мавен тот все что нужно сам скачает, но то, что начинать приходится с вуду-действий, как-то печалит.

Вообще говоря, у меня уже есть почти полностью готовая основа для этого миддл-тиера, на которой я бы проект сделал очень быстро: Firebird+Delphi+ASP.NET RESTful веб-сервис. Но проблема в том, что это означает полную и окончательную привязку проектов к виндам, отказ от любых потенциальных работ с юниксами в будущем и сгнаивание мозга до состояния "сеньор-фокспро-девелопер в ВЦ НИИ Говна и Торфа, 50 лет, 30 лет опыта рисования формочек в дизайнере".

Кроме того, если дать объявление "требуется разработчик на дельфи" - приходят такие долбаные мышевозы с паттернами "magic button" что рыдать хочется, соответственно шансов на то, что хотя бы когда-нибудь я займусь только архитектурой и управлением проектами, вместо того, чтобы самостоятельно писать код, внедрять и обслуживать - не останется никаких.


PS: Есть кстати, еще одна, еще более неадекватная альтернатива: сойти с ума и ударится в нетривиальщину вроде ерланга и хаскеля, начать писать самодельный миддл-тиер на чистом С и изобретать прочие велосипеды. То, что это гарантированно будет легче для нервной системы, чем J2EE и ASP.NET, я уверен. Там комьюнити меньше и не будет такого, что половина интернетов забита разнообразными фреймворками, каждый из которых настолько наворочен, что позволяет не писать код, а всего лишь парой сотен xml-конфигов сделать любое приложение.
Я вспоминаю 90-е годы, когда никаких интернетов не было, проекты были более мелкие и выбора "на чем писать" особо не было, можно было велосипеды изобретать хоть годами.

В этом, кстати, и проблема с J2EE - я уверен, что 83% авторов готовых фреймворков думают совершенно не так как я, то бишь неправильно, хаскель не изучали, и вообще делали эти фреймворки по наитию левой задней пятки.

Вот, к примеру: я считаю, что любой, кто сталкивался с статической типизацией и выводом типов, резко перестанет делать проекты "мегапереконфигурируемыми" с помощью сотен xml-конфигов, т.к. это выносит проверку правильности с времени сборки на время деплоймента и запуска. Ошибся в xml-файле в одной букве и вешайся, читай 100-строчные стеки вызовов и это еще хорошо, если у тебя доступ к продакшен-серверу есть.

[identity profile] henu3detb.livejournal.com 2009-12-16 04:41 pm (UTC)(link)
А вы не используйте 83% готовых фреймворков. Возьмите этот, а остальное при острой нудже. Для middle tier-а без наворотов возможно, его одного и хватит.

[identity profile] metaclass.livejournal.com 2009-12-16 04:44 pm (UTC)(link)
Так к нему ж в любом случае понадобится всякий адъ, типа сервлет-контейнеров и прочего.

[identity profile] henu3detb.livejournal.com 2009-12-16 04:54 pm (UTC)(link)
Вот ввел в гугле только что haskell declarative transactions и haskell distributed transactions. В общем если для вас это меньший ад чем настроить за 10 минут сервлет контейнер, то я аргументов больше не имею :)
(И это я еще в ремойтинг и секюриит не вникал:))

[identity profile] metaclass.livejournal.com 2009-12-16 06:09 pm (UTC)(link)
Я не умею за 10 минут настроить сервлет контейнер :)
Мне ж нужно разобраться как его настраивать в произвольных позах, на придурочных серверах удареных на голову клиентов с минимальными усилиями.

[identity profile] henu3detb.livejournal.com 2009-12-16 06:23 pm (UTC)(link)
А не надо спешить. Работать можно начать на настройках по умолчанию, и между делом листать документацию по jetty или tomcat. Еще чем жабба хороша, в Минске полно народу кто с ней работает. И новички и сильно прошаренные. На любой кошелек :) Это вам не делфи с хаскелем спаривать.

[identity profile] metaclass.livejournal.com 2009-12-16 06:28 pm (UTC)(link)
Да, на данный момент я еще ничего не запустил, т.к. мне настройки по умолчанию не подходят.
Пакостная дурь использует несколько разных настроек проксей, одни для мавена, вторые для анта.
Кроме того, у меня нет mysql, а есть postgresql. Firebird там вообще не поддерживается, ну да хрен с ним, все равно он почему-то линуксоидов нервирует и ассоциируется с дельфи :)

[identity profile] veter-r-r.livejournal.com 2009-12-16 10:29 pm (UTC)(link)
*При упоминании слова Jetty немедленно упал в обморок*

[identity profile] metaclass.livejournal.com 2009-12-16 10:32 pm (UTC)(link)
А в чем проблема с jetty?
Я счас глянул документацию - вроде относительно гуманный сервер?

[identity profile] veter-r-r.livejournal.com 2009-12-16 10:43 pm (UTC)(link)
Ну если перегружать элементарную страницу из трех колонок по две минуты -- это гуманно... и стартовать по 25 минут (!!!) на проекте средних размеров...
Я как-то после Апача не могу адаптироваться ну никак. Физически.

[identity profile] henu3detb.livejournal.com 2009-12-16 11:08 pm (UTC)(link)
а томкат на том же проекте стартует быстрее?

[identity profile] veter-r-r.livejournal.com 2009-12-16 11:12 pm (UTC)(link)
А вот не знаю. Томкат на проде, а мне дали девелоперскую копию.
Мое дело вообще там маленькое, стили да скрипты поправить. Просто страшно бесит, отредактировать пару строк в css и ждать потом несколько минут, потому что Jetty уже уснул и пока проснется...

[identity profile] slonopotamus.livejournal.com 2009-12-17 07:17 am (UTC)(link)
ложь и провокация. что блин значит 'уснул'? почему вы думаете что тормозит джетти (а я более чеи уверен что это не он), а не само приложение, которое вы запускаете?

[identity profile] metaclass.livejournal.com 2009-12-17 09:19 am (UTC)(link)
Кстати, тормозящее приложение. У меня как-то оказалось, что при запуске приложение то ли проверяло обновления с сайта, то ли подписи свои, а интернет глючил. Так оно стартовало минут 10, пока я его запросы не перенаправил в дебри, где им мгновенно 404 отвечали :)

[identity profile] henu3detb.livejournal.com 2009-12-17 08:09 am (UTC)(link)
вообще deployment на jetty обычно быстрее чем на томкате. У вас там какой-нибудь хибернейт конфиги свои проверяет, потому и стартует пол года. Дело не в jetty imho.

[identity profile] alexott.livejournal.com 2009-12-20 01:16 pm (UTC)(link)
я использую jetty в качестве основы для compojure (это такой фреймворк на clojure) - все пашет без проблем, рестартую систему очень часто, готова обычно через 2-3 секунды после старта

[identity profile] veter-r-r.livejournal.com 2009-12-20 01:56 pm (UTC)(link)
Ясно. Значит виноваты программисты, которые стыдливо отводят глаза, когда я у них спрашиваю "а че так долго" :)

[identity profile] slonopotamus.livejournal.com 2009-12-17 07:18 am (UTC)(link)
пустой джетти стартует меньше секунды. все остальное время инициализируется ваше приложение, при чем здесь он?

[identity profile] belpartizan.blogspot.com (from livejournal.com) 2009-12-21 08:14 am (UTC)(link)
Видимо у вас какой-нибудь groovy on grails. Потому как чистые java приложения стартую вполне бодро на jetty

[identity profile] volodymir-k.livejournal.com 2009-12-16 09:46 pm (UTC)(link)
Мой совет, человека со стажем, именно в спринге 2 на томкате. Это мейнстрим, хорошая основа, масштаб от 2 до 2000 форм и т.д.

[identity profile] metaclass.livejournal.com 2009-12-16 09:54 pm (UTC)(link)
Это речь о приложениях с веб-интерфейсом?
У меня просто немного отличающаяся задача, веб-сервис и rich-gui-клиент, т.е. веб-интерфейс там вторичен.
Хотя если веб-интерфейс там окажется сделать проще, чем рисовать гуй в клиенте, может это и к лучшему.

[identity profile] henu3detb.livejournal.com 2009-12-17 12:01 pm (UTC)(link)
Если ваш клиент будет на джаве и вам не сильно нужен http для ремоутинга, то http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/remoting.html#remoting-rmi.

[identity profile] volodymir-k.livejournal.com 2009-12-19 01:34 am (UTC)(link)
В парадигме mvc спринг -- это организация контроллера и отделение от view. То есть можно на основе одного ява-контроллера иметь и веб-морду, и soap, и жаваскрипт-аякс-json. Одновременно. Или даже не одну, а много.

Для написания веб-интерфейса там помощи немного. Есть теги, но их не надо использовать. JSTL гораздо лучше.

[identity profile] norguhtar.livejournal.com 2009-12-17 08:46 am (UTC)(link)
К spring не надо, web там вторичен. Если конечно web понадобится то прийдется использовать сервлет-контейнеры. Но по сравнению с J2EE это меньший ад :))