×

Пособие для будущего Java разработчика. Enterprise — часть 2

— Ну и корыто!
— Это «корыто» делает 0,5 сверх скорости света! Может, оно и выглядит не ахти, но не это главное, парень. Я собственноручно его доводил.

«Звездные войны. Эпизод IV. Новая надежда»

Продолжаем рассматривать средний по больнице стек технологий, которой в большинстве случаев бывает нужен junior/middle Java разработчику. Первая часть по Enterprise — здесь.

Во второй и третей части я буду рассматривать три слоя архитектуры:
1. Database Tier.
2. Business Tier.
3. Presentation Tier.

Идем от первого к третьему. Из-за глубины темы Services будет вынесена в отдельную подглаву в 3-ей части.

Database Tier

SQL

Для хорошо интродакшена в Databases я рекомендую курс Ильи Тетерина «Базы Данных» за 2012 год. Если лень смотреть весь курс, просмотрите хотя бы первые две-три лекции, где он дает внятную терминологию по базам данным, приводит примеры из реального мира (как словарь или телефонная книга).

Для быстрого погружения в практику начните с «Изучаем SQL» от Линн Бейли:

Установите MySQL и прорабатывайте пример за примером вместе с автором. После того, как пройдете книгу, must have иметь вот эту картинку если не в голове, то хотя бы распечатанную у себя на столе:

Мало собеседований проходит без традиционного вопроса: «Приведи мне пример Inner Join». Да, я понимаю, что вы только один-два раза в год сталкиваетесь с этим на проекте, но знать это надо, как таблицу умножения. То же самое касается One-to-One, Many-to-Many. Все это поверхностно описано в названной книге.

И, конечно, не возможно не упомянуть Стэндфордский курс «Introduction To Databases». Кстати, если вы ищите книгу наподобие справочника, обратите внимание на SQL (Database Programming) by Chris Fehily:

Oracle

Часто в вакансиях всплывает Oracle и PL/SQL, так давайте рассмотрим главные ресурсы. Можно взять оракловский гид «Database Concepts» как грамотный вводный курс в архитектуру Oracle DB. После этого полистайте «Database Administration Guide». Обратите внимание, я дал вам 11-ую версию — постарайтесь ознакомиться с ней. А по 12-ой можно прочитать следующие две книги:

— «Oracle Database 12c. The Complete Reference» by Kevin Loney:

— «PL/SQL Programming» by Steven Feuerstein:

Как альтернатива последней — «Oracle Press: Oracle Database PL/SQL Programming» by Michael McLaughlin.

NoSQL

Тема модная и, наверное, самая подходящая книга, которая позволит вам с высоты птичьего полета получить представление о современных базах данных, — это Эрик Редмонд, «Семь баз данных за семь недель». В ней рассмотрены следующие БД: PostgreSQL, Riak, HBase, MongoDB, CouchDB, Neo4J, Redis.

Начиная изучать тему NoSQL, обязательно просмотрите выступление Introduction to NoSQL by Martin Fowler.

Из-за многообразия новомодных БД возникает логичный вопрос: а какую NoSQL базу выбрать как основную для обучения? Можно просто включить дурачка и выбрать ту, которая пришлась по душе. Можно прошерстить раздел «Работа для джавистов на DOU» и обратить внимание на то, что сейчас является релевантным.

В качестве примера разберем MongoDB. MongoDB Inc. делали не глупые ребята, которые уделили пристальное внимание докам. Это одна из немногих документаций которую можно читать как книгу. Также обратите внимание на родные курсы MongoDB for Java Developers.

На стороне можно почитать «MongoDB: The Definitive Guide» by Kristina Chodorow:

Я лично читал «MongoDB in Action», но рекомендовать не буду, так как 1 декабря этого года ожидается новое издание. А тот, кто имеет платную подписку от Manning, может получить еще и Early Access к книге.

Hibernate

(для consistency я поместил Hibenate в Database Tier — прим. автора)

Перед тем, как изучать Hibernate, ознакомьтесь c базой: Java Persistence API. Кстати, есть неплохая статья, которая рассказывает о нововведениях в JPA 2.1.

Плавно спускаемся к самому хиберу. Самый прекрасный курс, который наглядно объясняет весь хаос вокруг — это Java Brains: Hibernate.

Ну а потом можно взяться за официальную документацию.

Из книг обратите внимание на «Java Persistence with Hibernate» by Christian Bauer:

Как вариант, есть еще «Just Hibernate» by Madhusudhan Konda (ох и имя! — прим. автора):

В общем, достаточно JavaBrains и официальной документации. Набираем полные груди воздуха, пауза, выдыхаем... Пришло время перепрыгнуть в Business Tier.

