Розробка на Java — з чого почати знайомство з мовою

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

У межах рубрики «Код професії» розповідаємо, як вивчити Java та знайти першу роботу. Для цього ми поспілкувалися з досвідченими розробниками Богданом Чупікою, Олександром Навкою і Андрієм Петриком і зібрали їхні поради в один матеріал.

Що таке Java

Java — це мова програмування загального призначення, створена компанією Sun Microsystems 1995 року. Її використовують для розробки програмного забезпечення, вебсервісів, ігор і застосунків.

Java є однією з найпопулярніших мов програмування у світі завдяки нескладному синтаксису, гнучкості, безпеці, портативності та масштабованості.

Згідно з рейтингом мов програмування DOU, Java — третя за популярністю мова серед українських розробників. 14,3% айтівців писали нею станом на початок 2022 року.

Серед Back-end розробників Java є беззаперечним лідером — її використовують 29,4% розробників у цій сфері.

Наразі медіанна зарплата Java-розробника рівня Middle становить $2800. Зарплата Trainee варіюється у діапазоні $348–609, Junior отримує від $810 до $1340, а спеціалісти рівня Senior $4335–6000.

Тут можна переглянути вакансії у категорії Java. На момент публікації статті відкрито 132 позиції.

Java підходить для початківців, оскільки існує значна кількість навчальних матеріалів, велика спільнота, мова продовжує розвиватись. Крім того, вона не втратить актуальність ще тривалий час, оскільки безліч застосунків не тільки написані на Java, а й підвʼязані під платформу для запуску Java Virtual Machine (JVM) і набір для розробки Java Development Kit (JDK).

Переваги Java:

  • популярна на ринку праці;
  • має велике ком’юніті;
  • розвинена екосистема;
  • об’єктноорієнтована і суворо типізована мова, а отже, не складна у вивченні;
  • перевірена часом.

Водночас Java має і низку недоліків:

  • є популярною лише у бекенд-розробці;
  • синтаксис мови є багатослівним і несучасним;
  • Java потужна завдяки своїм фреймворкам і бібліотекам, які також потрібно вчити;
  • велика кількість проєктів використовує стару версію мови.

З чого почати та які технології вчити

Вчитись потрібно щодня хоча б по 1–2 години. Навчання вимагає концентрації, тож варто облаштувати робочу зону так, щоб ніхто не заважав.

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

Для початку потрібно встановити на комп’ютер ПЗ для розробки та запуску програм, а саме JDK (Java Development Kit) і одну з IDE (Integrated Development Environment).

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

Розпочніть з таких книг:

  • «Філософія Java», Брюс Еккель. Книжку вже багато разів перевидавали, вона вважається класикою. Допоможе зрозуміти, як влаштована Java і в чому її концептуальні відмінності від інших мов.
  • «Java. Бібліотека професіонала», Кей Хорстман. Цей підручник з основ програмування на Java дасть вичерпне уявлення про синтаксис мови, методи обʼєктноорієнтованого програмування тощо. Початківцям краще зосередитись на першому томі.
  • «Java. Повний посібник», Герберт Шилдт. Книжки цього автора продаються мільйонними накладами. Один із секретів популярності — простий і зрозумілий стиль викладу. Синтаксис, ключові слова, елементи ООП, бібліотеки класів — все це буде зрозуміло навіть початківцю, адже книжка розрахована на широке коло читачів.
  • «Head First. Java», Кетті Сьєрра, Берт Бейтс. Це вичерпний навчальний посібник, який допоможе опанувати основи мови, загальну інформацію про роботу з потоками, мережевою взаємодією та розподіленим програмуванням. Також навчить створювати гру Sink The Dot Com і барабанний музичний чат.

Найпопулярніший фреймворк, який обовʼязково має знати джавіст, — це Spring Boot. Крім цього, під час навчання ви зіткнетеся з тим, що потрібно буде розібратися з системами контролю версій (Git), а також інструментами для збірки проєкту (Maven або Gradle). Для майбутнього працевлаштування стане перевагою, якщо ви вмітимете працювати з Docker.

