0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Начнем с установки<strong>Java</strong>и знакомства с<strong>REPL</strong>. Если на вашем компьютере пока не стоит Java, то выполните установку по нашей<a>инструкции</a>.</p>
1
<p>Начнем с установки<strong>Java</strong>и знакомства с<strong>REPL</strong>. Если на вашем компьютере пока не стоит Java, то выполните установку по нашей<a>инструкции</a>.</p>
2
<p>Если установка прошла без ошибок, то самое время убедиться в том, что Java работает. Заметьте, что "установилось" и "работает" - не одно и тоже. Наберите в терминале java --version. Вывод должен быть примерно такой:</p>
2
<p>Если установка прошла без ошибок, то самое время убедиться в том, что Java работает. Заметьте, что "установилось" и "работает" - не одно и тоже. Наберите в терминале java --version. Вывод должен быть примерно такой:</p>
3
<h2>REPL</h2>
3
<h2>REPL</h2>
4
<p>Если все прошло удачно, то теперь самое время начать выполнять код на Java. Java поставляется со встроенным REPL (Read Eval Print Loop). REPL - это программа, которая работает как командная оболочка. Она ожидает ввод от пользователя (Read), выполняет введенный код (Eval) и печатает на экран результат (Print), затем снова входит в режим ожидания (Loop). Для его запуска достаточно набрать jshell:</p>
4
<p>Если все прошло удачно, то теперь самое время начать выполнять код на Java. Java поставляется со встроенным REPL (Read Eval Print Loop). REPL - это программа, которая работает как командная оболочка. Она ожидает ввод от пользователя (Read), выполняет введенный код (Eval) и печатает на экран результат (Print), затем снова входит в режим ожидания (Loop). Для его запуска достаточно набрать jshell:</p>
5
<p>Теперь можно выполнять код на Java и сразу же смотреть результат его выполнения. Наберите любой корректный код на Java и нажмите Enter:</p>
5
<p>Теперь можно выполнять код на Java и сразу же смотреть результат его выполнения. Наберите любой корректный код на Java и нажмите Enter:</p>
6
<p>REPL выводит результат выполнения операции прямо на экран и снова входит в режим ожидания ввода команд. Для выхода из репла достаточно нажать Ctrl + d. Такой способ работы очень хорошо подходит для быстрой проверки гипотез "а как работает эта штука?", а также для отладки и простых вычислений. REPL позволяет использовать переменные и запоминает предыдущий ввод:</p>
6
<p>REPL выводит результат выполнения операции прямо на экран и снова входит в режим ожидания ввода команд. Для выхода из репла достаточно нажать Ctrl + d. Такой способ работы очень хорошо подходит для быстрой проверки гипотез "а как работает эта штука?", а также для отладки и простых вычислений. REPL позволяет использовать переменные и запоминает предыдущий ввод:</p>
7
<p>Для успешного обучения крайне важно, чтобы весь код, который мы демонстрируем в дальнейшем, вы набирали и запускали локально. Только тогда будет приходить настоящее понимание того, что происходит. В тех случаях, когда репла недостаточно, код можно и нужно запускать в виде файлов.</p>
7
<p>Для успешного обучения крайне важно, чтобы весь код, который мы демонстрируем в дальнейшем, вы набирали и запускали локально. Только тогда будет приходить настоящее понимание того, что происходит. В тех случаях, когда репла недостаточно, код можно и нужно запускать в виде файлов.</p>
8
<h2>Файлы</h2>
8
<h2>Файлы</h2>
9
<p>Создайте файл<em>HelloWorld.java</em>внутри git-репозитория<em>hexlet-java</em>из прошлого урока. Добавьте туда следующий код:</p>
9
<p>Создайте файл<em>HelloWorld.java</em>внутри git-репозитория<em>hexlet-java</em>из прошлого урока. Добавьте туда следующий код:</p>
10
<p>Теперь осталось запустить его на выполнение:</p>
10
<p>Теперь осталось запустить его на выполнение:</p>
11
<p>Если все было сделано правильно, то на экране появится строка<em>Hello, Hexlet!</em>, а программа успешно завершится. На этом этапе появляются первые соглашения и правила, о которых нужно знать:</p>
11
<p>Если все было сделано правильно, то на экране появится строка<em>Hello, Hexlet!</em>, а программа успешно завершится. На этом этапе появляются первые соглашения и правила, о которых нужно знать:</p>
12
<ol><li>Файлы Java имеют расширение java</li>
12
<ol><li>Файлы Java имеют расширение java</li>
13
<li>Каждый Java файл содержит ровно один Java класс. Практически все файлы в Java это файлы с классами (еще есть интерфейсы, но мы их рассмотрим позже)</li>
13
<li>Каждый Java файл содержит ровно один Java класс. Практически все файлы в Java это файлы с классами (еще есть интерфейсы, но мы их рассмотрим позже)</li>
14
<li>Имя класса совпадает с именем файла без расширения</li>
14
<li>Имя класса совпадает с именем файла без расширения</li>
15
</ol><p>Класс HelloWorld, в нашем случае, не обычный Java класс, это точка входа в программу. Именно с нее начинается выполнение. Откуда Java знает как запустить этот класс? Это благодаря методу main. Его необходимо реализовать ровно в таком виде, в котором мы его видим выше:</p>
15
</ol><p>Класс HelloWorld, в нашем случае, не обычный Java класс, это точка входа в программу. Именно с нее начинается выполнение. Откуда Java знает как запустить этот класс? Это благодаря методу main. Его необходимо реализовать ровно в таком виде, в котором мы его видим выше:</p>
16
<p>Метод main() нужен только у входной точки, в остальных классах его не добавляют, так как эти классы не запускаются отдельно.</p>
16
<p>Метод main() нужен только у входной точки, в остальных классах его не добавляют, так как эти классы не запускаются отдельно.</p>
17
<h2>Компиляция и запуск</h2>
17
<h2>Компиляция и запуск</h2>
18
<p>Команда<em>java</em>выглядит очень простой. На вход ей подается файл с исходным кодом, на выходе - результат выполнения. Под капотом происходит два действия: компиляция и запуск. Их можно выполнить отдельно и тогда станет виден весь процесс.</p>
18
<p>Команда<em>java</em>выглядит очень простой. На вход ей подается файл с исходным кодом, на выходе - результат выполнения. Под капотом происходит два действия: компиляция и запуск. Их можно выполнить отдельно и тогда станет виден весь процесс.</p>
19
<p>Java - компилируемый язык программирования. Файл с исходным кодом компилируемого языка нельзя взять и просто так запустить, сначала его нужно превратить в понятный для машины код. За это отвечает компилятор<em>javac</em>. Вызывается он так:</p>
19
<p>Java - компилируемый язык программирования. Файл с исходным кодом компилируемого языка нельзя взять и просто так запустить, сначала его нужно превратить в понятный для машины код. За это отвечает компилятор<em>javac</em>. Вызывается он так:</p>
20
<p>javac не запускает программу, он выполняет компиляцию, во время которой проверяется корректность программы (соответствие типов) и формируется файл<em>HelloWorld.class</em>с байткодом.</p>
20
<p>javac не запускает программу, он выполняет компиляцию, во время которой проверяется корректность программы (соответствие типов) и формируется файл<em>HelloWorld.class</em>с байткодом.</p>
21
<p><em>Почему байткод, а не машинный код? Дело в том, что Java программы запускаются через виртуальную машину JVM, поэтому компиляция создает не машинный код, а байткод, это машинный код для виртуальной машины JVM. Пока звучит сложно, поэтому рассмотрим этот вопрос в одном из следующих уроков, после того как немного поработаем с инфраструктурой</em></p>
21
<p><em>Почему байткод, а не машинный код? Дело в том, что Java программы запускаются через виртуальную машину JVM, поэтому компиляция создает не машинный код, а байткод, это машинный код для виртуальной машины JVM. Пока звучит сложно, поэтому рассмотрим этот вопрос в одном из следующих уроков, после того как немного поработаем с инфраструктурой</em></p>
22
<p>После того как компиляция прошла, программа готова к запуску. Запуск выполняется командой<em>java</em>:</p>
22
<p>После того как компиляция прошла, программа готова к запуску. Запуск выполняется командой<em>java</em>:</p>
23
<p>Такой запуск ищет файл с именем<em>HelloWorld.class</em>в рабочей директории и запускает его. Файл<em>HelloWorld.java</em>уже не используется, его можно даже удалить. И изменения в этом файле не будут использованы до тех пор, пока не выполнится повторная компиляция.</p>
23
<p>Такой запуск ищет файл с именем<em>HelloWorld.class</em>в рабочей директории и запускает его. Файл<em>HelloWorld.java</em>уже не используется, его можно даже удалить. И изменения в этом файле не будут использованы до тех пор, пока не выполнится повторная компиляция.</p>
24
<p>Возникает вопрос, а зачем вызывать компилятор отдельно если команда<em>java</em>умеет делать это автоматически? На это есть множество причин и одна из них это то, что программы на Java состоят больше чем из одного файла. Об этом мы поговорим в следующим уроке.</p>
24
<p>Возникает вопрос, а зачем вызывать компилятор отдельно если команда<em>java</em>умеет делать это автоматически? На это есть множество причин и одна из них это то, что программы на Java состоят больше чем из одного файла. Об этом мы поговорим в следующим уроке.</p>