Business Tier

Spring

Вау! А я изначально всего лишь хотел рассказать о Spring, а не плодить 7 статей разного содержания по понедельникам в течение двух месяцев. :) Ну да ладно.

Вообще абсолютно все фреймворки от Spring очень тщательно задокументированы. Их javadoc — это лучшее, что мне довелось видеть после JDK.

Если вы уже имеете представление о том, что из себя представляет Spring, — смело зубрите превосходный reference.

Если понимания нет или вы полный ноль в DI/IoC — обратите внимание на Java Brains: Learning Spring Core. Есть еще достаточно подробный курс от John Purcell на Udemy За 28 часов вам разжуют основы + mvc + database.

Что вообще нужно понимать в Spring Сore? Я бы выделил основные моменты:

  1. Иметь внятное представление о Dependency Injection/Inversion Of Control. Это сердце всего спринга, краеугольное понимание того, зачем это всё нужно;
  2. Знать, что из себя представляет container, что такое бины, жизненный цикл, scopes;
  3. Уметь работать как с XML инициализацией, так и через аннотации;
  4. Разобраться с валидацией, ресурсами, базовым пониманием SpEL.

Из книг можно обратить внимание на «Spring In Action» от Craig Walls. Все достаточно поверхностно, формат изложения очень похож на уже названный курс от Udemy:

Из книг формата Best Practices на Spring — интересная книга «Spring Recipes: A Problem-Solution Approach» by Daniel Rubio:

AspectJ и сам AOP в Spring уже описан в официальной документации от Spring. Добавлю книгу «AspectJ in Action: Enterprise AOP with Spring Applications» by Ramnivas Laddad:

Spring Data

Есть прекрасная статья, которая описывает проблемы и недостатки JPA/Hibernate. Как одну из альтернатив здесь рассматривают Spring JDBC Template.

Курс «JavaBrains: Data Access in Spring» рассказывает основы Spring JDBC и рассматривает интеграцию c Hibernate. Этим курсом можно связать Spring и Hibernate вместе. Следовательно, после этого уже можно изучать раздел Spring Data из официального референса.

Для того, чтобы наработать связку с другими материалами этой статьи, обратите внимание на «Spring Data» by Mark Pollack:

Тут вам работа спринга и с JPA, и с JDBC. Также уделено внимание интеграции Spring с MongoDB, Neo4J, Redis. Пятый и шестой раздел книг я бы пропустил, если Big Data не ваш прямой профиль.

Spring Boot

Я считаю Spring Boot идеальным решением для новичка. Этот инструмент буквально создан для того, чтобы на лету создать Spring application без длительного погружения в детали.

Официальная документация на высоте — обязательно прочитайте.

Маленькие практические шаги:

  1. Создать простенький REST сервис, который мапится на определенную URL и возвращает какой-то helloworld;
  2. Подключить embedded tomcat;
  3. Использовать @SpringBootApplication в проекте;
  4. Работать с properties через YAML;
  5. Написать примитивное DAO через Repository в контексте JPA.

Осенью этого года выйдет книга «Spring Boot In Action» от Craig Walls, но есть ли в этом смысл? Spring Boot достаточно просто решение, чтобы тратить на него много времени.

Spring Integration

Перед тем, как ознакомиться с Spring Integartion, нужно держать в уме возможные интеграционные паттерны. Для этого есть фундаментальный труд 2003 года от Gregor Hophe «Enterprise Integration Patterns». Кстати, русский вариант книги мне не понравился.

Уже затем читать официальную документацию.

И на десерт очень классная книга «Spring Integration in Action» by Mark Fisher:

Можно было бы осветить еще Spring Batch, Roo, Security, но лучше оставить это для тех, кто использует их непосредственно в проектах.

JMS

Раз уже задели messaging в Spring Integration, давайте заодно рассмотрим JMS. Уловив такие понятия, как «subscriber-pusblisher» и «point-2-point», можно уже в целом иметь представление о том, как построен Java Message Service. Официальная документация здесь.

Из популярных решений значится ActiveMQ. Прочитав хорошую книгу «Java Message Service» by Mark Richards, вы убьете из базуки много зайцев: прикоснётесь к архитектуре JMS, познакомитесь с ActiveMQ, Spring JMS и т.д.. Но: увы, это все актуально к JMS 1.1, а на дворе уже два года как 2.0. Хотя, на самом деле это сути не меняет — книга, однозначно, полезная.

EJB