Також під час пошуку роботи в пригоді стануть ґрунтовні знання Java Core, навички роботи з базами даних (SQL, Hibernate) та розуміння того, як працює Web (HTTP, REST, Client Server Architecture).

Радимо під час навчання користуватися цією roadmap.

Всю теорію потрібно паралельно підкріплювати практикою. Є застосунки і сайти із завданнями, що допоможуть крок за кроком освоїти мову. Якщо вам щось не вдається, а поруч немає досвідченого ментора, запитайте поради на різних форумах.

Розвʼязуйте алгоритмічні задачі на Codewars або LeetCode. Також практикуватись у кодингу можна на Edabit.

Наприкінці навчання бажано зробити невеликий пет-проєкт на Spring Boot, щоб продемонструвати свої вміння на майбутній співбесіді.

Чи є потреба в курсах

Андрій Петрик

Усе залежить від того, хто вчить. Жодні курси нічого не гарантують (і це не про їхню якість). Проте якщо все ж обирати курси, то варто спробувати потрапити на ті, які організовують ІТ-компанії (SoftServe, EPAM, Avenga тощо).

Богдан Чупіка

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

Олександр Навка

Мову можна опанувати повністю самостійно, оскільки матеріалів в інтернеті безліч. Принаймні почати вивчення варто самостійно, оскільки можна легко скласти план навчання і йти по нього в тому темпі, який буде для вас комфортним. Якщо під час цього ви зіткнетеся з проблемами, які ніяк не зможете розвʼязати, можна піти на курси. Але важливо долучатися на курс, вже маючи певний набір питань, тому що найцінніше тут — викладач, який зможе вам допомогти з конкретними проблемами.

Корисні статті на DOU

Путешествие на планету Java. Мой опыт прохождения cертификации Java 11 Developer (перша і друга частини).

Советы для начинающего Java-разработчика. Подготовка к собеседованию (перша, друга та третя частини).

Куди переходити з Java. Розвиток кар’єри Java-розробника.

Статті рубрики «Java дайджест».

Slim Docker image, или Как уменьшить вес Java-приложения.

Готуємося до співбесіди

Про те, як написати хороше резюме, читайте в цих статтях:

Також варто перед підготовкою до співбесіди звернути увагу на статтю «Співбесіда з Java. 250+ запитань для Junior, Middle, Senior».

Роботу радимо шукати на DOU та Djinni. На DOU є розділ «Перша робота» з курсами, стажуваннями та вакансіями лише для початківців. Також варто створити профіль в LinkedIn і моніторити цікаві позиції та активно спілкуватися з рекрутерами.

Будьте готовими до відмов і обов’язково запитуйте в інтерв’юєрів, які з навичок варто підтягнути. Але не засмучуйтесь і продовжуйте шукати роботу — віримо, що вам усе вдасться!

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

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



17 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

1. Жабу знати треба, але нічього толкового на ній зараз не пишуть

2. Ентерпрайс жаба разом з Spring’ом відмерла (надлишковість спрінга — давно мем, а Oracle перевела J2EE на баланс Eclipse). Мікросервісні поробки на micronaut, кваркусі чи Vert.x мають купу недоліків як в плані швидкодії, так й надлишковості комунікацій. без GraalVM жаба далеко не їде, але й з ним не можу сказати що дуже зручно працювати...

3. Шо Kotlin шо Scala зараз мають LLVM’ні таргети через Kotlin-native та Scala-native, й у випадку з TypeLevel Scala екосистемою (коти ефекти fs2 тощо) гарантується доволі непогана обернена сумісність. Що у котла що у скали нормально з FP, але в звязку з колапсом 47 Degrees шось не зрозуміло що буде з Arrow.kt

4. Я згоден з твердженнями про надлишковість синтаксису жаби, й ще більше згоден з твердженнями про типобезпеку, АЛЕ

