JavaRush /Java блог /Random UA /Java. План дій

Java. План дій

Стаття з групи Random UA
Java.  План дій - 1

Зміст:

  1. Розділ Zero - Java Core
  2. Інструменти
  3. JDK API
  4. Нові можливості Java 8
  5. SQL, бази даних, JDBC
  6. Фреймворки
  7. Бібліотеки та фреймворки для тестування
  8. Сервісні бібліотеки
  9. API-клієнти
  10. Патерни проектування
  11. Додаткові знання
Що повинен знати потенційний Java Junior, щоб отримати першу роботу чи хоча б претендувати на посаду Trainee у добрій компанії? Які інструменти допоможуть Java програмісту вийти на новий рівень? Які технології вивчити, а які залишити на потім? Стандартної відповіді на ці питання немає, як не існує і єдиного плану дій, який би підійшов абсолютно всім. Одні компанії прагнуть розвитку, постійно впроваджують нові технології та тестують можливості нових версій мови, інші вперто тримаються за старі. Є й "серединні" варіанти, і, мабуть, таких найбільше. Тим не менш, ми склали план дій або Roadmap для Java-розробника-початківця. У прагненні зробити його максимально простим, ми вказали лише ті технології та теми, які необхідні переважній більшості"джавістів". Слід пам'ятати, що не все потрібно вивчати досконально (щось із наведеного вдасться освоїти тільки в процесі роботи в команді), але мати загальне уявлення про них не завадить.

0. Розділ Zero - Java Core

Нульовий розділ ми вставабо в статтю про всяк випадок — раптом сюди загляне людина, яка планує вивчати Java і не знає, з чого почати. Java Core - те, що навіть новачок має знати дуже добре. Тобто знати базові речі, орієнтуватися, що пропонує мову на вирішення тієї чи іншої завдання й у найпростіших випадках вміти застосувати ці знання. Попрактикуватися в Java Core можна на JavaRush, і якщо ви цього ще не зробабо — запрошуємо пройти курс ! Ну а решті всіх нагадаємо головні віхи Java Core:
  • Основні конструкції, оператори та типи даних Java
  • ООП та її реалізація в Java
  • Винятки
  • Java Collections
  • Дженеріки
  • Багатопоточність

1. Інструменти

IDE або інтегроване середовище розробки

Головний інструмент сучасного розробника – це IDE. Сьогодні на ринку їх дуже багато, проте у професійній Java-розробці зазвичай фігурують лише два імені. Це побудована на плагінах безкоштовна Eclipse , яка багато років поспіль утримувала пальму першості, та IntelliJ IDEA ., В останні роки активно витісняє Eclipse, і це незважаючи на те, що підписка на потрібну професіоналам Ultimate-версію коштує грошей. Нагадаємо, в курсі JavaRush ми користуємося безкоштовною редакцією Community IntelliJ IDEA, яка має певні функціональні обмеження в порівнянні з Ultimate. Фраза "я знаю IDE" означає, що ви орієнтуєтеся в основних можливостях середовища розробки, вмієте компілювати, запускати, налагоджувати та тестувати файли, рефакторити код. Непоганою підмогою у прискоренні роботи буде освоєння гарячих клавіш. Не полінуйтеся, приділіть кілька годин розбору можливостей IDE, про які ви не знали, і починайте використовувати їх на практиці. І не нехтуйте налагодженням, це дуже корисне вміння. Всі ці дії допоможуть суттєво покращити швидкість та якість вашої роботи.

Інструменти для автоматичного збирання

Сьогодні в Java-проектах найчастіше використовують такі інструменти як Maven та Gradle. Не обов'язково вивчати їх досконально, але буде корисно розібратися, чим вони відрізняються один від одного, на чому засновані, що таке task'і (Gradle) і фази з цілями в Maven. Досить почитати про системи і розгорнути на них пару-трійку невеликих проектів. Зробити це досить просто, а з подробицями розберетеся вже за умов реальної роботи.

Системи контролю версій та сервіси онлайн-хостингу