Внимание! Если вы до сих пор используете EJB 2-ой версии (если такие есть, отпишитесь в комментариях, я хочу увидеть вас в живую) — книга «Head First EJB» by Kathy Sierra может стать идеальным руководством для изучения:

Книги от Kathy Sierra сами по себе очень крутые. Стоит только ее книгу по сертификации вспомнить — SCJP 6! Это же уровень!

На самом деле, к сожалению, EJB 2 — это полный хлам. Сделали ли в третей версии разработчики из нее конфетку, решать вам, но разница в любом случае на лицо. Официальная спецификация по EJB 3.

Если спецификация тяжело дается, начните с книги «Beginning EJB 3, Java EE» by Jonathatn Wetherbee:

Далее, можно взять EJB in Action by Debu Panda.

Если вас заинтересовало POJO, есть очень хорошая книга «POJOs in Action: Developing Enterprise Applcations with Lightweight Frameworks» by Chris Richardson:

Заключение

Мы познакомились с Database и Business tier. В 3-ей части рассмотрим Presentation Layer, туда будет входить неосвещенные здесь Servlets/JSP и Spring MVC, а также Services и Application servers.

Прошу прощения за такой огромный объем, но поверьте — это даже не половина из всего числа всевозможных фреймворков, а только основные. По поводу того, что возможно кто-то приуныл и испытывает панические атаки от такого количества материала, я бы хотел сказать следующее: все книги, которые предоставлены в каждой статье цикла — это лишь глубина вашего саморазвития как Java программиста. Кому-то достаточно 2-3 книг для того, чтобы устроиться, а кому-то нужно пройти полный путь джедая, чтобы стать ближе к senior погонам в СНГ. Все относительно.

В 3-ей части я представлю RoadMap для джуниора и миддла с вариантами изучения и набором стэка, который необходим для максимально быстрого профессионального роста.

Спасибо за внимание! Удачи.


Предыдущие части цикла:
— Пособие для будущего Java разработчика. Основы Java.
— Пособие для будущего Java разработчика. Элегантный код.
— Пособие для будущего Java разработчика. Enterprise — часть 1.


Следующие части цикла:
— Пособие для будущего Java разработчика. Enterprise — часть 3.
— Пособие для будущего Java разработчика. Новые горизонты.
— Пособие для будущего Java разработчика. Собеседование и карьера.

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному2
LinkedIn

Схожі статті




30 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.
Мало собеседований проходит без традиционного вопроса: «Приведи мне пример Inner Join». Да, я понимаю, что вы только один-два раза в год сталкиваетесь с этим на проекте, но знать это надо, как таблицу умножения.

Т.е. по вашим же словам это нужно знать только для прохождения совершенно оторванных от практики собеседований и больше ни для чего?

А посему Ваше сравнение некорректно. Не знаю кому как но табличка умножения лично мне нужна буквально каждый день, даже несмотря на наличие калькуляторов, компьютеров, мобильных и всех этих ваших интернетов. В отличии от джоинов сикуля, которые гуглятся буквально за минуту, если уш вдруг внезапно возникнет такая надобность.

Не понимаю как моя цитата связана с вашим вопросом.

Перефразирую: Inner Join-ы, возможно, не будут вам так встречаться, как вам бы хотелось, но знать это надо, так как это очень важно. Помните, что JOIN-ы очень часто спрашивают на собеседованиях.

Так лучше?

У нас с Вами разное понимание важности. Отсюда и непонимание. По моему скромному мнению важно то что приходится использовать каждый день, поэтому неплохо бы это держать в оперативной памяти чтобы не тратить время на гугление. А если джоины используются чуть менее чем два раза в год на реальных проектах, то из этого как бы совершенно естественно и логически вытекает что они чуть менее важны. Или Вы не согласны с этим? А то что всех интервьюеров на технические собесы по сыкулю готовил один и тот же чел по одной и той же своей методичке, оторванной от реальности — так это беда. Это были не Вы случайно?

Перефразирую: Inner Join-ы, возможно, не будут вам так встречаться, как вам бы хотелось, но знать это надо, так как это очень важно. Помните, что JOIN-ы очень часто спрашивают на собеседованиях.
но знать это надо, так как это очень важно
это очень важно

Специально для вас. Еще раз. Не тратье мое и свое время.

Вы можете повторять «халва» по надцать раз кряду но во рту от этого слаще не станет.

Ссылка на

оракловский гид «Database Concepts»
не работает.
Замените на docs.oracle.com/...server.112/e40540/toc.htm
“POJOs in Action: Developing Enterprise Applcations with Lightweight Frameworks”
 — прекрасная книга!

