Что должен знать программист java: Чеклист Java-developer’а. Что должен знать разработчик

Содержание

Чеклист Java-developer’а. Что должен знать разработчик

Привет! Сегодня поговорим о пути развития Java-разработчика и о том, что он обязательно должен знать, чтобы быть востребованным. Любой разработчик на собеседовании может “завалить” кандидата на должность. Например, начнет задавать вопросы по специфическим темам, с которыми он сталкивался в текущем проекте. Но не знать все — это нормально. То, что вы не ответите на некоторые вопросы — это тоже нормально. Как правило, у каждого Java-программиста должны быть базовые знания о разработке. Итак, давайте разберем, какие же технологии считаются “базовыми”.

1. Базовые алгоритмы

Первое, за что стоит взяться, начав изучать программирование (касается не только Java), — это разбор основ. Например, алгоритмов. Их существует бесконечное множество, и не стоит убивать целые годы на попытки изучить как можно больше алгоритмов: большинство из них вам не пригодятся. Необходимый минимум знаний можно получить из книги “Грокаем алгоритмы”. Для начала пути этого хватит, но при желании можно подучиться с помощью книги “Структуры и алгоритмы” или “Алгоритмы на Java” Роберта Седжвика и Кевина Уэйна. Также я советую вам подтянуть знания основ информатики. Это можно сделать на JavaRush с помощью курса CS50.

2. Java Syntax

После изучения основ алгоритмов мы должны выучить Java синтаксис. Ведь мы тут все учимся именно на Java-программистов, не так ли? Для этого отлично подойдет курс JavaRush. В процессе выполнения многочисленных задач вы “набьете” руку на Java синтаксисе и будете без особых раздумий писать/читать Java-код, будто это ваш родной язык. JavaRush — это практика, а помимо нее нужно еще и поглядывать в теорию, чтобы понимать, что вы именно делаете. Для этого можно прочесть книги, например одну из следующих:

  • “Head First Java”;
  • “Java для чайников” Барри Бёрд;
  • “Java. Руководство для начинающих” Герберт Шилдт.

После прочтения этих книг можно приниматься за книги посложнее:

  • “Философия Java”, Брюс Экель;
  • “Эффективное программирование”, Джошуа Блох;
  • “Java. Полное руководство”, Герберт Шилдт.

Последние три книги не являются легким чтивом для новичков, но они могут дать крепкие знания в теории Java. Также не нужно забывать о статьях на JavaRush, ведь в них можно найти объяснения на большинство интересующих вас тем. Найти нужную статью можно, вбив в поиске интересующую вас тему:Также настоятельно рекомендую искать вопросы с собеседований по Java, как например, в этой подборке вопросов по абстрактным классам и интерфейсам. Это поможет понять, что именно вам нужно изучить и к каким вопросам быть готовым.

3. Паттерны программирования

Паттерны программирования — это некоторые повторяемые шаблоны, которые представляют собой решение проблемы в рамках часто возникающего контекста.

Среди них есть базовые, простые шаблоны, которые должен знать каждый уважающий себя программист. Чтобы разобраться в этой теме, используйте книгу “Head First. Паттерны проектирования”. Она доступно объяснит базовые паттерны программирования. Но в книге много говорится о Java, поэтому на момент изучения книги необходимо овладеть этим языком программирования. Для большего углубления в паттерны можно также почитать “Приемы объектно-ориентированного проектирования. Паттерны проектирования” от Банды четырёх (Gang of Four: коллектив авторов, в который входят Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес — прим. ред.). После изучения этой темы вы начнете видеть паттерны фактически везде в коде. Обращайте на это внимание, особенно на используемые паттерны в Spring, так как это популярный вопрос на собеседованиях.

4. Парадигмы программирования. Чистота кода

Помимо стандартных шаблонов программирования, существуют различные принципы и парадигмы, которые необходимо знать (SOLID, GRASP). Также необходимо следить за чистотой кода и его читаемостью. Все, что нужно знать по этой теме, есть в книге “Чистый код” Роберта Мартина или взять на вооружение книгу “Идеальный код” Стива Макконнелла.

5. SQL

Следующим пунктом у нас идет изучение языка реляционных баз данных — SQL. Базы данных — это место, где хранится информация (данные) веб-приложения. База данных состоит из множества таблиц (адресная книга в вашем телефоне — самый простой пример подобных таблиц). Подробнее о базах данных можно почитать в этой статье. Для Java-разработчиков зона ответственности — это не только Java-приложение, но и база данных, с которой оно взаимодействует и где хранит данные. В реляционных (самых распространенных) базах данных все взаимодействие происходит через особый язык — Structured Query Language, или SQL. Чтобы разобраться в этой теме, достаточно будет прочитать одну из книг:

  • “Изучаем SQL”, Алан Бьюли;
  • “SQL”, Крис Фиайли;
  • “Head First SQL”, Линн Бейли.

Но ведь практика без теории не работает, не так ли? И на собеседованиях для проверки знаний по SQL часто (чуть ли не всегда) дают одну-две задачки на написание SQL-запроса. Поэтому очень важно отточить свои практические SQL-навыки, чтобы показать себя в хорошем свете. Отличным ресурсом для набивки SQL-практики может стать ресурс sql-ex.ru.

6. MySQL/PostgreSQL

После изучения языка SQL, вам нужно ознакомиться с конкретной реализацией базы данных. В зависимости от базы данных, некоторые команды могут разительно отличаться. Да и разница в возможностях баз данных весьма ощутима. Самые распространенные реляционные базы данных — MySQL и PostgreSQL.MySQL гораздо проще, но при этом у PostgreSQL шире возможности. Для начала достаточно быть знакомым хотя бы с одной из них. Изучать реализации баз данных можно, если использовать навыки по гуглению — находить нужные статьи и обучающие уроки в Youtube. Вы должны набивать руку на правильном поиске интересующих вас вопросов, ведь программист — это человек “с черным поясом” по поиску в Google.

7. Maven/Gradle

Необходимо изучить один из фреймворков Gradle или Maven, которые предназначены для сборки проектов, так как теперь для вас Java — это не только задачки из пары классов, но и язык для написания полноценных приложений. Вы должны понимать, как собирать проект, какие есть этапы сборки, как нужно подгружать необходимые внешние библиотеки с уже готовым кодом и многое другое. Несмотря на то, что Gradle более новый и лаконичный, Maven используется в большинстве случаев. Поэтому уделите особое внимание именно его жизненному циклу сборки.

