Вітання! Сьогодні поговоримо про шлях розвитку Java-розробника та про те, що він обов'язково повинен знати, щоб бути затребуваним. Будь-який розробник співбесіди може “завалити” кандидата посаду. Наприклад, почне ставити запитання на специфічні теми, з якими він стикався в поточному проекті. Але не знати все – це нормально. Те, що ви не відповісте на деякі питання, — це теж нормально. Як правило, кожен Java-програміст повинен мати базові знання про розробку. Отже, давайте розберемо, які технології вважаються “базовими”.
Він повинен бути у вас на першому місці, щоб розуміти, що таке Spring: що таке Spring контейнер, біни, DI, IoC і таке інше. Так би мовити, зрозуміти саму філософію використання Spring. Подальше вивчення Spring-фреймворків відбуватиметься, відштовхуючись від цієї бази. Можливо, варто створити свою невелику програму, до якої ви потроху прикручуватимете нові вивчені технології.
Раніше ми говорабо про технологію JDBC як про технологію для створення з'єднання з базою даних. Взагалі "голе" використання технології зараз можна і не зустріти в проектах, тому може здатися, що вивчення JDBC і не потрібно. Але це зовсім так. Розглянувши голе використання JDBC, ви зможете побачити технологію на нижчому рівні, розібратися з її проблемами і недоліками. Почавши вивчати Spring JDBC, ви зрозумієте, що саме цей фреймворк покращує, оптимізує та приховує від наших очей.
Як і у випадку з “голим” JDBC, цей фреймворк покращує використання вже існуючої технології, в даному випадку – Hibernate. Якщо розглянути використання Hibernate без Spring, ви зрозумієте, в чому полягає вигода від використання Spring Hibernate.
Раніше ми говорабо про JPA та про те, що це лише специфікація, для якої існують різні реалізації. Серед цих реалізацій найближчий до ідеалу Hibernate. Spring має власну ідеальну реалізацію JPA, яка “під капотом” використовує Hibernate і максимально наближена до ідеалу JPA-специфікацій. Ця технологія називається Spring JPA. До речі вона сильно полегшує звернення до бази даних. Можна вивчити лише JPA без вивчення JDBC, Hibernate, Spring JDBC, Spring Hibernate. Але в такому випадку ваші знання щодо з'єднання з базою даних будуть дуже поверховими.
З цією технологією можна відображати веб-інтерфейс нашої програми для користувачів та забезпечувати спілкування інтерфейсу з іншою частиною програми. Також технологія може працювати без відображення, коли є деяка програма, що відповідає за відображення, і ви з цією програмою взаємодієте за допомогою запитів та відповідей за RESTful технології. Щоб краще засвоїти інформацію про Spring, окрім статей, лекцій на ютубі, можна прочитати кілька книг. Мені дуже зайшла книга "Spring у дії" Уоллса Крейга. На жаль, російською зараз є тільки третя версія, яка вважається застарілою. Раджу прочитати саме 6 версію, якщо ви добре знаєте англійську. Ще одна чудова книга по Spring - "Spring 5 для професіоналів". Вона важча для освоєння і більше схожа на бібліюдовідник по Spring, який краще тримати завжди під рукою, ніж прочитати від кірки до кірки.
Ця технологія в рази полегшує використання Spring. Я не просто так виніс її в кінець списку, адже вона приховує багато під "капотом" і для людини, незнайомої зі звичайним Spring, багато моментів може бути не очевидним і незрозумілим. Спершу для кращого розуміння роботи фреймворків Spring варто використовувати звичайний Spring, а потім всі вищі блага використання Spring Boot. Також раджу ознайомитися зі Spring Security та Spring AOP. Але на відміну від технологій, наведених вище, глибокі знання цих двох зараз не потрібні. Це технології не для новачків. На співбесідах джунів про них не запитують (хіба що одне поверхове питання). Почитайте узагальнено, що це за технології та принципи роботи. У цій статті я постійно згадував прочитання книг. З одного боку це не обов'язково. Можна стати програмістом, не прочитавши жодної книги, вивчивши все необхідне за статтями та навчальним відео. З іншого боку, на даний момент на ринку розробників-початківців конкуренція висока, що і завищує планку необхідних початкових знань для новачка. Тому чим більше ви знатимете, тим швидше ви зможете знайти свою першу роботу, вразивши інтерв'юера рівнем своїх знань. Всім дякую, і нехай буде з вамиJava .
1. Базові алгоритми
Перше, за що варто взятися, почавши вивчати програмування (стосується не тільки Java), це розбір основ. Наприклад, алгоритми. Їх існує безліч, і не варто вбивати цілі роки на спроби вивчити якомога більше алгоритмів: більшість з них вам не знадобляться. Необхідний мінімум знань можна отримати з книги " Грозуємо алгоритми ". Для початку шляху цього вистачить, але за бажання можна навчитися за допомогою книги " Структури та алгоритми " або "Алгоритми на Java" Роберта Седжвіка та Кевіна Уейна. Також я раджу вам підтягнути знання засад інформатики. Це можна зробити на JavaRush за допомогою курсу CS50 .2. Java Syntax
Після вивчення основ алгоритмів ми повинні вивчити синтаксис Java. Адже ми тут все вчимося саме на Java-програмістів, чи не так? Для цього чудово підійде курс JavaRush. У процесі виконання численних завдань ви "наб'єте" руку на Java синтаксисі і будете без особливих роздумів писати/читати Java-код, ніби це ваша рідна мова. JavaRush - це практика, а крім неї потрібно ще й поглядати в теорію, щоб розуміти, що саме ви робите. Для цього можна прочитати книги, наприклад, одну з наступних:- " Head First Java ";
- "Java для чайників" Баррі Берд;
- “Java. Посібник для початківців” Герберт Шілдт.
- "Філософія Java", Брюс Екель;
- "Ефективне програмування", Джошуа Блох;
- “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", Лінн Бейлі.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