$ sudo teach IT
МОДУЛЬ 1 · УРОК 2

Что такое Java и почему она так популярна

Прежде чем писать код — нужно понять, с чем мы имеем дело. Java — это не просто ещё один язык. Это целая экосистема, которая существует уже три десятилетия и остаётся одним из самых востребованных языков в мире. Почему? Давайте разбираться.

⏱ ~20 минут 🎓 Для новичков ☕ Java

📜 История создания Java

Начало 1990-х годов. Интернет ещё не стал массовым, а компьютеры только начинали появляться в домах. В компании Sun Microsystems собралась команда инженеров под руководством Джеймса Гослинга (James Gosling). Их задача: создать язык для программирования бытовой техники — стиральных машин, микроволновок, телевизоров, пультов. Представьте, что ваша микроволновка работает на Java — именно так изначально задумывался язык.

Проект назывался Green Team, а язык сначала назвали Oak (в честь дуба, росшего под окном Гослинга). Позже выяснилось, что имя Oak уже занято другим языком, и название пришлось сменить. Легенда гласит, что новое имя — Java — придумали за чашкой кофе в местной кофейне. Java — это сорт кофе с острова Ява. С тех пор чашка с горячим кофе — официальный логотип языка.

Официальный релиз Java состоялся 23 мая 1995 года. Именно эту дату считают днём рождения языка. Поначалу Java не произвела фурора — ну ещё один язык, подумаешь. Но очень быстро всё изменилось, когда интернет начал взрывной рост. Java оказалась идеальным языком для веба: безопасным, надёжным, кроссплатформенным. С этого начался её путь к мировому господству.

☕ Интересный факт: Логотип Java — чашка дымящегося кофе. Первая версия логотипа была синей, а синий цвет в логотипе 1996 года был выбран как «цвет, который хорошо смотрится на любом фоне». Современный логотип стал более минималистичным, но чашка кофе осталась.

🗓️ Хронология версий Java

За 30+ лет вышло много версий Java. Вот ключевые из них:

Версия Год Что нового
Java 1.0 1996 Первый стабильный релиз. 212 классов в стандартной библиотеке
Java 2 (1.2) 1998 Разделение на J2SE, J2EE, J2ME. Swing, Collection Framework
Java 5 (1.5) 2004 Дженерики, аннотации, перечисления (enum), foreach-цикл
Java 8 (LTS) 2014 Лямбда-выражения, Stream API, Optional, новый API дат. Прорывная версия
Java 11 (LTS) 2018 var для лямбд, HTTP Client, модули (Project Jigsaw)
Java 17 (LTS) 2021 Запечатанные классы, паттерн матчинг для switch, текстовые блоки
Java 21 (LTS) 2023 Virtual Threads, record patterns, switch с паттернами. Актуальная LTS
Java 25 (LTS) 2025 Новейшая LTS-версия с улучшениями производительности и безопасности

С Java 9+ вышла новая система релизов: каждые 6 месяцев выходит новая версия. Каждые 3 года — LTS (Long Term Support) версия, которую поддерживают долгие годы. Для обучения лучше всего выбирать LTS-версию — мы будем использовать Java 21 LTS.

🌍 WORA: Write Once, Run Anywhere

Главное изобретение Java — это кроссплатформенность. Идея простая: разработчик пишет код один раз, а запускать его можно где угодно — на Windows, macOS, Linux, на сервере, на смартфоне, даже на банкомате. Никакой другой популярный язык не предлагал такого в 1995 году.

Как это работает технически? Давайте разберёмся пошагово:

📝 Шаг 1: Вы пишете код на Java

Создаёте файл с расширением .java и пишете в нём программу на Java. Это обычный текст — вы можете открыть его любым текстовым редактором.

🔨 Шаг 2: Компилятор javac превращает код в байт-код

Компилятор javac читает ваш .java файл и создаёт .class файл. Внутри этого файла — не машинный код конкретного процессора, а универсальный байт-код (bytecode). Это как эсперанто для компьютеров — язык, который понимают все платформы.

⚡ Шаг 3: JVM выполняет байт-код

Java Virtual Machine (JVM) — это программа, которая умеет выполнять байт-код. Для каждой операционной системы есть своя JVM. JVM читает байт-код, компилирует его в машинный код (JIT — Just-In-Time компиляция) прямо во время выполнения и запускает программу.