— Java не можна вважати Типобезпечною мовою, щоча б тому що Type Bounds генералізованих типів (дженериків) перевіряється в рантаймі

— Так само як котлін не можна називати повністю null-safe’овим, бо відповідні перевірки також виконуються в рантаймі...

Для любителів пітона в Scala3 завезли пітоноподібний синтаксис.

5. У скалі є хороші проекти для фронтенду під Scala.js такі як Outwatch ... та й загалом фронтенд екосистема дуже самобутня, зараз от останніх років 5 лише хвилює стан вбудованого бандлеру, та зворотньої сумісності з Node.js npm пакетним менеджментом. Більшість Scala.js Typelevel проектів нормально збираються й під scala-native й під node.js

Тому я б порадив прочитати перший том Core Java та пройти курси скали від Річарда Вола на Udemy (Dick Wall).
Й того вже буде достатньо щоб нормально освоїтись та принаймні мати увесь базис для вивчення будь якої іншої мови програмування.

По синтаксису Scala не так вже й сильно відрізняється від того ж котліну чи свіфта.

Водночас Java має і низку недоліків:

є популярною лише у бекенд-розробці;

Добре, а хтось може назвати інші мови програмування (крім JavaScript), які популярні і для фронтенду, і для бекенда?

синтаксис мови є багатослівним і несучасним;

Чи можна приклади такого коду?

Java потужна завдяки своїм фреймворкам і бібліотекам, які також потрібно вчити;

Хто автор цієї фрази?
З якого часу наявність бібліотек і фреймворків є НЕДОЛІКОМ мови? Навпаки, це величезний плюс, бо не потрібно винаходити велосипеда.
І хтось може назвати мови, для яких немає бібліотек?

велика кількість проєктів використовує стару версію мови.

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

«Філософія Java», Брюс Еккель.

— книга точно не для початківців. Краще почитати Шилда чи Хорстмана

Core Java перший том завше must read.

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

не треба. я пишу на джава як чисту магію роблю gradle run всьо.

ЗЫ: потім ще допишу а також додам у чому тут проблему у конкретно у цьому абзаці

так от у чому проблема цього

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

проблема у тому що для початківця програма на джава це

class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!"); 
    }
}

проблема у тому що просто порахуйте кількість окремих елементів у цьому простому «хелловорлд»

для початківця це все абсолютно нове просто список нових сутностей об’єктів понять а ще не забудьте зв’язки між ними

для початківця це вже багато і фішка програмування як предмету і є якраз у тому що на справді там _одразу_ дуже _багато_ усього при чому одразу і просто виходячи з чисто абсолютніх значень кількості нового просто по списку це створює справжній височенний вхідний бар’єр

людям які це все вже все знають цей бар’єр просто не відчувається таким ну подумаєш клас тут усе зрозуміло ага а ось ’main’ то ми всі знаємо що таке ’main’ все зрозуміло еге ж а оці дивні дужечки ага то це масив ага String теж можна легко здогататися крапка між словами ну так вже бачили таке і так далі і тому подібне

люди які це все вже знають просто не бачать тої висоти бар’єру який бачать перед собою початківці які не знають ні чого

ні чого (!)

а ви одраз пропонуєте ще накидати на цей бар’єр

а також вивчити основні поняття: вихідний код, байт-код, машинний код, компіляція, інтерпретація, платформа.

штааа!? тату ти зараз з ким разговарівал?

ЗЫ: ну без проблем хто напише той самий hello world у байт коді? а шо такоє? а коли останній раз ви узагалі бачили байт код? а без знання байт коду цей hello world не написати? не запуститься? не скомпілюється? що таке узагалі «скомпілюється»? зможете навести якийсь науково грунтований експеримент щоб довести що оцей hello world що оце ми написали і запустили запустився у компіляторі чи у інтерпретаторі? а що з оцим усім робити початківцю який не знає ні чого !?