8. Git

Git — распределенная система управления версиями. Данная технология позволяет разработчикам совместно создавать одно приложение, при этом друг другу не мешая. Конечно, есть и аналоги данной системы управления версиями. Например, Subversion. Но в основном используется именно Git, и нужно уметь работать с ним.Помимо обучающих статей по нему, в Youtube достаточно видео, которые помогут вам шаг за шагом освоить данную технологию. Сперва лучше использовать именно консольный Git, а не какую-нибудь интерфейсную имплементацию, ведь в ней нужно будет все делать через команды. На собеседованиях часто любят спрашивать некоторые команды Git, поэтому рекомендую вам выписывать их и держать где-то под рукой. Также советую вести конспект, в который вы будете отмечать самые важные моменты, чтобы перед собеседованием пройтись по нему и освежить память.

9. JDBC

Данная технология предназначена для обеспечения соединения между вашим Java-приложением и реляционной базой данных. Чтобы ознакомиться с основами, рекомендую прочесть статью JDBC или с чего все начинается. Статей, объясняющих технологию JDBC и предоставляющих элементарные примеры, предостаточно, несмотря на то, что напрямую голый JDBC никто уже и не использует.

10. JPA. Hibernate

JPA — это способ организации соединения между приложением Java и базой данных, так же, как и JDBC. Но при этом JPA — более высокоуровневая технология и, соответственно, более простая в использовании.

Но JPA — это только спецификация (концепция), которая не реализована, и для которой нужна ее конкретная реализация. Таковых реализаций много, но самой самой близкой к идеалам JPA, популярной и развитой, считается Hibernate. В своей карьере разработчика вы не раз столкнетесь с данной технологией. Поэтому помимо знакомства с этой технологией по статьям, возможно, стоит задуматься о прочтении книги о ней, например, — “Java Persistence API”.

11. Spring

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

Новичку же достаточно знать только некоторые из них:

  • Spring Core

Он должен быть у вас на первом месте, чтобы понимать, что такое Spring: что такое Spring контейнер, бины, DI, IoC и так далее. Так сказать, понять саму философию использования Spring. Дальнейшее изучение Spring-фреймворков будет происходить, отталкиваясь от этой базы. Возможно, стоит создать свое небольшое приложение, к которому вы будете понемногу прикручивать новые изученные технологии.

  • Spring JDBC

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

  • Spring Hibernate

Как и в случае с “голым” JDBC, данный фреймворк улучшает использование уже существующей технологии, в данном случае Hibernate. Если рассмотреть использование Hibernate без Spring, вы точно поймете, в чем заключается выгода от использования Spring Hibernate.

  • Spring JPA

Ранее мы говорили о JPA и о том, что это только спецификация, для которой существуют различные реализации. Среди этих реализаций наиболее близок к идеалу Hibernate. У Spring есть собственная идеальная реализация JPA, которая “под капотом” использует Hibernate и максимально приближена к идеалу JPA-спецификаций. Эта технология носит название Spring JPA. К слову она сильно упрощает обращения к базе данных. Можно изучить только JPA без изучения JDBC, Hibernate, Spring JDBC, Spring Hibernate. Но в таком случае ваши знания по соединению с базой данных будут очень поверхностными.

  • Spring MVC

С этой технологией можно отображать веб-интерфейс нашего приложения для пользователей и обеспечивать общение интерфейса с остальной частью приложения. Также технология может работать без отображения, когда есть некоторое приложение, отвечающее за отображение, и вы с этим приложением взаимодействуете с помощью запросов и ответов по RESTful технологии. Чтобы лучше усвоить информацию о Spring, помимо статей, лекций на ютубе, можно прочесть несколько книг. Мне очень зашла книга “Spring в действии” Уоллса Крейга. К сожалению, на русском сейчас есть только третья версия, которая считается устаревшей. Советую прочесть именно 6-ю версию, если вы хорошо знаете английский. Еще одна великолепная книга по Spring — “Spring 5 для профессионалов”. Она более тяжелая для освоения и больше похожа на

библию

справочник по Spring, который лучше держать всегда под рукой, чем прочитать от корки до корки.

  • Spring Boot

Эта технология в разы упрощает использование Spring. Я не просто так вынес ее в конец списка, ведь она скрывает многое под “капотом” и для человека, незнакомого с обычным Spring, многие моменты могут быть не очевидны и непонятны. Сперва для лучшего понимания работы фреймворков Spring стоит использовать обычный Spring, а — потом все высшие блага использования Spring Boot. Также советую ознакомиться со Spring Security и Spring AOP. Но в отличие от технологий, приведенных выше, глубокие познания этих двух сейчас не нужны. Это технологии не для новичков. На собеседованиях джунов о них не спрашивают (разве что один поверхностный вопрос). Почитайте обобщенно, что это за технологии и принципы работы. В этой статье я постоянно упоминал прочтение книг. С одной стороны, это не обязательно. Можно стать программистом, не прочитав ни единой книги, изучив все необходимое по статьям и обучающим видео. С другой стороны, на данный момент на рынке начинающих разработчиков конкуренция высока, что и завышает планку необходимых начальных знаний для новичка. Поэтому чем больше вы будете знать, тем быстрее вы сможете найти свою первую работу, впечатлив интервьюера уровнем своих знаний. Всем спасибо, и да пребудет с вами Java.

Что должен знать Java Software Engineer / Хабр

Есть много разных понятий для человека, который занимается программированием: кодер, разработчик, программист и т. д. Мне же больше по душе такое понятие, как инженер-программист или software engineer, т.к. данное понятие охватывает наибольшее количество тем и направлений, необходимых для разработки. Это лично моё виденье.

Так чем же принципиально software engineer отличается от остальных регалий? Ответ достаточно прост и очевиден — набором знаний о технологиях и большим кругозором в сфере, которой он себя посветил. Кроме того, сталкиваясь с какой-либо проблемой или задачей, он уже понимает какой подход нужен для её решения, или знает, что надо «подтянуть», чтобы быть компетентным в данном вопросе.

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

Цель статьи привести — познакомить читателя с предлагаемым мною набором знаний. Ниже я привожу набор направлений и технологий, которыми должен обладать с теоретической и практической точки зрения software engineer.