Система контролю версій - це те, що допомагає програмістам працювати в команді над загальним проектом, не "поламавши" його, синхронізувати розрізнені шматки коду, зроблені різними людьми, відкочувати невдалі оновлення і додавати нові. Найбільш поширеними є дві системи контролю версій. Одна з них – розподілена і називається Git, друга – централізована, на ім'я SVN (вона ж – Subversion). На сьогоднішній день стандартом де-факто є Git. Працювати з цією системою зручніше та легше, вона підтримується всіма IDE (втім, як і SVN). Роботу з Git можна випробувати швидко і просто, добре, що в мережі на цю тему — маса інформації. Наприклад, доступний російською інтерактивний підручник GitHowTo(Проходить дуже швидко). Розробнику-початківцю дуже важливо освоїти сервіси онлайн-хостингу для систем контролю версій. Найчастіше вони базуються на Git та їх називають Git-платформами (хоча деякі з них вміють працювати з різними системами контролю версій). Найпопулярніша з них – GitHub. Також досить поширені BitBucket та GitLab. Ці системи допомагають зберігати і отримувати код, а ще робити те, що вміє Git, тільки не через командний рядок, а через інтерфейс. Також GitHub дозволяє перевіряти код, пропонувати вирішення проблем безпосередньо на сайті. Там же можна знайти якийсь чужий відкритий проект і спробувати запропонувати свої рішення щодо його покращення. По суті, GitHub – своєрідна соціальна мережа для розробників. Так що якщо ви ще цього не зробабо, обов'язково створіть обліковий запис на GitHub і розміщуйте там свої проекти. Також почитайте про GitLab та BitBucket, а якщо буде час – можна і випробувати, вони мають безкоштовні версії. До речі, всі ці платформи повністю інтегровані із сучасними IDE. Java.  План дій - 2

2. JDK API

У цьому розділі виділені ті JDK API, які сучасному Java-розробнику потрібно знати досить упевнено. Програмістові не завадить іноді заглядати у вихідний код цих бібліотек, орієнтуватися в них, розуміти, коли їх потрібно застосовувати і чому. Побічний ефект: якщо ви добре орієнтуєтеся в цих API, швидше за все вам буде набагато простіше успішно пройти співбесіду.

Java Collections Framework

Java Collection Framework - одна з найважливіших API мови Java, її повинен знати кожен розробник. Він є ієрархією інтерфейсів і реалізацій стандартних структур даних в Java, таких як список, пов'язаний список, безліч, стек, черга, хеш-таблиця і багатьох інших. Розробник повинен добре розбиратися в класах ArrayList, HashMap, HashSet, LinkedHashSet, TreeSet та інших, знати про їхні властивості. Зокрема, потрібно розуміти, які витрати за часом і пам'яті у тієї чи іншої колекції йдуть на стандартні операції (індекс, пошук, вставка, видалення) і тому правильно застосовувати їх у своїх проектах. Колекції Java реалізовані дуже добре, але якщо є необхідність розробник може запропонувати власну реалізацію. Програміст, який добре розуміється на колекціях,

Java Concurrency API

Java спочатку розроблена за допомогою паралельного програмування, а починаючи з версії 5.0, мова включає високорівневі API для паралельних потоків. Так що грамотний Java-розробник просто повинен добре розумітися на багатопоточності і мати уявлення про основні API з пакетів java.util.concurrent.* . Як мінімум, потрібно знати та чітко усвідомлювати, що таке Thread, Runnable, блокування об'єктів та синхронізація. Обов'язково розберіться у концепціях deadlock, livelock, стані змагання та що з усім цим робити. Щоб почуватися впевнено, вивчіть синхронізатори з java.util.concurrent.*, наприклад Semaphore, CyclicBarrier, CountDownLatch, Phaser, Exchanger<V>, CompleteableFuture і так далі. А ще – інтерфейси Callable та Future.

Java I/O API

Розробники-початківці часто ігнорують поглиблене вивчення Java I/O і Java Non-blocking I/O . А даремно: ці Java API полегшують роботу з потоками та регулярно використовуються в реальних додатках. Особливо такі класи, як File, InputStream, OutputStream, Reader та Writer із пакета java.io, який є ядром Java IO API. Java Non-blocking I/O (java.nio) є колекцією прикладних програмних інтерфейсів, призначених для реалізації високопродуктивних операцій введення-виведення. До них відносяться, зокрема, ByteBuffer, FileChannel і Selector та інші. Постарайтеся розібратися з цими API, не пошкодуєте.