Представьте, что вы написали инструкцию на русском языке. JVM для Windows — это переводчик, который переводит русский на английский для Windows. JVM для macOS — переводит русский на английский для macOS. Инструкция одна, переводчики — разные. Java-программа (инструкция) одна, JVM-ы (переводчики) — под каждую платформу.

💡 Простыми словами: Java-программа — как рецепт блюда. Рецепт один (написан на Java), а повара разные (JVM для Windows, macOS, Linux) — и каждый может приготовить это блюдо на своей кухне.

📦 JVM vs JRE vs JDK

В мире Java есть три важные аббревиатуры, которые часто путают. Давайте раз и навсегда разберёмся, что есть что.

⚙️
JVM — Java Virtual Machine

Виртуальная машина, которая выполняет байт-код. Её задача — прочитать .class файл и запустить его на конкретной платформе. Без JVM Java-программа не запустится.

📚
JRE — Java Runtime Environment

Среда выполнения — JVM + стандартные библиотеки (java.lang, java.util и др.). Если вы хотите только запускать Java-программы, достаточно JRE.

🛠️
JDK — Java Development Kit

Набор разработчика — JRE + инструменты для разработки: компилятор javac, отладчик jdb, утилиты javap, jar и другие. Если вы пишете код на Java, вам нужен JDK.

Визуально это выглядит как матрёшка: внутри JDK находится JRE, внутри JRE — JVM. JDK включает в себя JRE, а JRE включает в себя JVM. Когда вы устанавливаете JDK, у вас есть всё для разработки и запуска Java-программ.

// JDK — для разработки (development)
//   ├── JRE — для запуска (runtime)
//   │   ├── JVM — исполнитель байт-кода
//   │   └── Стандартные библиотеки (java.lang, java.util и т.д.)
//   └── Инструменты разработчика (javac, jdb, javap, jar)

// Если вы разработчик → ставьте JDK
// Если вы пользователь → достаточно JRE (но JDK тоже работает)

🔑 Запомните: Для обучения вам нужен JDK. Не путайте JDK и JRE. JDK включает всё, что нужно и для разработки, и для запуска. JRE — только для запуска готовых программ.

🔒 Статическая типизация — что это значит

В языках программирования есть два подхода к типизации: статическая и динамическая. Java — язык со статической типизацией.

Что это значит на практике? В Java вы обязаны указать тип переменной при её создании. Например:

int age = 25;              // int — целое число
String name = "Анна";      // String — строка текста
double price = 99.99;      // double — число с плавающей точкой
boolean isActive = true;   // boolean — логическое значение

Если вы попытаетесь положить в переменную значение не того типа — компилятор выдаст ошибку ещё до запуска программы. Например:

int age = "двадцать пять";  // ❌ Ошибка компиляции!
// Java: "несовместимые типы: String не может быть преобразован в int"

Это может казаться строгим и неудобным — особенно если вы привыкли к Python или JavaScript, где типы не нужно указывать. Но у статической типизации есть огромные преимущества:

  • Ошибки ловятся на этапе компиляции — вы узнаёте о проблеме до того, как программа запустится, а не в самый неподходящий момент
  • Код самодокументируемый — глядя на объявление переменной, сразу понятно, какого она типа
  • IDE даёт лучшие подсказки — IntelliJ IDEA знает тип каждой переменной и предлагает только подходящие методы
  • Большие проекты проще поддерживать — когда кодовая база разрастается до миллионов строк, статическая типизация спасает от хаоса

🛡️ Аналогия: Статическая типизация — это как досмотр на входе в аэропорт. Сразу проверяют, что у тебя в чемодане. Если вещь запрещена — не пустят. Динамическая типизация — как если бы пропустили всех, а проблемы начались бы в полёте. Что надёжнее?

🔄 Компиляция vs Интерпретация

Java — гибридный язык. Она использует и компиляцию, и интерпретацию. Давайте разберёмся, в чём разница.

📥
Компиляция

Весь исходный код сразу превращается в машинный код или байт-код. Компиляция происходит один раз — до запуска программы. Если есть ошибки — вы узнаете о них сразу, программа не запустится.

Примеры: C, C++, Go, Rust

📤
Интерпретация