Computer science

Информатика является основой всех знаний, которые нужны любому человеку, который занимается IT, независимо от роли. Информатика включает в себя основы многого из того, что я приведу здесь и является неким базисом и фундаментом для дальнейшего построения себя как специалиста IT. Изучая информатику, можно закрыть большинство общих вопросов, возникающих в процессе работы. Начинать свой путь я бы рекомендовал именно с этого направления. Приведу только часть тем, которые охватывает информатика:

  • математические основы

  • математическая логика

  • булева логика

  • информационная безопасность

  • теория основ баз данных

  • теория языков программирования и т.д.

Data structures and algorithms

Знания в области структур данных и алгоритмов являются следующим по значимости. По моему мнению решение любой задачи можно и нужно декомпозировать до мельчайших подзадач. А вот решение их уже сводится к выбору алгоритма и структуры данных. Уверенное владение алгоритмами, способность точно и быстро простроить путь до решения, а также понимание принципов действия структур данных позволит решать поставленные задачи с наименьшими трудозатратами и с наименьшей скоростью выполнения конечной программы.

Алгоритмы…

  • сортировки

  • поиска

  • рекурсия

Структуры данных…

  • массив

  • список

  • дерево

  • хеш-таблица

  • стек

  • очередь

  • куча

  • граф

Design patterns

Шаблоны проектирования являются более высоким уровнем абстракции после структур данных и алгоритмов и представляют собой устоявшиеся подходы к решению общих проблем проектирования системы. Основной плюс знания шаблонов проектирования — возможность общаться с коллегами на одном языке в разрезе подходов к решению той или иной проблемы проектирования. Однако следует понимать, что использование шаблона в коде ради шаблона является worst practice. Здесь необходимо знать:

  • GoF patterns (singleton, prototype, …)

  • J2EE patterns (intercepting filter, context object, …)

  • Architectural pattens (layed pattern, client-server pattern, …)

Software arhitecture styles

Для создания полноценных систем требуется знать и понимать типы построения их архитектуры. Знание стилей архитектуры программного обеспечения даёт возможность посмотреть на систему в целом, увидеть узкие места, определить технологии, которые можно использовать в том или ином узле, а также для из связи. На данный момент существуют следующие стили архитектур:

Service models

Данная тема содержит в себе такие понятия, как «Программное обеспечение как услуга», «Платформа как услуга», «Инфраструктура как услуга». Все они связаны с предоставлением IT-платформы под разрабатываемое ПО. Знание этих моделей позволит принять взвешенное решение при выборе между созданием своей инфраструктуры или покупкой уже имеющейся. Ниже приведены общепринятые модели предоставления таких услуг:

  • IaaS

  • PaaS

  • SaaS

Development principles

Применение принципов разработки в своей практике кодирования позволяет писать чистый код. Стиль написания кода является почерком программиста. Чем он лучше, тем понятней становится. Код пишут один раз, а читают его гораздо больше, поэтому дайте другим возможность понять, что вы имели ввиду в своём коде. Набор общепринятых принципов разработки:

  • SOLID

  • KISS

  • YAGNI

  • DRY

  • TDD

  • DDD

  • BDD

Development methodologies

Методологии разработки являются частью более общего понятия процесса разработки программного обеспечения. Знания в этой области необходимы для понимания общего процесса и набора шагов, которые мы применяем для достижения конечной цели — работающего ПО. Сюда входят:

  • Agile

  • Waterfall

  • Extreme

  • Scrum

  • etc.

Programming paradigms

Знания парадигм программирования помогает в выборе подхода, а иногда и языка программирования для решения задачи. Кроме того, является хорошим тоном какие парадигмы присутствуют в языке, на котором вы пишите и как они там себя проявляют. Основные парадигмы:

APIs

Знание актуальных на данный момент интерфейсов приложений позволит выбрать наилучшее решение взаимодействия компонент системы. Ниже приведен список таких API:

  • REST API

  • gRPC

  • Json API

  • GraphQL

  • SOAP

  • Gateways

  • OpenAPI

  • Swagger

  • HATEOAS

Web technologies

Важно понимать, какие веб-технологии на данным момент актуальны, какие набирают обороты, а какие устарели. К таким технологиям относятся:

  • Web 1.0

  • Web 2.0

  • Web 3.0

Authentication

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

  • OAuth

  • JWT

  • SAML

  • OpenID

TCP/IP & OSI

Знание протоколов и моделей сетевого взаимодействия даёт понимание, как работает «общение» программ под капотом. Здесь не требуется от и до зубрить протоколы, важно понимать уровни, что происходит на них и какие протоколы используются. Ниже приведены основные слои моделей и основные протоколы:

TCP/IP

  • Application layer (HTTP, SMTP, FTP, SSH, …)

  • Transport layer (TCP, UDP)

  • Internet layer (DVMRP, ICMP, IGMP, …)

  • Network access layer (Ethernet, IEEE 802.11 WLAN, …)

OSI

  • Application layer (HTTP, SMTP, FTP, SSH, …)

  • Presentation layer (XDR, AFP, TLS, SSL)

  • Session layer (ISO 8327, RPC, PPTP, L2TP, …)

  • Transport layer (TCP, UDP, SCTP, …)

  • Network layer (IP, ICMP, IGMP, …)

  • Data link layer (Ethernet, PPP, X. 25, …)

  • Physical layer

Servers

Большинство приложений запускаются и работают на серверах. Некоторые из них наиболее простые в применении и использовании, другие требуют специальной подготовки для использования и применяются для запуска больших промышленных приложений. Знать какой сервер использовать в тот или иной момент разработки ПО, а также какой в итоге будет использоваться в «проме», очень важно. Кроме того, важно понимать различия между ними. Основные сервера для Java-приложений:

Operating systems

Операционная системы — неотъемлемая часть работы ПО. Очень важно понимать особенности ОС, на которой ваша система будет работать. Тут важно знать:

Databases

Базы данных представляют собой набор данных, которые хранятся в электронном виде в компьютерной системе и управляются СУБД. Все приложения, которые работают с информацией, и должны каким-то образом её хранить, используют базы данных. Важно понимать разницу между той или иной БД, когда и какую лучше использовать, а также понимать их типы.

Типы БД:

