Блог

Long live Java: чому код на джаві не перестануть писати

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

Так, мов програмування дуже багато. І, в першу чергу, потрібно розуміти, що мова програмування — це інструмент. Приміром, у вас є цвях. Цвях можна забити молотком, цеглою або мобільним телефоном. Результат буде один і той самий, але інструменти для цього є різні. Так само і задачі є різні. Молотком краще забивати цвяхи, а мобільним — телефонувати. Те ж саме і з мовами програмування та задачами, які вони вирішують.

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

Не слухайте тих, хто «хоронить» джаву

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

Перший аргумент — починаючи з релізу Java 9 переосмислено всю концепцію, як необхідно випускати новий функціонал у цій мові програмування. Тепер кожні шість місяців новий реліз і кожні три  —  Long Time Support (LTS)-реліз. Все це дозволяє щопівроку обкатувати нові фічі. Це круто.

Другий аргумент — є JEP’и, в яких багато ідей та які можна верифікувати на етапі дизайну до імплементації. Вони постійно оновлюються або додаються нові. Це корисно.

Третій аргумент — те, що так говорять — не означає, що то відповідає дійсності. 

Скільки вже кажуть, що PHP помре? Або згадайте, як свого часу з’явилась Scala. На початку існування вона почала рости, а Java — падати. Але далі Scala забрала собі певну нішу, вийшла на плато і все. Вище цієї ніші вона не стрибнула. Ну, а той факт, що у Scala є теж безліч своїх нюансів і її теж починають хейтити — це окрема тема для дискусії. 

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

Чому Java?

Java — це OOP Language (об'єктно орієнтована мова програмування)

Будь-яку функціональність, яку вам необхідно реалізувати в коді — ви можете представити у вигляді об’єкта. 

До прикладу, ви хочете реалізувати функціонал по переказу з картки на картку. Для того, щоб це зробити — ви маєте описати весь процес переказу в коді. Тобто вже мислите через OOP. Це означає, що ви починаєте створювати якийсь об’єкт (картку), в якого будуть поля (власник, номер картки, сума). Власник також може бути описаний як обʼєкт з полями вік, імʼя, ідентифікаційний номер, адреса і т. д. І таким чином ви зможете легко описувати будь-які процеси, які вам потрібно реалізувати. 

Java всюди

Завдання програміста — написання коду та підтримка існуючого. Дуже багато проєктів реалізовано саме на Java і, відповідно, їх потрібно завжди підтримувати. 

Крім того, у Java є велике ком’юніті. Сотні тисяч людей вивчились і стали Java-розробниками. Під час навчання у них виникала велика кількість типових і одноманітних питань. Всі ці типові та одноманітні питання вони задавали на форумах, типу Stack Overflow, де зібрані типові помилки і типові рішення до цих помилок. Так от у Java цей набір питань сильно розвинений, тому легко можна знайти рішення певної стандартної класичної програми. Це важливо.

Java — мова програмування високонавантажених проєктів

Тобто таких, де досить велика кількість користувачів і висока активність, а сайтом можуть користуватись сотні тисяч людей щоденно. Зокрема, йдеться про веб-додатки. А це близько 80% проєктів, що зараз використовуються у світі. До того ж, багато розробок та готового коду, який можна перевикористовувати, саме і пов’язані з написанням веб-додатків.

Звичайно, що веб-додатки реалізуються не тільки мовою програмування Java. Їх можна писати і на Python, і на Node. Питання лише в нюансах реалізації і нюансах задачі. 

Java має платформну незалежність 

Щодо цього поінту. Зараз ця особливість перестає бути фішкою лише у Java, бо з’являються докери. Тим не менш, конкурентність зберігається. 

Сфери, де застосовується Java

На джаві багато чого написано. Говорячи про типи аплікейшенів, то Java зручна для Web та Mobile. Зокрема, для реалізації back-end’у веб-додатків, API, або написання Android-додатків.

А ще сферами застосування Java є:

  • Серверні програми
  • Ігри (яскравий приклад — Minecraft)
  • Клієнтські та корпоративні додатки
  • Десктопний софт
  • Пристрої зі штучним інтелектом
  • Обробка великого обсягу даних
  • Та там, де дуже важлива швидка реакція на певні події. А це:

Сфера розваг

Приміром, такі високонавантажені сервіси як онлайн-кінотеатри, типу MEGOGO та Netflix використовують Java в своїх проєктах.

Trading (betting, gaming, etc)

Комусь ця сфера може подобатись, або ні. Але це саме той приклад високого навантаження аплікейшенів, де Java фантастично справляється. 

Finance

Це не тільки банківська сфера, а вся область фінансів: платіжні системи, термінали, страхові компанії, fintech-стартапи. 

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

Big data 

Java ефективна, коли потрібно обробляти:

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

Уявіть собі, що big data — це коли у вас є петабайт даних. Наприклад, ваш телефон може мати постійну пам’ять 128 ГБ. Жорсткий диск вашого ноутбука або ком’ютера — 1 чи 2 ТБ. А є такі проєкти, в яких масштаб даних — це петабайт (1000 ТБ). І зрозуміло, що ще одного такого жорсткого диску, який вміщав би 1000 ТБ  в природі не існує. Саме з такими великими обсягами даних дуже класно працює Java. 

При чому одна із найбільш популярних бібліотек, яка використовується у big data — Hadut. А це основа основ і написана вона на Java. 

Cloud-based

Клаудні аплікейшени — це, грубо кажучи, коли ви хочете запустити якийсь додаток чи програму не в себе на комп’ютері, а десь на серверах Amazon чи Google у Франкфурті, США, Сінгапурі. Такі типи додатків називаються Cloud-based. Рано чи пізно всі девелопери почнуть працювати з Cloud-based додатками — це вже стає трендом. І Java на них без проблем використовується.

Роботи Java-розробнику завжди вистачатиме

Якщо ви не обираєте Java, бо її «важко» вчити для входження в ІТ — вам просто потрібно знайти людину, яка все доступно пояснить, буде вас менторити на початках та перевіряти код.  

Перевагою Java, як мови програмування для старту, є устаканений стек. У більшості проєктів (не кажу, що всіх) Hibernate та Spring є двома основними фреймворками. Їх і потрібно знати для виконання типових задач на джуніор-позицію. Зокрема, вміти написати контролери, створити модель в базі, приймати запити, витягувати/агрегувати дані, повертати відповідь. 

Якщо ви оминаєте Java через опасіння, що залишитесь без роботи — відкиньте сумніви в сторону. Роботи вистачить з головою. 

Типові задачі, які виконує Java-розробник:

  • Feature implementation

Ви будете додавати нововведення. Тобто писати нові фічі. Приміром, маркетолог попросить вас додати певну кнопку на сайті, яка в результаті принесе багато коштів. Ця кнопочка — це функціонал під капотом якого ще треба багато чого зробити. Як Java-девелопер ви будете імплементити ось цю функціональність під капотом. 

  • Unit tests

Всю нову функціональність потрібно тестувати. Звичайно, що для цього є тестувальники. Але, як розробник, ви писатимете unit-тести до коду, який реалізовуєте. 

  • Bug fix

Процес виправлення помилок — це типова задача, яка буде з вами завжди. Куди б ви не пішли працювати))

  • Support