Код выполняется строка за строкой, без предварительной компиляции. Интерпретатор читает строку, выполняет, читает следующую, выполняет. Ошибка в 50-й строке обнаружится только когда дойдёт до неё.

Примеры: Python, JavaScript, Ruby, PHP

Java использует оба подхода. Сначала ваш .java файл компилируется в .class (байт-код) — это этап компиляции. Потом JVM запускает байт-код — на этом этапе JVM может интерпретировать байт-код или компилировать его дальше в машинный код (JIT — Just-In-Time компиляция). JIT-компиляция — это когда JVM анализирует, какие части программы выполняются чаще всего, и компилирует их в машинный код прямо во время работы. Это даёт огромный прирост производительности.

🏢 Где используется Java в 2026 году

Java в 2026 году — это не «устаревший» язык. Это одна из главных рабочих лошадок IT-индустрии. По индексу TIOBE Java стабильно входит в топ-3 самых популярных языков мира. Вот где Java используется особенно активно:

🏦
Банки и финансы

Почти вся мировая банковская система работает на Java. Транзакции, расчёты, кредитные системы — нужна надёжность, и Java её обеспечивает.

📱
Android-разработка

Приложения для Android пишут на Java (и Kotlin, который полностью совместим с Java). Google, Telegram, Spotify — все используют Java.

🌐
Веб-серверы

Amazon, Netflix, LinkedIn, eBay, Twitter — бэкенд этих гигантов написан на Java. Фреймворки Spring и Spring Boot — стандарт индустрии.

🎮
Игры

Minecraft — самая продаваемая игра в истории (после Tetris) — написана на Java. Это не единственный пример.

🔬
Big Data

Apache Hadoop, Apache Spark, Apache Kafka — все эти инструменты для работы с большими данными написаны на Java.

🏭
Промышленность

Системы управления производством, IoT, автомобильная электроника (в том числе Tesla). Java встроена повсюду.

По данным опросов Stack Overflow 2024-2026, Java входит в топ-5 языков по зарплате и востребованности. Спрос на Java-разработчиков стабильно высокий — компании ценят надёжность языка и огромное количество существующего кода, который нужно поддерживать.

⭐ Ключевые особенности Java

Давайте соберём всё, что делает Java уникальной, в один список:

☕ Объектно-ориентированная (ООП)

В Java всё является объектами (кроме примитивных типов). Программа строится из взаимодействующих объектов — это естественно и интуитивно. Четыре столпа ООП: инкапсуляция, наследование, полиморфизм, абстракция.

🛡️ Безопасность

Java была спроектирована с акцентом на безопасность. Нет ручного управления памятью (нет утечек, как в C/C++). Верификация байт-кода, менеджер безопасности — встроенные механизмы защиты.

🧠 Автоматическая сборка мусора

Garbage Collector (GC) автоматически удаляет объекты, которые больше не используются. Вы не думаете об освобождении памяти — Java делает это сама. Огромное облегчение по сравнению с C/C++.

🌍 Огромное сообщество

Миллионы разработчиков, тысячи библиотек, десятки лет накопленных знаний. На любой вопрос найдётся ответ. Любую задачу кто-то уже решал.

🔙 Обратная совместимость

Java-программа, написанная 20 лет назад, скорее всего, скомпилируется и запустится на современной JVM без изменений. Это бесценно для бизнеса.

📈 Высокая производительность

JIT-компиляция, оптимизации на уровне JVM, современные GC (G1, ZGC) — современная Java не уступает по скорости нативным языкам во многих сценариях.

✅ Итоги урока

  • Java создана Джеймсом Гослингом в Sun Microsystems в 1995 году
  • Принцип WORA: один раз написал — запускай где угодно (благодаря JVM)
  • JVM выполняет байт-код, JRE = JVM + библиотеки, JDK = JRE + инструменты разработки
  • Статическая типизация: тип каждой переменной указывается явно и проверяется при компиляции
  • Java использует и компиляцию (Java → байт-код), и интерпретацию (JVM запускает байт-код)
  • Java используется везде: от Android и веб-серверов до банковской системы и Big Data
  • Актуальные LTS-версии на 2026: Java 21 LTS (2023) и Java 25 LTS (2025)

В следующем уроке мы установим JDK, настроим среду разработки и создадим первый проект. Пришло время писать код! ⚙️

Тест: Что такое Java

7 вопросов

Информация о Java

Premium