Menu

Что такое Java? Язык, JVM и где он выполняется

Что на самом деле представляет собой Java, как JVM позволяет одной скомпилированной программе работать где угодно и какое программное обеспечение создают на Java.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

Java в одном предложении

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

Вот та самая обязательная первая программа. Вы можете запустить её прямо здесь:

Здесь больше церемоний, чем в скриптовом языке, и это сделано намеренно - Java отдаёт предпочтение явной структуре. Мы разберём каждый кусочек этого кода на следующих страницах.

Почему JVM важна

Большинство компилируемых языков превращают исходный код напрямую в машинный код для конкретного процессора и операционной системы. Программа, скомпилированная для Windows, не запустится на Mac. Java делает крюк:

  1. javac компилирует ваш исходный код .java в файлы .class, содержащие байт-код - инструкции для воображаемой машины, а не для какого-либо реального процессора.
  2. JVM для вашей платформы читает этот байт-код и выполняет его, по ходу дела переводя в нативные машинные инструкции.

Поскольку у каждой платформы своя JVM, но все они понимают один и тот же байт-код, вы компилируете один раз и запускаете результат везде, где есть JVM. Это и есть знаменитый лозунг: написал один раз - запускай где угодно.

JVM не просто слепо интерпретирует. JIT-компилятор (just-in-time) следит за тем, какой код выполняется чаще всего, и затем компилирует эти горячие участки в оптимизированный нативный код - поэтому долго работающие программы на Java приближаются по скорости к полностью компилируемым языкам.

Статически типизированный и объектно-ориентированный

Два свойства определяют, как выглядит и ощущается код на Java.

Статически типизированный означает, что каждая переменная имеет тип, известный во время компиляции, и компилятор проверяет ваши типы ещё до того, как программа запустится:

count навсегда остаётся int; присвоить ему "hello" не получилось бы при компиляции. Это рано отлавливает целый класс ошибок ценой большего количества кода в начале.

Объектно-ориентированный означает, что Java организует код в классы - чертежи, которые объединяют данные и методы, работающие с ними. Даже точка входа выше живёт внутри class Main. Почти всё, что вы пишете на Java, живёт внутри класса.

Для чего используется Java

Java - один из самых распространённых языков в мире. Вы встретите его в:

  • Бэкенд- и корпоративных системах - банки, страхование, крупные веб-сервисы и всё, что должно надёжно работать годами.
  • Android - изначальный язык платформы, по-прежнему центральный для среды выполнения Android даже рядом с Kotlin.
  • Больших данных - Hadoop, Spark, Kafka и значительная часть экосистемы инженерии данных работают на JVM.
  • Настольных и встраиваемых приложениях - от IDE (IntelliJ, Eclipse) до кассовых терминалов и смарт-карт.

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

Java - это не JavaScript

Стоит сказать прямо, потому что названия порождают бесконечную путаницу: Java и JavaScript - разные, несвязанные языки. Они делят четыре буквы по историческим маркетинговым причинам и больше ничего существенного. Java компилируемый, статически типизированный и работает на JVM; JavaScript динамически типизированный и работает в браузерах и в Node.js. Изучение одного не учит вас другому.

Далее: установка Java

Чтобы писать и запускать Java на собственной машине, вам нужен JDK (Java Development Kit) - компилятор плюс JVM плюс стандартная библиотека. Следующая страница проведёт вас через его установку и подтверждение того, что он работает.

Часто задаваемые вопросы

Для чего используется Java?

На Java работают крупные серверные и корпоративные системы, Android-приложения (через Android SDK и общую с Kotlin среду выполнения), инструменты для больших данных вроде Hadoop и Spark, а также бесчисленные настольные и встраиваемые приложения. Её сильные стороны - стабильность, огромная стандартная библиотека и JVM, которая запускает одну и ту же скомпилированную программу на любой операционной системе.

Java компилируемый или интерпретируемый язык?

И то и другое. Компилятор Java (javac) превращает исходный код в платформонезависимый байт-код, а JVM затем выполняет этот байт-код: сначала интерпретирует его, а потом компилирует горячие участки в нативный машинный код с помощью JIT-компилятора (just-in-time). Так что Java компилируется в байт-код, а затем интерпретируется и компилируется JIT во время выполнения.

Java - это то же самое, что JavaScript?

Нет - это несвязанные языки, у которых общее название по историческим маркетинговым причинам. Java - статически типизированный компилируемый язык, работающий на JVM; JavaScript - динамически типизированный язык, работающий в браузерах и в Node.js. Знание одного не означает знания другого.

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