java
November 20, 2020

Навіщо потрібна Java і чому це НЕ те саме, що JS

20/11/20 ⏰7 хв

Це те саме, що JavaScript? Ні! Програмісти на мові Java цінуються, тому що вони роблять складні проєкти. Особливу популярність вони мають в середовищі розробки під Android та різних корпоративних сферах. Що це за мова і чому її варто вивчати — розгорнуто у статті.

Коротко про плюси:

  1. Багатоплатформність. Працює на величезній кількості операційних систем і заліза.
  2. ООП. Чіткі структури та розмежування даних.
  3. Велике співтовариство і багато вже готового коду. Немає проблем з роботою і з пошуками рішеннями.

Присутні мінуси, про них також коротко:

  1. Бракує швидкості. Іноді це критично.
  2. Багатослівний код. Там, де С++ використовує одну команду, Java вимагає п'ять!

Віртуальна машина

Припустимо, у нас є якийсь код на мові Java. Як його виконати?

Якби це була мова типу C++, нам потрібно було б скомпілювати під потрібне залізо або операційну систему. Скомпілювати означає перетворити зрозумілий нам код в зрозумілі процесору інструкції. Оскільки процесорів багато, компілювати потрібно буде по-різному. Плюс в різних операційних системах в різний спосіб влаштовані компоненти, кнопки, робота з мережею і т.д. Перед компіляцією програму потрібно буде допиляти під ці особливості.

Сила Java у віртуальній машині JVM (Java Virtual Machine). Це така програма, яка переводить зрозумілий людині Java-код, в код — зрозумілий процесору. Щоб код став універсальним, розробники зробили віртуальні машини для кожної операційної системи та процесорів. Ці машини враховують всі особливості архітектури своєї платформи і знають, як обробити будь-яку Java-команду. Це означає, що один і той же Java-код можна запустити на телефоні, комп'ютері, і взагалі де завгодно.

Де можна запускати Java-код


Запускати код на Java можна всюди, для цього була розроблена JVM, тобто віртуальна машина Java. наприклад:

  • Ультрапотужні сервери,
  • комп'ютери,
  • смартфони,
  • кнопкові телефони,
  • роботи й мікроконтролери типу Arduino, Raspberry Pi та багатьох інших,
  • фітнес-браслети,
  • GPS-трекери,
  • розумні годинники,
  • розумні телевізори, холодильники, мікрохвильовки, чайники та інші домашні гаджети,
  • смарт-карти, які дають доступ в приміщення.

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

Переваги Java-програмування


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

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

Робота з пам'яттю. Програмісту не потрібно стежити за тим, скільки пам'яті витрачає його програма і як її звільнити, коли якась змінна більше не потрібна. Для цього в Java вбудовано автоматичне керування пам'яттю: Java не допускає її витоків і розростання обсягу, а після завершення програми звільняє всі ресурси.

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

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

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

Недоліки Java


Все це звучить добре, але у Java також є і недоліки, при чому досить істотні.

Чи не найвища продуктивність. У С і С++ є тільки компілятор, який переводить програму в машинний код. У Java такого немає, все робить віртуальна машина. Виходить, що для виконання Java-коду потрібно робити подвійну роботу: процесор запускає JVM, а JVM виконує сам код. Через такий підхід програми на Java в півтора-два рази повільніші, ніж той самий код, але написаний на С++.

Платна ліцензія. З 2019 року компанія Oracle, яка володіє ліцензією на Java, розділила її на дві частини: платну та безкоштовну. Якщо Вам потрібна довга підтримка середовища розробки і стабільна робота програми — беріть платну ліцензію, іноді стабільність важливіша. Якщо Вам не потрібна підтримка і Ви можете встановити кожну нову безкоштовну збірку самостійно — віддавати гроші не потрібно.

Громіздкий код. Розробники Java ставили собі за мету спростити програмування на С++ і їм це вдалося. Ціна, яку довелося за це заплатити, — великі та довгі конструкції в мові, які часто заважають розумінню суті того, що відбувається. Порівняйте код, який малює пірамідку з зірочок, на Java і Python:

Хто і для чого використовує Java


Список компаній і технологій, які використовують Java як основну мову програмування:

  • Amazon,
  • LinkedIn,
  • eBay,
  • Yahoo!
  • OpenOffice,
  • IBM, Intel і Oracle.

Розробка під Android. Java досі залишається основною мовою мобільного розробки для цієї операційної системи, попри зростаючу популярність Kotlin. Android Studio — офіційне середовище Java-розробки, визнане компанією Google.

Термінали та платіжні системи. Завдяки віртуальній машині Java-код може працювати на обладнанні, яке стоїть в платіжних терміналах і банкоматах.

Робота з фінансами. Якщо потрібен простий і надійний сайт по обробці платежів або переказу грошей — використовуйте Java. Вбудовані системи безпеки допоможуть уникнути несанкціонованих дій програми.

Зарплати Java-програмістів


За статистикою української платформи для програмістів DOU.ua зарплати програмістів по всій Україні варіюються відносно досвіду в розробці.

Junior розробник на Java заробляє в середньому від 570$ до 1000$ в залежності від проєкту, компанії та міста.

Middle розробник отримує значно вищий заробіток — від 1500$ до 2590$.

Звичайно, для того, щоб отримувати високий заробіток, знання в ІТ повинні бути йому релевантними. Пройти градацію від trainee / junior до sinior повинен кожен програміст. Ці переходи відбуваються доволі швидко. З трейні до джуніора можна перейти за пів року, +- за рік ще до мідла. Тому не варто йти в ІТ за зарплатою. Зважайте на переваги та мінуси мови, при виборі. А також опирайтеся на те, до чого у Вас лежить душа у розробці.