В свое время посоветовали книгу High Performance MySQL, 3rd Edition — tech-ebooks.info/...ormance_mysql_3rd_edition. Книга прокачивает понимание как тюнить MySQL Joins и всякие полезные вещи на MySQL. В соавторах чувак, который вроде как учился в КПИ ^_^

По ORACLE, уже есть книга легендарного Тома Кайта — tech-ebooks.info/..._architecture_3rd_edition, который разбирает ORACLE «по косточкам» просто. Объем овер 800 страниц, сложно дойти до ее конца, но оно этого стоит! ))

Раз пошла тема по Enterprise, то могу посоветовать Building Microservices: tech-ebooks.info/...ls/building_microservices
Лаконичная, очень вправляет мозги в области Microservices

Отличная серия статей! Очень помогает таким ’’нубам’’, как Я) Автору большой +

Такое ощущение, что к-во литературы которое необходимо прочитать начинающему разработчику в скором времени перевалит некий психологический предел (если уже не перевалил). Все идет к тому что люди будут специализироваться на конкретной технологии, (внутри конкретной технологии)... А ваше пособие все больше будет походить на пособие Java архитектора, а не разработчика.

Ошибаетесь, процентов 70 этих книг я прочитал и эти знания мне пригодились для автоматизации тестерования крупного интерпрайз проэкта, не говоря уже о разработке. Хотя конечно кроме ejb. Это пока нигде не пригодилось

Отличное и информативное пособие. Такой подборки книг с кратким описание и авторитетным фидбеком очень не хватало пару лет назад, когда начинал изучать Java. Огромное количество инструментов, различные версии, стремительно развитие и динамическое изменение стэка технологий очень поднимает входной порог. Ваши статьи помогают разобраться в современных тенденциях и не тратить время на изучение ненужных вещей. Большое спасибо, буду рекомендовать почитать всем знакомым начинающим разработчикам.

В следующей статье напишите, пожалуйста, о логгерах — какие сейчас лучше использовать. Можна ещё о парсерах рассказать.

Spring Boot — одно из худших решений для новичка. Смысл Spring Boot как раз в том, чтобы спрятать все «кишки» от программиста. Но если ты не понимаешь как оно внутри работает, то работать со всем этим ты будешь как обезьяна — вот как-то автомагически пришел реквест, вот он как-то автомагически замапился на респонс. А внутри у него неонка, как работает — можно не разбираться. Зачем нужны такие новички, которые работают с магией?

Вы же когда выводите строчку «hello world!» на экран на первых уроках, не задумываетесь о I/O API?

Если я сижу на курсах «стань синьором за 21 день», то, конечно, не задумываюсь. А так вообще в рамках computer science объясняют хотя бы примерно, как там байтики внутри бегают и что вообще происходит.

Я с вами не согласен. Во-первых, документация по Spring Boot часто отсылает вас на сам Spring Framework, поэтому при большом желании можно из обезьяны превратится в человека с прямыми руками. Во-вторых, время поднятия Spring Boot гораздо меньше чем предполагаемый стек проекта на Spring но без Boot. В-третьих, javadoc Spring Boot настолько информативны, что вы сразу поймете как автоматически пришел ваш респонс и как он автоматически замапился.

Если самому поднять тот же стек, то хотя бы примерно поймешь, как спринг работает, как он конфигурируется. Иначе — тупо магия.

А еще удобно когда ты понимаешь как развернуть все самому, но впадлу прописывать все конфиги и тд для того, что бы попробовать какую то штуку.
Например надо попробовать как работает и что может Spring Data Rest. И вместо того что бы тратить пол часа на все настройки, делаешь за 2 минуты Boot проект и занимаешься уже непосредственно тем чем хотел.

Да, согласен, в таких случаях Spring Boot удобнее. Да и то все равно я бы лучше сам прописал конфиги — что-то мне кажется, там меньше, чем на полчаса работы.

Цікаво би подібне по .NET побачити

Спасибо за статью, нашел пару интересных книг. И отдельное спасибо за картинку с SQL)

Ок, перечитаю все эти книги на досуге.

Отличное пособие. Жду с нетерпением RoadMap, а то в этом обилии технологий/книг/курсов можно легко потеряться, потратить кучу времени и не пройти собеседование(на jun/mid/sin)

По поводу того, что возможно кто-то приуныл и испытывает панические атаки от такого количества материала
Да это еще слабо сказано, лол. Но спасибо большое за ваш труд, с нетерпением жду следующей части!
«Spring In Action» от Craig Wells
Есть уже 4 издание на англ. И 3е на русском.

Спасибо!
Я бы добавил отличную книгу по Java EE shop.oreilly.com/product/0636920030614.do

Підписатись на коментарі