Зарегистрируйтесь, чтобы продолжить обучение

Запуск первой программы на Java Java: Настройка окружения

Начнем с установки Java и знакомства с REPL. Если на вашем компьютере пока не стоит Java, то выполните установку по нашей инструкции.

Если установка прошла без ошибок, то самое время убедиться в том, что Java работает. Заметьте, что "установилось" и "работает" — не одно и тоже. Наберите в терминале java --version. Вывод должен быть примерно такой:

# Вывод может отличаться, главное чтобы не было ошибок
java --version

openjdk 20 23-03-21
OpenJDK Runtime Environment Homebrew (build 20)
OpenJDK 64-Bit Server VM Homebrew (build 20, mixed mode, sharing)

REPL

Если все прошло удачно, то теперь самое время начать выполнять код на Java. Java поставляется со встроенным REPL (Read Eval Print Loop). REPL – это программа, которая работает как командная оболочка. Она ожидает ввод от пользователя (Read), выполняет введенный код (Eval) и печатает на экран результат (Print), затем снова входит в режим ожидания (Loop). Для его запуска достаточно набрать jshell:

jshell

|  Welcome to JShell -- Version 20
|  For an introduction type: /help intro

jshell>

Теперь можно выполнять код на Java и сразу же смотреть результат его выполнения. Наберите любой корректный код на Java и нажмите Enter:

jshell> 10 + 5
$1 ==> 15

jshell>

REPL выводит результат выполнения операции прямо на экран и снова входит в режим ожидания ввода команд. Для выхода из репла достаточно нажать Ctrl + d. Такой способ работы очень хорошо подходит для быстрой проверки гипотез "а как работает эта штука?", а также для отладки и простых вычислений. REPL позволяет использовать переменные и запоминает предыдущий ввод:

jshell> var a = 5
a ==> 5

jshell> var b = 3
b ==> 3

jshell> a + b
$4 ==> 8

jshell>

Для успешного обучения крайне важно, чтобы весь код, который мы демонстрируем в дальнейшем, вы набирали и запускали локально. Только тогда будет приходить настоящее понимание того, что происходит. В тех случаях, когда репла недостаточно, код можно и нужно запускать в виде файлов.

Файлы

Создайте файл HelloWorld.java внутри git-репозитория hexlet-java из прошлого урока. Добавьте туда следующий код:

class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, Hexlet!");
    }
}

https://replit.com/@hexlet/java-setup-environment-hello-world

Теперь осталось запустить его на выполнение:

# Обязательно указать расширение
java HelloWorld.java
Hello, Hexlet!

Если все было сделано правильно, то на экране появится строка Hello, Hexlet!, а программа успешно завершится. На этом этапе появляются первые соглашения и правила, о которых нужно знать:

  1. Файлы Java имеют расширение java
  2. Каждый Java файл содержит ровно один Java класс. Практически все файлы в Java это файлы с классами (еще есть интерфейсы, но мы их рассмотрим позже)
  3. Имя класса совпадает с именем файла без расширения

Класс HelloWorld, в нашем случае, не обычный Java класс, это точка входа в программу. Именно с нее начинается выполнение. Откуда Java знает как запустить этот класс? Это благодаря методу main. Его необходимо реализовать ровно в таком виде, в котором мы его видим выше:

// args – сюда попадают аргументы командной строки
// если они есть
public static void main(String[] args) {

}

Метод main() нужен только у входной точки, в остальных классах его не добавляют, так как эти классы не запускаются отдельно.

Компиляция и запуск

Команда java выглядит очень простой. На вход ей подается файл с исходным кодом, на выходе – результат выполнения. Под капотом происходит два действия: компиляция и запуск. Их можно выполнить отдельно и тогда станет виден весь процесс.

Java — компилируемый язык программирования. Файл с исходным кодом компилируемого языка нельзя взять и просто так запустить, сначала его нужно превратить в понятный для машины код. За это отвечает компилятор javac. Вызывается он так:

javac HelloWorld.java
# ничего не выводит

javac не запускает программу, он выполняет компиляцию, во время которой проверяется корректность программы (соответствие типов) и формируется файл HelloWorld.class с байткодом.

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

После того как компиляция прошла, программа готова к запуску. Запуск выполняется командой java:

# Расширение не указывается
java HelloWorld

Такой запуск ищет файл с именем HelloWorld.class в рабочей директории и запускает его. Файл HelloWorld.java уже не используется, его можно даже удалить. И изменения в этом файле не будут использованы до тех пор, пока не выполнится повторная компиляция.

Возникает вопрос, а зачем вызывать компилятор отдельно если команда java умеет делать это автоматически? На это есть множество причин и одна из них это то, что программы на Java состоят больше чем из одного файла. Об этом мы поговорим в следующим уроке.


Самостоятельная работа

  1. Установите Java
  2. Запустите репл и попробуйте выполнить внутри Java-код
  3. Вычислите в репле значение выражения 832 + 299
  4. В проекте hexlet-java создайте файл HelloWorld.java и добавьте туда:

    class HelloWorld {
        public static void main(String[] args) {
            System.out.println("Hello, Hexlet!");
        }
    }
    
  5. Запустите этот файл командой java HelloWorld.java, убедитесь что на экран вывелась строчка Hello, Hexlet!


Дополнительные материалы

  1. Что такое компиляция?
  2. Инструкция по установке Java
  3. Как работать с Linux используя Windows

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»