Підтримка існуючих проєктів також досить стандартна задача. А як я вже писав на початку, 80% веб-додатків написано Java-кодом. Тобто підтримувати точно вистачить що.

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

Ідеальна робота програміста сформувати класний баланс з цих чотирьох задач, бо всі вони будуть зустрічатись. Неважливо, де б ви не працювали. Чи в такій великій корпорації, як Google, чи невеличкому стартапі. 

А що по зарплаті?

У середньому стартові зп на junior-позицію в Java варіються в межах $750-$800 після проходження випробувального (2-3 місяці).

Аналізуючи заробітні плати випускників Mate academy по різним напрямкам, Java-розробники мають найвищий рейт під час перегляду зп після 1+ року досвіду. 

Приміром наш випускник, Java Engineer з досвідом в 1 рік 10 місяців збільшив свою зарплату з $1500 до $4200 в американській платформі для фрілансерів. Або інший приклад: Java Engineer з досвідом 1 рік  2 місяці мав $700, а став став отримувати $2870 в міжнародній продуктовій компанії. Це, звісно, ті випадки, які зустрічаються рідше, але вони не виняткові. 

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

Мануал для джуна. Як стати хорошим Java-розробником із нуля: максимально детальна інструкція для початківців
Мануал для джуна. Як стати хорошим Java-розробником із нуля: максимально детальна інструкція для початківців
По темi
Мануал для джуна. Як стати хорошим Java-розробником із нуля: максимально детальна інструкція для початківців
Хто такий Java Developer: огляд від розробника з 15-річним досвідом
Хто такий Java Developer: огляд від розробника з 15-річним досвідом
По темi
Хто такий Java Developer: огляд від розробника з 15-річним досвідом