JavaRush/Курси/Java Syntax Zero/Компілятор і байт-код

Компілятор і байт-код

Відкрита

1. Java — найпопулярніша мова програмування

А ви знали, що Java — одна з найпопулярніших у світі мов програмування?

Згідно з рейтингом TIOBE, мовою програмування Java користуються майже 10% усіх програмістів світу. Також серед лідерів — Python, а також мови С та C++.

Мову Java було створено в середині 90-х років XX століття, і вона дуже швидко набула популярності. Програмісти масово переходили із С++ на Java. І це лише зайвий раз підтверджує, що Java — це крутезна мова програмування.

Так у чому ж її крутість? Які фішки додали в неї автори?

Ви дуже здивуєтесь, якщо порівняєте Java і мову С++: Java дуже схожа на суттєво обрізану С++!

Так, мова Java — це певною мірою урізана С++. І якщо в С++ можна щось зробити двадцятьма способами, то в Java те саме можна зробити лише одним. І в чому ж перевага, запитаєте ви?

Річ у тім, що сучасні програми дуже великі, і часто програмісти до 90 % часу витрачають на те, щоб розібратися в чужому коді. І лише 10 % — на написання нового коду. Отже, дійсно, простота — це перевага.


2. Java-компілятор

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

Річ у тім, що комп'ютер уміє виконувати лише найпростіші команди.

Для собак є команди «Поруч», «Лапу» та інші. Почувши одну з них, собака робить щось важливе. Для комп'ютера в ролі команд виступають числа: кожна команда закодована певним числом (його ще називають машинним кодом).

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

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

  • Програма мовою C++
  • Компілятор
  • Програма, що складається з машинних кодів
Етапи компіляції для мови C++

Отримана в результаті програма відразу може виконуватись на комп'ютері. Такий підхід має свій мінус — код отриманої програми значно залежить від процесора й операційної системи. Програма, скомпільована для Windows, не буде працювати на телефоні з Android.

Якщо ж ви написали програму для Android, то в операційній системі Windows вона не запуститься!

У Java використовується набагато інноваційніший підхід.

  • Програма мовою Java
  • Java-компілятор
  • Програма, що складається зі спеціальних незалежних кодів (байт-код)
  • Java VM
  • Програма, що складається з машинних кодів
Етапи компіляції для мови Java

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

А хто ж компілює програму в машинний код під час запуску?

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

Це дуже потужний хід і одна з причин тотального домінування Java.


3. Сфери домінування Java

Програми, написані мовою Java, завдяки вищезгаданим властивостям можуть виконуватись практично на будь-яких пристроях — комп'ютерах, телефонах, банкоматах, тостерах, банківських картках.

Такий підхід має безліч переваг. Саме тому програми для Android також пишуть мовою Java. А завдяки розвитку мобільного сектора Java займає панівне становище в таких напрямах програмування:

  1. Enterprise: «важкі» серверні програми для банків, корпорацій, інвестфондів тощо.
  2. Mobile: мобільна розробка (телефони, планшети), завдяки Android.
  3. Web: лідирує PHP, але й Java утримує добрячий шмат ринкового пирога.
  4. Big Data: розподілені обчислення в кластерах із тисяч серверів.
  5. Smart Devices: програми для розумного дому, електроніки, холодильників із виходом в інтернет.

Java — це не просто мова, а ціла екосистема: мільйони готових модулів, які ви можете використовувати у своїй програмі. Тисячі спільнот і форумів в інтернеті, де можна попросити про допомогу чи отримати пораду.

Що більше ви будете програмувати на Java, то більше знаходитимете відповідей на питання «Чому саме Java?».

Коментарі (42)
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
Ярослав
Рівень 111
13 листопада 2024, 11:13
про андроид уже не актуально)
Mykhailo
Рівень 2
11 квітня 2025, 16:09
Що саме не актуально з android?
Ярослав
Рівень 111
14 квітня 2025, 15:02
Оракл "погавкався" з Гуглом і Гугл перевів весь андроїд на Kotlin. Старі та великі проєкти ще десь працюють на Java, але всі нові вже пишуться на Kotlin.
oncer
Рівень 7
Expert
6 липня 2024, 06:48
А поясніть, будь ласка таке. От я написав програмку, скажімо, в IDEA чи Eclipse. Встановлюю її на інший ПК, де, звісно, ці середовища розробки не встановлені. А де знаходяться в цей час Java компілятор і JVM, які, власне, і перекладають у два етапи мій java-код на зрозумілий комп'ютеру машинний?
Денис Олейник Software Developer в SoftServe
10 вересня 2024, 21:45
Якщо ви зібрали прогу в jar архів программу товона запустися якщотам встановлена середовище java. java окремотсавится з офсайту, а бо спец командами залежить від ос.
Anonymous #3379743
Рівень 2
17 листопада 2023, 08:32
а что будет если я буду пить чай джава?
Roman H.
Рівень 31
17 січня 2025, 00:55
SELF-DESTRUCTION DIMENSIONAL COLLAPSE!
Василь trainee в Kindgeek
1 вересня 2025, 13:40
якщо будеш пити тільки чай, то велика ймовірність винекнення ексепшинів при запуску ваших програм гарантована )
Volodymyr Metelap
Рівень 3
21 вересня 2023, 02:39
Всім привіт. Відкорегуйте будьласка мене. На скільки відомо процес компіляції - це перетворення коду програми в машинний код. А Java спочатку інтерпретує програму в проміжковий байт-код, а вже потім JVM компілює і виконує байт-код в залежності від ОС і заліза. Чи щось не так зрозумів?
Андрии Бумер
Рівень 41
10 листопада 2023, 09:58
Та наче все вірно. Я теж так зрозумів
les_yeux_blancs QA Automation Engineer
16 квітня 2023, 18:46
Додам і можливо підправлю декілька речей (я тут освіжаю знання Java, а не вчу з нуля) 1. В ентерпрайз секторі, можливо, Java все ще й є лідером (хоча багато ентерпрайзів перейшли на Node.js, наприклад, Netflix), а ось у веб точно домінує Node.js чисто тому що він дозволяє розробляти швидше й використовувати схожий стек для фронта й бека 2. В big data, здається, беззаперечним лідером є Python (насправді ж з математикою краще за все справляється C, але ним нове покоління вже й не вміє користуватися) 3. На мобільному ринку, наскільки я знаю, домінує Kotlin, хоча тут могу помилятися і він, здається, дуже схожий на Java. Це що стосується Android. Для iOS беззаперечним лідером є Swift, тому що це мова, що розробляється і підтримується самими Apple
Lehenkkyi Dmytro QA Automation Engineer в NIX Solutions
29 березня 2023, 12:17
According to https://www.tiobe.com/tiobe-index/ Python 14.83% C 14.73% Java 13.56% C++ 13.29%
Олексій
Рівень 1
Expert
21 березня 2023, 14:21
Гарна лекція
Anonymous #3271259
Рівень 2
3 березня 2023, 19:32
Пон
Jon Vick
Рівень 1
15 січня 2023, 21:28
я з нуля)
fxtort Java Developer
31 липня 2023, 20:56
теж
Vlad Щербань
Рівень 1
7 січня 2023, 18:10
А на якому місті python
Roman
Рівень 1
29 січня 2023, 17:51
Зайди на сайт Tiobe Index, там буде поточна інформація