Girl in IT-wolrd

Everything has been downloaded. Quit download loop.

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

 Стаття взята з dou.ua

Пособие для будущего 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 разработчика. Собеседование и карьера.

Leave a comment