Перейти к основному содержимому

5.03. Основы языка

Разработчику Архитектору

Как работает Java?

Основы языка

Java – один из самых знаменитых объектно-ориентированных языков программирования, разработанный компанией Sun Microsystems, а нынче принадлежащий корпорации Oracle.

После изучения этой главы обязательно почитайте документацию Java, через официальный сайт - https://docs.oracle.com/en/java/, а также OpenJDK - https://openjdk.org/. Может пригодится также https://metanit.com/java и рубрика Java на Хабре.

Чит-лист - https://cheatsheets.zip/java

Программы на Java транслируются в байт-код Java, выполняемый виртуальной машиной Java – JVM. Таким образом, процесс в Java таков:

  1. Исходный код пишется программистом и сохраняется в формате .java;
  2. Исходный код (.java) компилируется в байт-код (.class) с помощью javac;
  3. JVM запускает байт-код и интерпретирует его построчно.
  4. JIT-компиляция - часто используемые части кода компилируются в машинный код.
  5. Процессор выполняет машинный код.

Упакованный исполняемый файл генерируется в формате .jar. Он включает в себя .class и ресурсы.

image.png

Какие возможности предоставляет Java?

  • писать программы, которые могут работать автономно, без необходимости переписывать логику под разные платформы;
  • создание игр, движков, IDE, утилит, билд-систем и других технически сложных продуктов;
  • строить сервисы, обрабатывающие тысячи запросов в секунду, такие как онлайн-магазины, платежные шлюзы, транспортные системы;
  • разрабатывать ERP, CRM, HRM, банковские системы, где важна надёжность и долгосрочная поддержка;
  • реализации бизнес-логики, алгоритмов обработки данных, аналитики, правил, проверок и других процессов, требующих точности и структуры;
  • обрабатывать большие объёмы информации благодаря оптимизациям JVM и богатым коллекциям;
  • создавать защищённые окружения для выполнения кода, особенно важное свойство в корпоративных и облачных системах;
  • выполнять несколько задач одновременно, используя все доступные ресурсы процессора;
  • взаимодействовать с базами данных, файлами, сетью, API, датчиками, внешними библиотеками;
  • разделение кода на модули, библиотеки, фреймворки, что позволяет строить сложные архитектуры с чёткими границами ответственности;
  • находить ошибки ещё на этапе компиляции, повышая надёжность и предсказуемость кода;
  • автоматическое освобождение памяти, что снижает риск утечек и ошибок управления ресурсами.

Интересный факт
В начале 90-х годов группа инженеров в Sun Microsystems начала проект под названием Green Project с целью создать язык для умных бытовых устройств. Но рынок электроники был не готов. И вместо этого они адаптировали язык под интернет, сделав его безопасным, в отличие от C++.

Основные компоненты Java:

  • JDK (Java Development Kit) – набор инструментов для разработки (компилятор, JVM, библиотеки);
  • JRE (Java Runtime Environment) – набор инструментов для запуска программ (JVM + стандартные библиотеки);
  • JVM (Java Virtual Machine) – виртуальная машина, выполняющая байт-код.
  • javac – компилятор, который превращает .java в .class.

Синтаксис Java отличается явным объявлением типов, а сам язык является объектно-ориентированным (углубимся позднее). Основные черты синтаксиса:

ОсобенностьПример
Объявление переменнойint age = 25;
Методpublic void greet() { System.out.println("Hello"); }
Условияif (age > 18) { ... }
Циклыfor (int i = 0; i < 5; i++) { ... }
Классы и объектыclass Person { }, Person p = new Person();
Интерфейсыinterface Runnable { void run(); }
ОбобщенияList<String> names = new ArrayList<>();

Каждая программа на Java состоит из классов и методов. Минимальная программа на Java должна иметь один класс и метод main. Java требует, чтобы каждая программа была внутри класса. Имя файла должно совпадать с именем публичного класса.

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Привет, мир!");
}
}

Метод main – точка входа в любую программу Java. Именно с него начинается выполнение программы.

Синтаксис:

public static void main(String[] args) {
// код программы
}

Как можно заметить, у метода main есть ряд ключевых слов:

  • public – метод доступен извне;
  • static – метод может быть вызван без создания объекта;
  • void – не возвращает значение;
  • String[] args – параметры командной строки.

Фреймворки в Java – готовые архитектурные решения, которые упрощают разработку приложений. В Java существуют множество популярных фреймворков для разных задач:

НазваниеНазначение
SpringПолный набор решений для enterprise-приложений (Spring Boot, Spring MVC, Spring Security, Spring Data и др.)
Hibernate / JPAORM (объектно-реляционное отображение), работа с БД
Vaadin / JavaFXРазработка GUI-приложений
Apache Struts / Play FrameworkWeb-разработка
Micronaut / QuarkusЛегковесные фреймворки для микросервисов и облачных приложений
JUnit / TestNGЮнит-тестирование
Jakarta EE / Jakarta EE 9+Платформа для корпоративной разработки (ранее Java EE)

Инструменты в Java – специальные средства для разработки, сборки, тестирования и деплоя (развёртывания):

ИнструментНазначение
JDK (Java Development Kit)Комплект разработчика, включающий компилятор, JVM, библиотеки
JRE (Java Runtime Environment)Среда выполнения, содержит JVM и стандартные библиотеки
JVM (Java Virtual Machine)Виртуальная машина, которая выполняет Java-байткод
IDE (IntelliJ IDEA, Eclipse, NetBeans)Интегрированные среды разработки
Maven / GradleСистемы управления зависимостями и сборки проекта
JUnit / MockitoИнструменты для тестирования
SonarQubeАнализ качества кода
Docker / KubernetesКонтейнеризация и оркестрация микросервисов
Tomcat / Jetty / WildFlyСерверы приложений для запуска Java-веб-приложений

Библиотеки в Java – преднастроенные модули, расширяющие функциональность Java. Они могут быть частью JDK или сторонними.

Стандартные библиотеки (входят в JDK):

ГруппаЧто включает
java.langБазовые классы (Object, String, Math)
java.utilКоллекции (List, Map, Set), даты, генератор случайных чисел
java.io / java.nioРабота с файлами и потоками
java.netРабота с сетью
java.timeНовые даты и время (с Java 8+)
javax.swing / java.awtГрафические интерфейсы
java.sqlРабота с базами данных через JDBC

Примеры сторонних библиотек:

НазваниеНазначение
Apache CommonsУтилиты для работы со строками, коллекциями, IO и др.
Guava (Google)Расширения стандартных возможностей
Jackson / GsonРабота с JSON
Log4j / SLF4JЛогирование
LombokАвтоматизация геттеров, сеттеров, конструкторов
OkHttp / RetrofitHTTP-запросы
RxJavaРеактивное программирование
Joda-TimeАльтернатива java.util.Date (до Java 8)

Сфера применения

Java – универсальный язык, и применяется во множестве областей:

СфераПримеры
Backend-разработкаСерверные приложения, REST API, микросервисы
Android-разработкаПриложения для мобильных устройств
Web-приложенияСервлеты, JSP, JSF, Spring MVC
Корпоративные системы (Enterprise)Банки, страховые компании, ERP-системы
Big Data & AnalyticsApache Hadoop, Spark, Flink
Научные вычисления и моделированиеРаспределённые вычисления, численные методы
ИгрыMinecraft
IoT (Интернет вещей)Устройства с ограниченными ресурсами, управление датчиками
Облачные сервисыAWS, Google Cloud, Azure поддерживают Java-сервисы

Учитывая, что Java при появлении сразу сделал акцент на безопасности, за него сразу «ухватился» почти весь финансовый сектор, и поэтому в серьёзных организациях, в том числе сфере финтеха, можно встретить многолетние тонны кода на Java.

Интересный факт
Изначально язык назывался Oak (Дуб) – в честь дерева, которое росло за окном Джеймса Гослинга, но позднее выяснилось, что Oak уже зарегистрирован торговой маркой другой компании. Название выбрали заново, прогуливаясь возле кафе – кто-то пил кофе «Ява», и название всплыло само собой – Java.