Пристрій класу Object

Розумієш суперклас Object — у якомусь сенсі стаєш “носієм мови Java”, набагато краще обізнаним про структуру ОВП та багато процесів. Клас java.lang.Object лежить на самій вершині ієрархії класів. Крім кращого розуміння всього, що відбувається, знання методів класу істотно полегшить проходження співбесід - інтерв'юери просто люблять перевіряти кандидатів на міцність за допомогою класу Object та його об'єктів.

3. Нові можливості Java 8

Незважаючи на те, що після виходу Java 8 минув час і вже з'явабося й інші номерні оновлення, саме восьма версія стала знаковою. У ній з'явабося важливі нововведення, які спрощують, а в якомусь сенсі змінюють підходи до програмування на Java. Ви повинні розібратися, як використовувати лямбда-вирази, а також зі Stream API Java 8 і новими API дати і часу.

4. SQL, бази даних, JDBC

Малий Java-розробник не стикається у своїй роботі з SQL-запитами і базами даних. Тому важливо розуміти, що таке SQL та реляційні бази даних, як вони працюють, вміти писати прості запити на join двох таблиць. Для тренування можна спробувати попрацювати з однією із СУБД, наприклад, PostgreSQL або MySQL . Також було б непогано отримати початкові знання про нереляційні бази даних, про підходи noSQL та поверхово ознайомитися з документоорієнтованою СУБД MongoDB . Для роботи з базами даних у чистій Java можна використовувати стандарт JDBCразом із однойменним API. Він реалізований у вигляді пакету java.sql, який входить до JDK. У чистому вигляді сьогодні ним користуються рідко, проте його часто можна зустріти у старих додатках для підтримки, та й в основі сучасніших і загальноприйнятих засобів найчастіше лежить саме цей стандарт.

5. Фреймворки

Серед вимог до Junior Java Developer сьогодні все частіше можна зустріти знання Spring, Hibernate, Spring Boot. Вивчити ці технології самостійно — завдання дуже непросте, проте це можливо, особливо на поверхневому рівні. Глибокіше розуміння прийде під час роботи. Отже.

Spring Framework

Практично кожен додаток, створюваний Java в наші дні використовує Spring Framework. Цей потужний фреймворк надає певну систему координат, кістяк, з якого будується додаток. Spring-додаток набагато простіше тестувати та підтримувати. А все завдяки впровадженню залежностей.

Hibernate

Ще один найважливіший для Java-розробників фреймворк - Hibernate. Він реалізує специфікацію JPA (Java Persistence API), за допомогою якої вирішуються задачі об'єктно-реляційного відображення (ORM). Більшість Java-додатків взаємодіють із базами даних, і, якщо йдеться про реляційні бази даних, працювати з ними без Hibernate незручно. Цей фреймворк надає розробникам ряд важливих функцій, зокрема, кешування та транзакції з коробки, що дозволяє зосередити зусилля на розробці логіки програми і звільняє програміста від безлічі низькорівневих завдань під час роботи з реляційними базами даних. Це значно підвищує продуктивність розробників.

Spring MVC

Цей фреймворк забезпечує розробку програми згідно з патерном Model - View - Controller, застосовуючи слабко пов'язані готові компоненти. Вивчіть цей патерн (про патерни проектування йде трохи нижче) і логіку роботи Spring MVC. Насправді його використовують досить часто.

Spring Boot

При належному вмінні Spring спрощує створення програми Java. У свою чергу Spring Boot спрощує створення Java-програми на основі Spring. Spring Boot дозволяє легко створювати повноцінні Spring-додатки рівня Enterprise, які можна запустити з мінімальними зусиллями: автоконфігурація усуває більшість проблем, пов'язаних з налаштуванням Spring-додатків.

6. Бібліотеки та фреймворки для тестування