Виды БД:

  • Postgres

  • MySQL

  • Oracle

  • MS SQL

  • Mongo DB

  • Dynamo DB

  • h3

  • HSQLDB

SQL

Язык структурированных запросов применяется для получения требуемого набора данных из БД. Знание SQL необходимо в основном для реализации CRUD операций в своих системах для дальнейшей её обработки и помещения в БД. Весь набор команд SQL делится на основные типы:

  • DDL (create, alter, drop, rename, truncate, comment)

  • DML (select, insert, update, delete, merge, call)

  • DCL (grant, revoke)

  • TCL (commit, rollback, savepoint, set transaction)

  • PL/SQL

IDE

Интегрированная среда разработки является основным инструментов в работе инженера-программиста. Отличное знание своего инструмента даёт большой прирост производительности в написании кода. Например, вместо того, чтобы искать нужный пункт меню, можно нажать сочетание горячих клавиш, что сократит поиск в разы. Основное, что нужно знать по IDE — доступные фичи, вспомогательные инструменты и дополнительные полезные плагины. Самые популярные среды разработки для Java:

  • IntelliJ IDEA

  • Eclipse

  • Netbeans

Control version system

Система контроля версий является неотъемлемой частью командной разработки. Основная её задача — хранение и предоставление истории кодовой базы проекта. В разных компаниях и в разных проектах могут использоваться разные системы контроля версий, поэтому важно иметь представление о нескольких:

  • CVS

  • SVN

  • Mercurial

  • Git

Backend

Здесь я применяю понятие backend, как набор языков программирования и их особенностей для написания серверной части приложения. К таким языкам относятся:

  • Java

  • Kotlin

  • Scala

Frontend

Здесь я применяю понятие frontend, как набор языков программирования, языков разметки и фреймворков для написания клиентской части приложения. К ним относятся:

  • HTML

  • CSS

  • Java Script

  • jQuery

  • Bootstrap

  • Angular

  • React

  • Vue.js

  • etc…

Scripting

Скриптовые языки программирования необходимы для автоматизации процессов, требуемых ручных действий. Очень важно понимать, что можно автоматизировать и ещё важнее понять, какой инструмент для этого лучше применить:

  • Bash

  • Batch

  • Python

Message brokers

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

  • Apacke Kafka

  • RabbitMQ

  • ActiveMQ

Search engines

Поисковые движки необходимы вашей системе тогда, когда требуется быстро найти данные среди большого объема информации. К наиболее популярным относятся:

  • Apache Solr

  • Elacticsearch

  • MeiliSearch

  • Typesense

Containarization

Контейнеризация достаточно зрелая технология для виртуализации на уровне операционной системы. Самый распространенные и удобный инструмент сейчас является Docker.

Orchestration

Оркестровка позволяет упростить управление сложными задачами и процессами. На данный момент самыми популярным инструментами являются:

  • Kubernetes

  • k9s

  • Jenkins

В данной статье я постарался собрать все технологии, которые необходимо знать Java Software Engineer-у. Если что-то упустил или в чём-то был неточен, жду комментарием.

16 вещей, которым должен научиться Java-разработчик в 2023 году | от javinpaul | Стартап

Хотите начать год правильно? Вот ряд тем, которые вы можете решить, чтобы стать лучшим разработчиком Java от Java 17 до Spring 6.0.

Опубликовано в

·

Чтение: 14 мин.

·

2 января 2019 г. ты могли бы сделать лучше.

Это поможет вам определить цели на 2023 год. Как программисту, вашей самой большой задачей является идти в ногу со временем. Технологии меняются очень быстро, и каждый год вы будете видеть новую версию вашего любимого языка программирования и фреймворка.

Для разработчиков Java последние пару лет принесли множество изменений и поставили перед собой задачу обновлять новую версию Java каждые 6 месяцев, Spring 6, Spring Security 6, Spring Boot 3 и т. д.

Когда я начинал в этом году, я думал, что Java 11 — это что-то новое, и прежде чем я смог полностью закончить изучение Java 11, Java 16 и Java 17 уже вышли.

Итак, они появились очень быстро, но в них было много интересных функций, таких как записи, var с локальными переменными, улучшения API, улучшение GC, локальное рукопожатие потока и многое другое. Я задокументировал их здесь, и я очень рад использовать их в 2023 году.

То же самое касается среды Spring и Spring Security, я не знал обо всех изменениях в Spring 5.0 и Spring Security 4.0, мой проект все еще использовал Spring Security 3.1, и теперь у нас есть версия 6.0 для безопасности Spring и Spring.

Моя скорость обучения немного снизилась за последние пару лет, и мне не удается быть в курсе последних и лучших, как будто я еще не освоился с Git, JavaScript-фреймворками, такими как Angular и React, последние изменения в области модульного и интеграционного тестирования, а также новая версия популярной среды, например. Spring, Spring Security и Spring Boot.

Мне удалось наверстать упущенное за последние годы, поэтому 2023 год будет посвящен консолидации и обновлению самого важного с точки зрения технологий, улучшению набора инструментов и изучению ландшафта DevOps

Вот мой список вещей, которые разработчик Java должен изучить в 2023 году:

1. DevOps

Это одна из областей, в которой я вижу большую поддержку в прошлом году, поскольку все больше и больше компаний переходят на DevOps и внедряют непрерывная интеграция и развертывание.

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

Это означает, что если вы опытный Java-программист, увлеченный управлением средой, автоматизацией и улучшением общей структуры, вы можете стать инженером DevOps.

Если вы ищете интересные ресурсы, то Jenkins, From Zero to Hero: Become a DevOps Master Jenkins — отличный курс для начала, особенно для Java-разработчиков.

2. Git

Git и Github существуют некоторое время, и хотя я использовал Git в прошлом с Eclipse, но я еще не стал мастером Git в командной строке.

Почему я до сих пор не освоил Git? Просто потому, что мне это пока не нужно. Иногда я загружал проекты с Github и запускал их из Eclipse, но я все еще не очень хорошо разбираюсь в командах Git, особенно в отмене изменений и обработке ошибок.

Поскольку сейчас большинство компаний переносят свои проекты с SVN, CVS на Git, самое время изучить и освоить Git. Недавно я купил Git Complete: подробное пошаговое руководство по Git у Udemy по их последней распродаже за 10 долларов, и это будет первый предмет, который будет завершен в 2023 году.0005