фішечка цього всього що дуууже багато і може більшість «курсів програмування» різко штучно ще більше завищують цей початковий бар’єр просто «виливаючи» на не підготовленого початківця цілу купу усього не зрозумілого просто нового у якому #внєзапно треба «розібратися» тут і одразу бо без цього у басейн води не наллють

ні чого особистого ))

Щось коллега вас понесло. Звісно Java абсолютно точно не рекомендована як перша мова програмування, це не Basic, Pascal, Oberon чи навіть C. Java професійний інструмент для загального прикладного програмування. Зокрема мова здобула велику популярність для вирішення комерційних задач, тобто створення програмного забезпечення для автоматизації бізнес процесів. Якщо людина взагалі не розуміє як працює компьютер, його схемотехніку, структуру команди центрального процесора, організацію пам’яті, облаштування операційної системи, системні визови, багатозадачність і синхронізацію потоків, алгоритми і структури данних — вивчення Java, зборки мусора чи внутрішнього устрою bytecode, jit, garbage collector і таке інше — це повний нонсенс і китайська грамота для новачка. Вийде недоучка, що гірший за незначного. Звісно індустрія комерційного ПО пішла особливо в Бангалорі (зараз усе меньше) на рівень бидлокодерства, коли людину вчать швидко імплементувати базовий шаблон для вирішення якоїсь типової базової бізнес задачі з відповідними подальшими проблемами з цим ПЗ в його експлуатації. Чому ? Бо «вчили Java» як першу мову, тобто швидко лячкати гімнокод за шаблоном, що узагалі то і справді ШІ буде робити краще за людей. На мою власну думку повному початківцю треба почати із C. Java це вже «для дорослих», де відповідно навчання починається із розуміння інфраструктури, скажімо зробити той hello world без IDE в текстовому редакторі, запустити компіляцію з командної строки, щоб зрозуміти як працює class path. Зробити Ant а потім maven чи greedle скріпт зборки. Вивчити можливості стандартної бібліотеки, колекції, сокети і нетверк, XML та property files, логування. Особливості OOP в Java, області видимості, інтерфейси та абстрактні класи, загальні положення у принципу створення дизайну і розділення логіки на відповідні рівні. Усі advanced теми по типу : рефлексії, аспектів, маніпулювання байткодом в рантаймі через різні ASM/ cglib, annotation pre-processor-и і таке інше це вже справді для людей 3-4 року роботи.

(але пан має час на натхнення)

Звісно Java абсолютно точно не рекомендована як перша мова програмування

з якого це дива?

це не Basic, Pascal, Oberon чи навіть C.

у басіка чи у паскаля простіший ооп? оберон я взагалі не знаю шукати лінь а до чого тут сі «як перша мова програмування»?

Якщо людина взагалі не розуміє як працює компьютер, його схемотехніку, структуру команди центрального процесора, організацію пам’яті, облаштування операційної системи, системні визови, багатозадачність і синхронізацію потоків, алгоритми і структури данних — вивчення Java, зборки мусора чи внутрішнього устрою bytecode, jit, garbage collector і таке інше — це повний нонсенс і китайська грамота для новачка.

це якась маячня яку я не певен куди саме «дискутувати» ну ок схемотехніку компутера скіко пінів у плашки ddr-4 і чи ddr-4 швидша за ddr-3 і за рахунок чого і яка організація пам’яті у чіпів відповідно того і того?

облаштування операційної системи? система віртуальної пам’яті MMU це рівень операційної системи чи нижче чи вижче?

системні визови? з перерахованого нехай сі найближчий до системи як у сі організовується системний визов?

... багато задачність )) нудно починати а ну так доречі це вже застаріла доктрина разом зі «синхронізацією потоків»

до чого тут узагалі байт код? як звичайний програміст на джава який не пише компілятор котлін та скала як він взагалі стикається з байт кодом?

скажімо зробити той hello world без IDE в текстовому редакторі, запустити компіляцію з командної строки, щоб зрозуміти як працює class path.