Деякі майбутні розробники впевнені, що тестування коду — це турбота зовсім не їх, а спеціальних людей, які так і називаються — тестувальники. Насправді справа не зовсім так. Тестування, особливо модульне (його найчастіше називають unit-тестуванням), дуже важлива навичка для кожного програміста. Мало того, новачкам, які щойно приступабо до виконання обов'язків, досить часто доручають покрити unit-тестами чийсь код. Так що рекомендуємо вивчити бібліотеку JUnit і виростити звичку писати unit-тести для свого коду. Також зверніть увагу на фреймворк Mockito, який можна використовувати разом із JUnit для створення фіктивних класів-залежностей.

7. Сервісні бібліотеки

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

Бібліотеки для логування

Насамперед можна згадати log4j і Slf4j . Ці бібліотеки розроблені для приховування реалізації рутинних операцій з логування подій, що відбуваються під час роботи Java-додатків.

Бібліотеки для JSON

JSON, формат передачі інформації від клієнта до сервера, сьогодні найчастіше використовується. Є кілька хороших бібліотек, які працюють з JSON, найпопулярніші - Jackson та google-gson .

Google Guava

Guava – проект з основними бібліотеками для Java, розробленими Google. Тут можна знайти нові типи колекцій (multimap, multiset та інші), незмінні колекції, графи, функціональні, утиліти для паралелізму, вводу/виводу, хешування, обробки рядків та багато іншого.

Apache Commons

Commons - величезний проект, що містить безліч корисних Java-утиліт найрізноманітнішого призначення. Так, бібліотеки Apache Commons лежать в основі Tomcat, Hibernate та інших великих проектів. Бібліотек в Apache Commons дуже багато. Згадаємо Commons IO, яка спрощує виконання операцій введення-виводу, Commons CSV для роботи з csv-файлуми, Commons Math для роботи зі складними математичними та статистичними операціями та обчисленнями, Commons CLI для аналізу аргументів командного рядка.

8. API-клієнти

REST - стиль іменування ендпоінтів для доступу до ресурсів по мережі в форматі людини. Сучасному Java-розробнику краще орієнтуватися в ідеології REST, а також знати Spring RestTemplate – дуже корисну бібліотеку для створення REST-клієнта.

9. Паттерни проектування

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

10. Додаткові знання

Алгоритми та структури даних

"Алгоритми та структури даних" - це назва цілого курсу, що читається в технічних вузах. У ньому розкриваються теоретичні основи побудови різних структур даних. А на практичних заняттях з ними вчаться працювати — класти та отримувати дані, шукати та сортувати їх. Власне, під “Алгоритмами” у такому словосполученні розуміють саме сортування та пошук. За довгі роки фахівці в галузі Computer Science розробабо безліч алгоритмів. Деякі їх носять навчальний характер, оскільки за відносної простоті реалізації де вони дуже ефективні у роботі. Наприклад, працюють повільно, що може бути відчутно великих пулах даних. Або споживають багато пам'яті. Інші алгоритми виявабося дуже ефективними. Так, що їх внесли до офіційних бібліотек більшості мов програмування. Відповідно, сьогодні не обов'язково розробляти такі алгоритми самостійно. Достатньо знати, де вони лежать. Проте більшість досвідчених розробників рекомендує новачкам проходити "школу алгоритмів" - реалізовувати їх самостійно під час навчання. Це розвиває програмістське мислення. А ще – допомагає проходити співбесіди, там дуже люблять ставити завдання на сортування та пошук.

Сервлети

Сервлет – це спосіб обробки запиту користувача. Їх сьогодні використовують не скрізь і не завжди, але отримати про них уявлення буде корисним.

HTML та CSS

Основи верстки повинні знати усі. Ці знання отримати досить просто, і якщо ви ще цього не зробабо, приділіть цьому заняттю пару днів. Заодно відпочиньте від складніших тем.

XML

Розширювана мова розмітки раніше повсюдно застосовувалася в Java-розробці. Його поступово витісняє JSON, але XML зустрічається сьогодні. Вивчати його нескладно, так що можна приділити цій мові дещицю уваги.

JavaScript

Опитування розробників показують, що навіть ті з них, хто не має жодного відношення до фронтенд-розробки, час від часу писали скрипти на JavaScript. Знання основ цієї мови можна вважати правилом гарного тону, тому не полінуйтеся, почитайте про нього і створіть десяток-другий скриптів. Зайвим не буде.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