Если вы находитесь в одной лодке и хотите изучить или улучшить свои навыки работы с Git в 2023 году, обязательно ознакомьтесь с этим курсом от Udemy, он очень удобен.

3. Java 9–18

Как я уже сказал, я все еще изучаю Java 8 и многих разработчиков Java. Я также потрачу некоторое время на изучение новых функций Java 9, Java 10, Java 19 в 2023 году, но для меня Java 8 по-прежнему является приоритетом, пока я не перешел на Java 17, которая является еще одним выпуском LTS.

JDK 9 содержит множество полезных функций с точки зрения модулей, Jigsaw, Reactive Streams, Process API, клиента HTTP2, JShell и улучшений API, таких как методы фабрики коллекций, и я действительно с нетерпением жду возможности изучить их при первой же возможности.

Точно так же JDK 10 предлагает переменную var, чтобы дать вам представление о динамической типизации и некоторых улучшениях GC.

На последней распродаже Udemy за 10 долларов я приобрел множество курсов, и один из них — The Complete Java MasterClass , , который обновлен для Java 11, и я с нетерпением жду начала своего путешествия по Java 11 с этим .

Кстати, если вам еще предстоит начать с JDK 8, то вот мой список любимых руководств и курсов по Java 8, которые вы можете получить бесплатно: 10 лучших руководств для изучения Java 8.

Если вам нужен список курсов для изучения новых функций от Java 9 до Java 18, вы можете просмотреть этот список курсов для изучения новых функций от JDK 9 до JDK 13.

4. Spring Framework 6

Я слышал о некоторых новых функциях, таких как модель реактивного программирования в Spring 6, внедрение последних функций Java, некоторые улучшения модульного тестирования и т. д., но мне еще предстоит попробовать это.

Во всяком случае, я уже начал изучать Spring 6.0, следуя Освойте Spring Boot 3 и Spring Framework 5 с Java и сохраните этот импульс в 2023 году. Если вы используете Spring, возможно, это лучшее время для изучения Spring 6.0.

Если вам нравятся книги, вы также можете ознакомиться со списком передовых книг Spring для разработчиков Java от Manning и Packt_Pub

5.

Модульное тестирование

Еще одна область, которую я хочу улучшить в следующем году. Для Java-программистов доступно множество новых фреймворков и инструментов для модульного и интеграционного тестирования своих приложений, например. Mockito и PowerMock для имитации объектов, Robot Framework и Cucumber для автоматизированного интеграционного тестирования и, конечно же, новая и блестящая библиотека JUnit 5.

На этом фронте есть чему поучиться. Если вы потратите некоторое время на совершенствование своих навыков модульного тестирования, вы не только улучшите свои навыки кодирования, но и станете более профессиональным разработчиком, к чему стремится каждая компания. Для начала вы можете пройти курс JUnit и Mockito Crash Course от Udemy.

6. Веб-служба RESTful

Еще одна вещь, которую я хочу улучшить в 2023 году, — это мои знания о написании REST API и реализации безопасной и масштабируемой веб-службы RESTful на Java с использованием Spring.

Этот навык крайне желателен в мире Java, и не так много людей хорошо знают и Java, и REST.

Если вы находитесь в одной лодке и хотите научиться разрабатывать RESTful Web Service с помощью Spring, REST of Spring MasterClass от Eugen Paraschiv — хорошая отправная точка.

7. Spring Security 6.0

Это третье крупное обновление Spring Eco-System. В 5-й версии популярного фреймворка безопасности есть несколько исправлений ошибок и крупный модуль OAuth 2, который вы просто не можете пропустить.

Это еще один приоритетный пункт для меня в 2023 году наряду с инфраструктурой Spring 6.0.

К счастью, Eugen обновил свой самый продаваемый курс Learn with Spring Security , включив в него функции 5. 0, и добавил отдельный модуль для OAuth 2.0. Возможно, это лучший материал для изучения Spring Security 5.0 на данный момент.

8. Spring Boot 3

Фреймворк Spring Boot также имеет новую версию Spring Boot 2. Если я когда-нибудь достигну всех этих целей в этом году, я потрачу некоторое время на изучение Spring Boot 3.

Если вы также хотите изучить Spring Boot 3, вы можете ознакомиться с этим [НОВЫМ] курсом Master Spring Boot 3 и Spring Framework 6 с Java от Udemy для быстрого старта.

Если вам нужно больше вариантов, вы также можете проверить этот список лучших курсов Spring Boot для разработчиков Java, которые нужно изучить в 2023 году. разрабатывать веб-приложения.

Как разработчик Java я использовал Servlet, JSP и jQuery на стороне клиента, но еще не пробовал свои силы с Angular или React.

В 2023 году одной из моих целей является изучение Angular, и я начну свое путешествие с Udemy Angular — The Complete Guide . Если вы находитесь в одной лодке, то вы также можете взглянуть на этот курс, это очень удобно.

10. Android

Если вы не знаете, как писать приложения для Android в 2023 году, значит, вам чего-то не хватает. Мобильные устройства — одна из лучших платформ для охвата большого количества людей, а Android — вероятно, самая популярная платформа для написания мобильных приложений.

Несмотря на то, что я знаю основы Android, мне еще предстоит публиковать приложения для Android, возможно, 2023 год изменит это. Если вы хотите изучить Android в 2023 году, вы можете проверить The Complete Android N Developer Course , один из лучших курсов для изучения Android.

Если вам нужно больше вариантов, я также выбрал несколько онлайн-курсов по Android, чтобы освежить свои знания и перейти на следующий уровень. Если вы также находитесь в одной лодке, то они также могут оказаться полезными.

11. Apache Spark и Kafka

Еще одна вещь, которую я хочу подробно изучить в 2023 году, — это пространство больших данных и, в частности, среда Apache Spark и Apache Kafka.

Я не уверен, что у меня будет время посмотреть на другие технологии больших данных, но это очень хорошая вещь, и наряду с DevOps и машинным обучением большие данные, вероятно, являются самой популярной технологией на данный момент.

Если вы тоже хотите изучать большие данные в 2023 году, вы можете проверить The Ultimate Hands-On Hadoop — приручите свои большие данные! курс.

