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

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

Java Syntax Zero
Рівень 1 , Лекція 5
Відкрита

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
про андроид уже не актуально)
Mykhailo Рівень 2
11 квітня 2025
Що саме не актуально з android?
Ярослав Рівень 111
14 квітня 2025
Оракл "погавкався" з Гуглом і Гугл перевів весь андроїд на Kotlin. Старі та великі проєкти ще десь працюють на Java, але всі нові вже пишуться на Kotlin.
oncer Рівень 7 Expert
6 липня 2024
А поясніть, будь ласка таке. От я написав програмку, скажімо, в IDEA чи Eclipse. Встановлюю її на інший ПК, де, звісно, ці середовища розробки не встановлені. А де знаходяться в цей час Java компілятор і JVM, які, власне, і перекладають у два етапи мій java-код на зрозумілий комп'ютеру машинний?
10 вересня 2024
Якщо ви зібрали прогу в jar архів программу товона запустися якщотам встановлена середовище java. java окремотсавится з офсайту, а бо спец командами залежить від ос.
Anonymous #3379743 Рівень 2
17 листопада 2023
а что будет если я буду пить чай джава?
Roman H. Рівень 31
17 січня 2025
SELF-DESTRUCTION DIMENSIONAL COLLAPSE!
Василь Рівень 4
1 вересня 2025
якщо будеш пити тільки чай, то велика ймовірність винекнення ексепшинів при запуску ваших програм гарантована )
Volodymyr Metelap Рівень 3
21 вересня 2023
Всім привіт. Відкорегуйте будьласка мене. На скільки відомо процес компіляції - це перетворення коду програми в машинний код. А Java спочатку інтерпретує програму в проміжковий байт-код, а вже потім JVM компілює і виконує байт-код в залежності від ОС і заліза. Чи щось не так зрозумів?
Андрии Бумер Рівень 35
10 листопада 2023
Та наче все вірно. Я теж так зрозумів
les_yeux_blancs Рівень 50
16 квітня 2023
Додам і можливо підправлю декілька речей (я тут освіжаю знання Java, а не вчу з нуля) 1. В ентерпрайз секторі, можливо, Java все ще й є лідером (хоча багато ентерпрайзів перейшли на Node.js, наприклад, Netflix), а ось у веб точно домінує Node.js чисто тому що він дозволяє розробляти швидше й використовувати схожий стек для фронта й бека 2. В big data, здається, беззаперечним лідером є Python (насправді ж з математикою краще за все справляється C, але ним нове покоління вже й не вміє користуватися) 3. На мобільному ринку, наскільки я знаю, домінує Kotlin, хоча тут могу помилятися і він, здається, дуже схожий на Java. Це що стосується Android. Для iOS беззаперечним лідером є Swift, тому що це мова, що розробляється і підтримується самими Apple
Lehenkkyi Dmytro Рівень 2
29 березня 2023
According to https://www.tiobe.com/tiobe-index/ Python 14.83% C 14.73% Java 13.56% C++ 13.29%
Олексій Рівень 1 Expert
21 березня 2023
Гарна лекція
Anonymous #3271259 Рівень 2
3 березня 2023
Пон
Jon Vick Рівень 1
15 січня 2023
я з нуля)
fxtort Рівень 6
31 липня 2023
теж
Vlad Щербань Рівень 1
7 січня 2023
А на якому місті python
Roman Рівень 1
29 січня 2023
Зайди на сайт Tiobe Index, там буде поточна інформація