javac HelloWorld.java
java HelloWorld
?

нахіба!?

ісчо раз ти пишеш буцімто

Звісно Java абсолютно точно не рекомендована як перша мова програмування

а потім намагаєся «обгрунтувати» буцімто

Особливості OOP в Java, області видимості, інтерфейси та абстрактні класи, загальні положення у принципу створення дизайну і розділення логіки на відповідні рівні.

а це така кумедна брехня про яку саме я і написав одразу що це просто накидування г. з гори на вхідний бар’єр і без того достатньо високий вже на рівні простого helloworld а нащо його взагалі накидувать коли для того щоб просто запустити helloworld і почати розбирати його по шматочкам цього усього не треба від слова взагалі

Як завжди питаннями на питання :) Чудова аргументація. Поріг входу в Java як і С++ як і будь якого іньшого професійного інструменту, ті самі C#, Pyhon, Go, Rust, D та інші зазвичай прихований. Так само як скажімо із автомобілем, вміти давити на педалі та крутити баранку, це далеко не те саме, що мати навики поводження на дорозі в трафіку, в місті, автостраді, паралельна парковка і таке інше. Пересісти з машини на машину відносно простіше ніж вчити усе з нуля. Розумніше вчитись керувати автомобілем коли зовсім не вмієш ніяким на якомусь простому легковому Шевроле чи Форді, а не одразу сідати за далекобійну фуру з причепом, для якої вимагаються права категорії E. Далеко не просто так для отримання такої категорії вимагається або стаж роботи водієм категорії C (бачів разів сценарій мануальний тестувальник-автотестер-программіст), або професійна середня освіта в автодорожньому технікумі. Чи можна підготувати Java junior-а з базово підготовленої людини, скажімо із студента старших курсів чи випускника, чи інженера іншої спеціалізації — звісно можна, не боги горшки обпалюють. Чи є сенс навчати java «першокурсника» ? — Ні нема. IMHO Pyhon теж нема, швидше C чи щось такого рівня, Basic, Pascal і т.п.

бо можна прочитати 5 разів що таке клас і що таке static, і що це за магічні символи System.out.println через крапку, і тільки потім ти розумієш, а чого так

не треба читати я про то мову і веду що вчити треба діліти слона по шматочку концентруючись на маленькому і потім далі і далі

... а не розказувати що треба вивчити всі звуки британської мови та їх якісну вимову перед тим як починати трохи балакати американською

Взагалі робота є як писали в статті. Та справді Java зараз поза хайпом. Мова не дуже популярна в сфері AI/ML, навідміну від Python. Поступово витісняється з Adroid — kotlin-ом через політику Google та Oracle, хоча мови повністю взаємо-замінні. Чи є сенс вивчати Junior-у, так при курсах великих компаній , де ж шанс на отримання роботи по закінченню.

До списку книжок додам рекомендацію — Девід Фленаган Java in a nutshell. Перша частина книги дуже чітко описує саму мову програмування, друга частина є довідником із стандартної бібліотеки. Java використовується дуже широко у світі, від Android до Game dev. Але на Українському ринку аутсорсинга зазвичай під назвою Java скрита технологія back-end розробки на базі фреймверку Spring від компанії VMWARE. Тобто лише мови програмування для отримання роботи недостатньо, треба засвоїти програмування веб застосунків за допомогою Spring ( CRUD ), бази данних та знань (реліаційні і NoSQL [зокрема Mongo та DynamoDB як найпоширеніші]) — JPA та Hibernate, системи зборки ANT, Maven та Greedle, та дуже бажано Docker та Kubernetes разом із AWS EKS, або GCP Kubernetes Engine чи Azure Kubernetes Service AKS. Усе це питають на співбесідах, включно зі сторони замовника. Під це підійдуть книги Spring in Action, Kubernetes in Action та щось толокове по базам даних, та безліч статей про Hibernate та JPA.

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