Если вам нужно больше вариантов, вы также можете просмотреть мой список отобранных курсов, чтобы изучить Apache Spark для разработчиков Java от Udemy и Pluralsight.

12. Docker и Kubernetes

Вы, наверное, слышали шум вокруг Docker и Kubernetes и их влияние на команды DevOps. Возможно, сначала вы подумали: «Ааа, еще одна новая технология, которую мне нужно изучить», но я скажу, что Docker — это не просто еще одна технология, это действительно меняет правила игры.

Наряду с Kubernetes, это один из самых важных инструментов, который вы можете изучить и который останется с вами на протяжении всей вашей карьеры.

В настоящее время Docker и Kubernetes используются практически каждой командой разработчиков, будь то крупное предприятие или небольшой стартап. Можно с уверенностью сказать, что если вы начинаете работать сейчас, вы, скорее всего, в какой-то момент столкнетесь с Докером.

Короче говоря, независимо от того, являетесь ли вы начинающим разработчиком Java или опытным ветераном с несколькими годами опыта, знание Docker и Kubernetes необходимо для вашего карьерного роста и смены работы.

Если вы уже осознали важность Kubernetes и хотите изучить Kubernetes в 2023 году, тогда Docker and Kubernetes: полное руководство Стивена Грайдера на Udemy — отличный курс для начала.

Если вы предпочитаете бесплатные ресурсы, например бесплатные онлайн-курсы, вы также можете ознакомиться с этим списком бесплатных курсов по Docker и Kubernetes для разработчиков Java, чтобы начать свое путешествие.

13. Микросервисы

Микросервисы — это не что иное, как расширение веб-сервисов RESTful, основной задачей которого является разбейте свой код на небольшие, распределенные и независимые службы для лучшей разработки, развертывания и управления.

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

К счастью, Spring Boot и Spring Cloud упрощают ваши микросервисные приложения, предоставляя общие функции и позволяя вам сосредоточиться на бизнес-логике, абстрагируя детали, необходимые для облачной разработки.

Если вы также хотите изучить Spring Boot 3 и микросервисы в 2023 году, вы также можете проверить это Master Microservices с Spring Boot и Spring Cloud от Udemy для быстрого старта.

Если вам нужно больше вариантов, вы также можете проверить этот список лучших курсов Spring Boot для разработчиков Java, которые нужно изучить в 2023 году.

14. Облачная платформа (AWS, Azure или Google Cloud)

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

Платформы Learning Cloud, такие как Amazon Web Service (AWS), Google Cloud Platform (GCP) или Microsoft Azure, помогут вам на шаг опередить своих конкурентов не только в вашей текущей работе, но и в следующей должности. Вам не нужно изучать их все, и на самом деле изучение одного означает, что вы будете иметь четкое представление о других.

Для начала я предлагаю вам изучить AWS, так как это самая популярная и наиболее зрелая облачная платформа, и существует большой спрос на разработчиков и системных администраторов со знаниями AWS, если вам нужен ресурс, то я рекомендую Сертифицированный архитектор решений AWS — курс Associate 2023 Стефана Маарека. Это не только поможет вам глубже изучить AWS, но и подготовит вас к сертификации AWS.

Если вам нужны бесплатные курсы для изучения AWS в Интернете, вы также можете проверить этот список лучших бесплатных курсов AWS для начинающих.

15. Параллелизм

Параллелизм — это один из навыков, который отличает среднего разработчика от хорошего программиста. Вы должны не только иметь глубокое понимание фундаментальных понятий, таких как Thread , Runnable , блокировка объектов и синхронизация, но вы также должны быть знакомы с такими понятиями, как взаимоблокировка, активная блокировка, условия гонки и способы борьбы с ними.

Вы также должны узнать о продвинутых концепциях Java, таких как синхронизаторы, добавленные в Java 5 и последующую версию, я имею в виду Cyclicbarrier , Countdownlatch , Phaser и По завершении , и т.д., и т.д., и т.д. асинхронная операция в Java.

Я знаю, что это много, и поэтому я предлагаю вам присоединиться к углубленному курсу, такому как Параллелизм в Java на практике, пакет от Хайнца Кабуца, чемпиона Java и авторитета в том, что касается параллелизма и шаблонов проектирования. Этот курс немного дороже, но вы подробно изучите гораздо больше концепций, что делает его полностью стоящим вашего времени и денег.

С другой стороны, если цена является проблемой, вы также можете проверить этот курс Udemy до Efficient Java Multithreading with Executors , который не будет стоить вам больше 10 долларов, если вы купите его на флэш-распродажах Udemy, которые происходят каждый месяц. Это также отличный курс для изучения параллелизма и многопоточности в Java.

16. Проектирование систем

Проектирование систем и архитектура программного обеспечения — это еще одна вещь, которую я предлагаю изучить каждому Java-разработчику в 2023 году, и для этого есть несколько причин.

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

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

Если вам нужен ресурс, я настоятельно рекомендую платформу ByteByteGo от Alex Xu , это одно из лучших мест для изучения системного проектирования. У него много диаграмм, которые позволяют легко понять эти сложные концепции проектирования систем, их плюсы и минусы, вот одна из таких диаграмм

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

Это все о , чему нужно научиться в 2023 году. Как я уже говорил, технологии меняются с большой скоростью, и самая большая проблема для программистов — идти в ногу со временем.

Помимо этого списка, есть много других вещей, которые вы можете изучить в новом году, например, изучение нового языка программирования, такого как Kotlin , но я буду более чем счастлив, если смогу достичь этих целей в 2023 году.

Другое Ресурсы и статьи по программированию You may like

The Java Developer RoadMap 2023
10 книг, которые должен прочитать каждый программист
10 советов по улучшению навыков программирования
10 Принцип объектно-ориентированного проектирования, который должен знать каждый программист
10 Статья s каждый программист Рекомендуем прочитать
10 инструментов, которые должен знать каждый разработчик программного обеспечения
10 Курсы по структуре данных и алгоритмам для программистов
5 Платформы Java и веб-разработки, которые должны изучить программисты
10 Инструменты модульного и интеграционного тестирования для Java-разработчиков

Спасибо, что прочитали эту статью. Если вам нравятся эти инструменты, поделитесь ими с друзьями и коллегами на Facebook. Если у вас есть какие-либо вопросы или отзывы, пожалуйста, напишите об этом.

