Задать вопрос
@klim76
android/java/sql

С какой стороны подступиться к JAVA EE?

Свалилось на голову ряд задач по серверной java. Решать их кроме как мне пока некому :( Тяп-ляпать по stackoverflow нет желания.
Java core знаю поскольку сам - андроидер. Книжками не гнушаюсь, но выбрать конкретную пока не смог.
Подскажите последовательность изучения, по этапам.
Спасибо
  • Вопрос задан
  • 323 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 2
pi314
@pi314
Президент Солнечной системы и окрестностей
Последовательность изучения по этапам:

Этап первый и решающий, на котором обучаюшийся осознает, что же именно называется JЕЕ (что речь не столько о конкретной версии каких-то бинарников, которые можно загрузить с сайта Оракла, если случайно кликнуть не на ту кнопку, а о стеке спецификаций, для каждой есть, как минимум, несколько имплементаций и т.д.)
и по результатам определяется, с чего будет начинать, в свете свалившихся задачь. Скорее всего, начать придется с того, что такое контейнеры, в частности CDI, и провайдеры, в частности persistence API, он же JPA, он же ORM (что это такое, что называют application server, а что servlet-контейнером, или, грубо, в чем разница между, например, Wildfly и Tomcat, каким боком к ним относится Hybernate и нафига придумали Spring), а также, что такое модули и профайлы. Понимание принципиальной архитектуры JEE, хотя бы поверхностное - основа, без которой любое дальнейшее обучение будет бесполезным бубнением непонятных мантр.

Этап второй, на котором обучающийся выбирает конкретную JЕЕ секту, вступает в нее и переписывает квартиру на имя гуру. Да, да - в JЕЕ все точно, как в жизни. Спецификация одна, но "самых правильных" имплементаций, разумеется, море... С какой-нибудь из них придетя начать (возможно, свалившиеся задачи уже как-то конкретизируют выбор). В любом случае, этап заканчивается загрузкой и установкой (сначала локальной, чтоб потыкать пальчиком, потом на серверах) какого-нибудь сервера/сервлет-контейнера, сервера БД и деплоя и запуска первого HelloWorld JЕЕ приложения по туториалу и с помошью большого количества такой-то матери (ибо придется разбираться с конфигурациями, дескрипторами, правами доступа и прочими настройками, которые все совершенно очевидны, когда уже понял, но похожи на магию, когда наступаешь на них впервые). На этом этапе самый главный вопрос, "почему именно оно заработало".

Этап третий, наиболее драматический, на котором вопрос "а нафига оно вообще все нужно" может довести обучаюшегося до нервного срыва, когда он пытается "по-быстрому" допилить только что заработавший HelloWorld до нужного ему функционала. На этом этапе вспоминаются всякие JMS, JAX-RS, JAAS и прочие непонятные вещи, мелькавшие на первом этапе, ренее "маловажные нюансы" языка, вроде ClassLoader или сериализации, вдруг оказываются ключевыми и т.д. и т.п. Это наиболее важный и долгий этап обучения. Его можно считать пройденным, когда: А. разросшийся до размеров слона с одной ногой и тремя хоботами HelloWorld сносится, т.к. приходит понимание, что в JEE нельзя просто взять и от балды допилить... даже если кажется, что можно, расплата все равно придет. Б. перепробованы разные базы данных, разные имплементации и апдейты каких-то спецификаций, разные IDE и плагины к ним, и все бесполезно - нигде, даже в платных тулзах нет кнопки "сделать все феншуйно", и, наконец, В. обучающийся понимает, что вся эта ЕЕ хрень придумана с одной единственной целью - предотвратить использование сделанного "так, чтоб как-нибудь заработало", оставив только "сделанное правильно". Победить в этой битве, конечно, нельзя, но зато можно долго и интересно бороться разными хаками, эзотерическими фреймворками и вплоть до инструментализации байткода... предела фантазии нет. В этом и заключается суть обучения JEE - понять, как делать правильно, а как - себе дороже.

Следующий этап уже, собственно, к обучению не относится - это практика. На нем выжившие начинают с нуля строить архитектуру приложения, выбирать решения в рамках предлагаемого EE набора технологий, постоянно задумываясь над масштабированием, отказоустойчивостью этих решений и т.д. и т.п. Основная мысль на этом этапе: "блин, как я вообще раньше мог делать по-другому"...
Ответ написан
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Открою один маленький секрет. Для серверной части java J2EE часто вообще не нужен, а в некоторых случаях (если не соврать, то 80% всего) еще и вреден!
J2EE нужен только в следующих случаях:
- когда есть распределенные транзакции,
- когда хочется все в большой контейнер и по взрослому
- когда нам без ынтырпрайза жисть не мила, а servicebus настроена и трудится.

Во всех остальных случаях есть куча альтернатив, как легких, так и не очень.

Так что мой Вам совет, прежде чем погрузиться в этот Ад-EE, сначала взгляните на свой "ряд задач по серверной java" и подумайте, можно ли как-то пройти мимо EE и использовать что-то типа spring/rxjava со товарищи...
Предлагаю обрисовать ваши задачи, а здесь уж подумаем, что и для чего изучать и читать...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы