Java в одном предложении
Java - это статически типизированный объектно-ориентированный язык программирования, который компилируется в байт-код и выполняется на виртуальной машине Java (JVM). Именно это проектное решение -компилировать в нейтральный промежуточный формат, а затем выполнять его на виртуальной машине- и есть причина, по которой одна и та же скомпилированная программа на Java работает без изменений в Windows, macOS, Linux и не только.
Вот та самая обязательная первая программа. Вы можете запустить её прямо здесь:
Здесь больше церемоний, чем в скриптовом языке, и это сделано намеренно - Java отдаёт предпочтение явной структуре. Мы разберём каждый кусочек этого кода на следующих страницах.
Почему JVM важна
Большинство компилируемых языков превращают исходный код напрямую в машинный код для конкретного процессора и операционной системы. Программа, скомпилированная для Windows, не запустится на Mac. Java делает крюк:
javacкомпилирует ваш исходный код.javaв файлы.class, содержащие байт-код - инструкции для воображаемой машины, а не для какого-либо реального процессора.- 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. Знание одного не означает знания другого.