Желаю вам, ребята, счастливого Нового 2023 года.

И, если вы хотите перевести или опубликовать эту статью в своем блоге, на веб-сайте или в публикации, напишите мне на мой адрес электронной почты [email protected] , я обычно говорю да.

Некоторые другие мои истории, которые вы считаете достойными прочтения

Мои любимые курсы по архитектуре программного обеспечения в 2023 году — Best of Lot

Это лучшие курсы для изучения архитектуры программного обеспечения и становления архитектором решений в 2023 году

medium.com

Мои любимые бесплатные курсы и сертификаты для углубленного изучения структур данных и алгоритмов

Список лучших бесплатных онлайн-курсов по изучению структуры данных и алгоритмов для программистов.

medium.com

Полная дорожная карта DevOps

Иллюстрированное руководство о том, как стать фронтенд- и бэкенд-разработчиком со ссылками на курсы

medium.com

публикация последовала на +405 714 человек.

Контрольный список Java-разработчика. Что должен знать разработчик

Привет! Сегодня мы поговорим о пути роста Java-разработчика и о том, что он должен знать, чтобы быть востребованным. На собеседовании любой разработчик может допросить кандидата на работу. Например, они могут начать задавать вопросы по конкретным темам, с которыми они столкнулись в своем текущем проекте. Но не знать, что все нормально. То, что вы не можете ответить на некоторые вопросы, тоже нормально. Как правило, каждый Java-программист должен иметь базовые знания о разработке программного обеспечения. Итак, давайте посмотрим, что считается «базовым».

1. Базовые алгоритмы

Первое, что нужно сделать, приступая к изучению программирования (не только Java), — ​​это понять основы. Например, алгоритмы. Их бесконечное множество, и не стоит убивать целые годы своей жизни, пытаясь выучить как можно больше алгоритмов: большинство из них вам не пригодятся. Необходимый минимум знаний вы можете получить из книги «Алгоритмы Грокинга». Этого достаточно для начала, но если хотите, можете изучить из книги «Структуры и алгоритмы» или «Алгоритмы в Java» Роберта Седжвика и Кевина Уэйна. Я также рекомендую вам улучшить свои знания в области компьютерных наук. Это можно сделать с курсом Harvard CS50.

2. Синтаксис Java

После изучения основ алгоритмов нам необходимо изучить синтаксис Java. В конце концов, мы все здесь учимся на Java-программистов, верно? Курс CodeGym идеально подходит для этого. Выполняя бесчисленное количество задач, вы освоите синтаксис Java, а затем, не задумываясь, будете писать/читать код Java, как если бы это был ваш родной язык. CodeGym — это практика, но помимо этого, вам также нужно взглянуть на теорию, чтобы понять, что вы делаете. Для этого можно читать книги. Например, одно из следующего:

  • «Главная Java»,
  • «Java для чайников» Барри Берда;
  • «Java: руководство для начинающих» Герберта Шильдта.

После прочтения этих книг вы можете перейти к книгам посложнее:

  • «Thinking in Java», Bruce Eckel;
  • «Эффективная Java» Джошуа Блоха;
  • «Java: полный справочник» Герберта Шильдта.

Последние три книги нелегко читать новичкам, но они обеспечивают прочную основу теории Java. Также не забывайте о статьях CodeGym, так как в них есть пояснения по большинству тем, которые могут вас заинтересовать. Вы можете найти соответствующую статью, набрав интересующую вас тему в строке поиска: Я также настоятельно рекомендую искать вопросы из Java-интервью. Это поможет вам понять, что именно вам нужно выучить и к каким вопросам подготовиться.

3. Шаблоны проектирования

Шаблоны проектирования — это определенные повторяющиеся шаблоны, которые решают проблемы в часто встречающихся контекстах. Они включают в себя базовые, простые шаблоны, которые должен знать каждый уважающий себя программист. Чтобы разобраться в этой теме, возьмите книгу «Шаблоны проектирования Head First». Доступно объясняет основные шаблоны проектирования. Но в книге много говорится о Java, поэтому при чтении этой книги вам также потребуется свободное владение этим языком программирования. Чтобы глубже погрузиться в шаблоны, вы также можете прочитать «Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения» от Gang of Four (9).0367 Примечание редактора: «Банда четырех» — это коллектив авторов, в который входят Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес. ). Изучив эту тему, вы начнете видеть шаблоны практически везде в своем коде. Обратите на это внимание, особенно на шаблоны, используемые в Spring, так как это популярный вопрос на собеседовании.

4. Парадигмы программирования. Чистота кода

Помимо стандартных шаблонов проектирования, существуют различные принципы и парадигмы, о которых следует знать (SOLID, GRASP). Вы также должны содержать свой код в чистоте и удобочитаемости. Для всего, что вам нужно знать об этой теме, см. «Чистый код» Роберта Мартина или ознакомьтесь с «Совершенным кодом» Стива МакКоннелла.

5. SQL

Следующим нашим шагом будет изучение языка реляционных баз данных — SQL. Базы данных — это место, где хранится информация (данные), используемая веб-приложением. База данных состоит из нескольких таблиц (простой пример — адресная книга на вашем телефоне). Разработчики Java несут ответственность не только за приложение Java, но и за базу данных, с которой оно взаимодействует и где оно хранит свои данные. В реляционных базах данных (которые являются наиболее распространенным типом) все взаимодействие происходит через специальный язык, называемый языком структурированных запросов или SQL. Чтобы понять эту тему, все, что вам нужно сделать, это прочитать одну из этих книг:

  • «Изучение SQL» Алана Болье;
  • «SQL» Криса Фехили;
  • «Head First SQL» Линн Бейли.

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

6. MySQL/PostgreSQL

После изучения языка SQL вам необходимо ознакомиться с конкретной реализацией базы данных. В зависимости от базы данных некоторые команды могут существенно различаться. И есть довольно заметные различия в возможностях базы данных. Наиболее распространенными реляционными базами данных являются MySQL и PostgreSQL. MySQL намного проще, но возможности PostgreSQL намного шире. Для начала достаточно быть знакомым хотя бы с одним из них. Вы можете изучать реализации баз данных, если используете свои навыки поиска в Google — найдите соответствующие статьи и учебные пособия на YouTube. Вам нужно будет развивать свою способность создавать правильные поисковые запросы для вопросов, на которые вы хотите получить ответы. В конце концов, программист — это человек с черным поясом по гуглению.

7. Maven/Gradle

Вам необходимо изучить среду Gradle или Maven. Они для сборки проектов, а для вас Java теперь не только для задач с участием пары классов, но и язык для написания полноценных приложений. Вам нужно понимать, как собрать проект, что такое этапы сборки, как загрузить нужные внешние библиотеки со сторонним кодом и многое другое. Несмотря на то, что Gradle новее и лаконичнее, в большинстве случаев используется Maven. Итак, обратите особое внимание на жизненный цикл сборки Maven.

8. Git

Git — это распределенная система контроля версий. Эта технология позволяет разработчикам совместно работать над одним приложением, не мешая друг другу. Конечно, есть и другие системы контроля версий. Например, Subversion. Но Git используется наиболее широко, и вам нужно уметь с ним работать. Помимо множества статей о Git, которые вы можете найти в Интернете, на YouTube более чем достаточно видеороликов, которые помогут вам шаг за шагом освоить эту технологию. Во-первых, лучше использовать Git из командной строки, а не какую-то реализацию с графическим интерфейсом, потому что вам придется делать все с помощью команд. На собеседованиях люди часто любят спрашивать о нескольких командах Git, поэтому я рекомендую вам записать их и хранить где-нибудь рядом. Также рекомендую делать заметки, отмечая самые важные моменты, чтобы пробежаться по ним перед собеседованием и освежить память.

9. JDBC

Эта технология соединяет ваше Java-приложение и реляционную базу данных. Для изучения основ я рекомендую прочитать любое руководство по JDBC. Существует множество статей, которые объясняют JDBC и предоставляют элементарные примеры, хотя никто больше не использует голый JDBC напрямую.

10. JPA. Hibernate

JPA — это способ установить соединение между приложением Java и базой данных, как JDBC. Но в то же время JPA — это технология более высокого уровня и, следовательно, более простая в использовании. Но JPA — это только спецификация, а не реализация. Нужна конкретная реализация. Их существует много, но самым близким к идеалам JPA, самым популярным и наиболее разработанным является Hibernate. Вы столкнетесь с этой технологией не раз в своей карьере разработчика программного обеспечения. Так что, помимо знакомства с этой технологией по чтению статей, возможно, стоит подумать о прочтении книги, например, «Java Persistence API».

11. Spring

Когда вы станете разработчиком Java, Spring больше не будет для вас просто словом. Знание этой среды теперь так же важно, как и знание синтаксиса Java. Можно сказать, что у Spring есть брат и сестра, то есть Java EE. Но Java EE устарела и больше не используется в новых проектах. Подавляющее большинство разработчиков Java в настоящее время являются разработчиками Java-Spring, поэтому знание некоторых основных технологий Spring является обязательным. Spring — это не просто фреймворк, а целая инфраструктура фреймворков: И это всего лишь подмножество фреймворков, которые предоставляет Spring. Для новичка достаточно знать лишь некоторые из них:

  • Spring Core

Вы должны поставить это на первое место, чтобы вы могли понять, что такое Spring — все о контейнерах Spring, bean-компонентах, DI, IoC и так далее. Чтобы понять саму философию использования Spring, так сказать. Дальнейшее изучение фреймворков Spring будет основываться на этой базе. Возможно, вам стоит создать собственное небольшое приложение, в которое вы сможете постепенно включать все новые изученные технологии.

  • Весна JDBC

Ранее мы упоминали JDBC как технологию создания соединения с базой данных. В общем, «голого» использования технологии в проектах больше не встретишь, так что можно сделать вывод, что изучение JDBC не нужно. Это не совсем правильное отношение. Исследуя открытое (прямое) использование JDBC, вы сможете увидеть технологию на более низком уровне и понять ее проблемы и недостатки. Тогда, когда вы начнете изучать Spring JDBC, вы поймете, что именно этот фреймворк улучшает, оптимизирует и скрывает.

  • Spring Hibernate

Аналогично ситуации с голым JDBC, этот фреймворк использует существующую технологию, в данном случае Hibernate. Если вы планируете использовать Hibernate без Spring, вы обязательно осознаете преимущества, которые предлагает Spring Hibernate.

  • Spring JPA

Ранее мы говорили о JPA и упоминали, что это всего лишь спецификация, хотя и имеет различные реализации. Среди этих реализаций ближе всего к идеалу подходит Hibernate. Spring имеет собственную идеальную реализацию JPA, которая использует Hibernate под капотом. Это максимально близко к идеалу спецификации JPA. Он называется Spring JPA. Одним словом, это значительно упрощает доступ к базе данных. Вы можете изучать JPA только без изучения JDBC, Hibernate, Spring JDBC или Spring Hibernate. Но если вы выберете этот подход, ваши знания о том, как подключиться к базе данных, будут очень поверхностными.

  • Spring MVC

Эта технология позволяет отображать веб-интерфейс нашего приложения для пользователей и облегчает связь между интерфейсом и остальной частью приложения. Эту технологию также можно использовать без дисплея, если у вас есть приложение, отвечающее за работу с дисплеем, и вы взаимодействуете с приложением, используя технологию RESTful. Чтобы лучше впитать информацию о Spring, помимо статей и лекций на YouTube, можно прочитать несколько книг. Мне очень понравилась книга Крейга Уоллса «Весна в действии». Советую прочитать 6-ю версию, если хорошо знаете английский. Еще одна замечательная книга о Spring — «Spring 5 для профессионалов». Он более плотный. Больше похоже на справочник, который полезнее держать под рукой, чем читать от корки до корки.

  • Spring Boot

Эта технология значительно упрощает использование Spring. Я не случайно поставил его в конец списка. Действительно, под капотом скрывается многое, и для человека, не знакомого с ванильным Spring, многие моменты могут быть непонятны или непонятны. Во-первых, для лучшего понимания того, как работают фреймворки Spring, следует использовать обычный Spring, а затем воспользоваться всеми более высокими преимуществами использования Spring Boot. Я также рекомендую вам ознакомиться со Spring Security и Spring AOP. Но, в отличие от вышеперечисленных технологий, глубокое знание этих двух пока не требуется. Эта технология не для новичков. На собеседованиях младших разработчиков о них не спросят (кроме, пожалуй, одного поверхностного вопроса).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *