Запуск первой программы на 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 :
-- 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!"); > >
Теперь осталось запустить его на выполнение:
# Обязательно указать расширение java HelloWorld.java Hello, Hexlet!
Если все было сделано правильно, то на экране появится строка Hello, Hexlet!, а программа успешно завершится. На этом этапе появляются первые соглашения и правила, о которых нужно знать:
- Файлы Java имеют расширение java
- Каждый Java файл содержит ровно один Java класс. Практически все файлы в Java это файлы с классами (еще есть интерфейсы, но мы их рассмотрим позже)
- Имя класса совпадает с именем файла без расширения
Класс HelloWorld , в нашем случае, не обычный Java класс, это точка входа в программу. Именно с нее начинается выполнение. Откуда Java знает как запустить этот класс? Это благодаря методу main . Его необходимо реализовать ровно в таком виде, в котором мы его видим выше:
// args – сюда попадают аргументы командной строки // если они есть public static void main(String[] args) >
Метод main() нужен только у входной точки, в остальных классах его не добавляют, так как эти классы не запускаются отдельно.
Компиляция и запуск
Команда java выглядит очень простой. На вход ей подается файл с исходным кодом, на выходе – результат выполнения. Под капотом происходит два действия: компиляция и запуск. Их можно выполнить отдельно и тогда станет виден весь процесс.
Java — компилируемый язык программирования. Файл с исходным кодом компилируемого языка нельзя взять и просто так запустить, сначала его нужно превратить в понятный для машины код. За это отвечает компилятор javac. Вызывается он так:
# ничего не выводит
javac не запускает программу, он выполняет компиляцию, во время которой проверяется корректность программы (соответствие типов) и формируется файл HelloWorld.class с байткодом.
Почему байткод, а не машинный код? Дело в том, что Java программы запускаются через виртуальную машину JVM, поэтому компиляция создает не машинный код, а байткод, это машинный код для виртуальной машины JVM. Пока звучит сложно, поэтому рассмотрим этот вопрос в одном из следующих уроков, после того как немного поработаем с инфраструктурой
После того как компиляция прошла, программа готова к запуску. Запуск выполняется командой java:
# Расширение не указывается java HelloWorld
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Компиляция и запуск Java без IDE

В свое время на reddit.com, в теме Компиляция и запуск Java без IDE, был задан вопрос: Является ли команда, которая компилирует группу файлов Java, которые находятся внутри пакета в отдельную папку (назовем ее bin), и как бы я идти о запуске новых файлов класса? » Автор темы, kylolink, объясняет: «Когда я начинал использование Java, я полагался на Eclipse, чтобы сделать всю компиляцию для меня, и просто беспокоился о написании кода.» Я видел этот вопрос много раз, и, в самом деле, это то, что подтолкнуло меня мои сообщение в блог системы GPS и интегрированных сред разработки: полезно или вредно? Я люблю мощные современные Java IDE, и они делают мою жизнь легче на ежедневной основе, но есть и преимущества, чтобы знать, как строить и запускать простые примеры Java без них. Это сообщение посвящено тому, как сделать именно это. В моем блоге обучения Java с помощью простых тестов, я написал о том, как я иногда люблю использовать простой текстовый редактор и средства командной строки для написания, построения и запуска простых приложений. У меня есть довольно хорошее представление теперь, как моя много «накладные расходы» мои любимые IDE для Java требуют и сделать раннее решение, являются ли преимущества, достигнутые с помощью интегрированной среды достаточно, чтобы оправдать «накладные расходы». В большинстве реальных приложений, нет никаких сомнений, IDE «ВЛ», дорогого стоит. Тем не менее, для простейших примеров приложений, это не всегда так. В остальной части этой должности показывает, как построить и запустить Java код без IDE для этих ситуаций.
Написание и выполнение Java-кода
Чтобы сделать пример более наглядным, я буду использовать некоторые очень простые Java-классы, которые связаны друг с другом через композиции или наследования и находятся в одном пакете с именем dustin.examples. В двух классах отсутствует функция main , в третьем классе Main.java есть функция main , которая позволяет продемонстрировать запуск класса без IDE. Ниже приведен код этих трех классов: Parent.java
package dustin.examples; public class Parent < @Override public String toString() < return "I'm the Parent."; >>
Child.java
package dustin.examples; public class Child extends Parent < @Override public String toString() < return "I'm the Child."; >>
Main.java
package dustin.examples; import static java.lang.System.out; public class Main < private final Parent parent = new Parent(); private final Child child = new Child(); public static void main(final String[] arguments) < final Main instance = new Main(); out.println(instance.parent); out.println(instance.child); >>
На следующем скриншоте показана структура каталогов с этими классами .java.Снимок экрана показывает, что исходные файлы в иерархии каталогов, представляющей имя пакета (dustin/examples, потому что информация о пакете dustin.examples) и что этот пакет отражающей иерархию каталогов находится под подкаталоге SRC. Я также создал подкаталог классов (который в настоящее время пуст) для размещения скомпилированных файлов .class потому Javac не создаст этот каталог, когда он не существует.
Здание с JAVAC и запуск с Java
Независимо от того, какой подход один использует для создания Java-код (Ant, Maven, Gradle или IDE), это в конечном счете сводится к JAVAC. Стандартные параметры в Oracle/Sun предоставленный JAVAC инструмент командной строки можно увидеть, запустив JAVAC -help и дополнительные опции расширения могут быть просмотрены, запустив JAVAC -help -X. Подробнее о том, как применять эти варианты можно найти в документации инструментов для JAVAC для ОС Windows или Unix / Linux. Как говорится в Javac документации, опция -sourcepath можно использовать, чтобы выразить каталог, в котором существует исходные файлы. В моей структуре каталогов, показанного на снимке экрана выше, это означает, что, предполагая, что я бегу команду JAVAC из C: \ Java \ примеров \ javacAndJava \ директории, я должен был бы иметь нечто подобное в моей команде: Javac -sourcepath SRC SRC \ Дастин \ примеры \ *. Java. Следующий снимок экрана показывает результаты этого.
Потому что мы не указать каталог для файлов .class, они были размещены по умолчанию в том же каталоге, что и исходный .java файлы, из которых они были составлены. Мы можем использовать опцию -d , чтобы исправить эту ситуацию. Наша команда может быть запущена сейчас, например, как Javac -sourcepath SRC -d классов SRC \ Дастин \ примеры \ *. Явы. Как отмечалось ранее, выбранную папку (классы) должны уже существовать. Когда это произойдет, команда поместит .class файлы в указанную папку, как показано на следующем снимке экрана
С исходные файлы Java составлен в соответствующие .class файлов в указанной директории, мы можем запустить приложение, используя меню быстрого запуска инструмента командной строки Java Java. Это просто сделать, следуя инструкциям, приведенным на Java -help или страницы ява инструментов и указав расположение файлов .class с опцией -classpath (или -cp ). Использование обоих подходов указать, что каталог классы, где искать файлы .class демонстрируется в следующем снимке экрана. Последний аргумент является полное (весь пакет Java) имя класса, который имеет главную функцию, которая будет выполнена. Команды продемонстрировали в следующем снимке экрана является классы Java -cp dustin.examples.Main и классы Java -classpath dustin.examples.Main. 
Построение и запуск с Ant
Для простейших Java приложений, это довольно проста в использовании JAVAC и Java для создания и запуска приложения, соответственно, как только что продемонстрировали. Как приложения получить немного сложнее (например, код существующей в более чем один пакет / каталог или более сложных классам зависимостей от сторонних библиотек и фреймворков), такой подход может стать громоздким. Apache Ant является старейшим из «большой тройки» Явы построить инструменты и был использован в тысячи приложений и развертывания. Как я уже говорил в предыдущем посте блога, очень простой Ant построить файл легко создать, особенно если начинается с шаблона, как я изложил в этой должности. Следующий список кода предназначен для Ant файла build.xml, которую можно использовать для составления .java файлы в файлы .class а затем запустить класс dustin.examples.Main как это было сделано выше с JAVAC и Java. build.xml
Building Simple Java Applications Without An IDE

Я не использовал Ant свойства и не входит общих целей я обычно включают (например, «чистых» и «Javadoc»), чтобы сохранить этот пример как можно более простым и держать его близко к предыдущему примеру с помощью JAVAC и Java. Отметим также, что я включил «отладки» установлен на «истинный» для JAVAC Ant задачи, потому что это не так в случае отказа Ant, но верно с умолчанию JAVAC в. Не удивительно, Javac задача и Java задача Муравья напоминают JAVAC команда инструменты и Java. Потому что я использовал имя по умолчанию Ant ожидает файла сборки, когда он не указан явно (build.xml) и потому что я предоставил «Выполнить» цель как «по умолчанию» для этого сборки и потому, что я включен «скомпилировать» как зависимость запустить «Run» цель и потому Ant был на пути моем окружении в, все, что нужно сделать в командной строке, чтобы получить Ant для компиляции и запуска пример типа «муравей» в каталоге с файлом build.xml. Это показано в следующем снимке экрана. Хотя я продемонстрировал компиляции и выполнения простого приложения Java с Ant, я, как правило, только компилировать с Ant и бежать с Java (или скрипта, который вызывает Java, если путь к классам, являются тяжкими).
Построение и запуск с Maven
Хотя Ant был первый основной инструмент Java сборки, Apache Maven в конечном итоге получили свои известность во многом благодаря его принятия конфигурации в соответствии с соглашением и поддержкой общих хранилищ библиотек. Maven является простым в использовании, когда код и сгенерированные объекты соответствовать его стандартной схеме директорий. К сожалению, мой пример не следует эту структуру каталогов, но Maven действительно позволяет нам переопределить ожидаемое структуру каталогов по умолчанию. Следующий список код для POM файл Maven, который используется вместо каталоги исходные и целевые и обеспечивает другие минимально необходимые элементы для Maven построить с помощью Maven 3.2.1. pom.xml
4.0.0 dustin.examples CompilingAndRunningWithoutIDE 1 compile src classes $-$

Поскольку выше файл pom.xml определяет «defaultGoal» из «скомпилировать» и потому pom.xml файлов POM по умолчанию обычай, что Maven исполняемый (МВН) ищет и потому каталог бен установку Maven находится на моем пути, только я необходимые для запуска «MVN» для компиляции файлы .class как указано в следующем снимке экрана. Я могу также запуска скомпилированного приложения с Maven с помощью командной Mvn Exec: Java -Dexec.mainClass = dustin.examples.Main, которое наблюдается в на следующем снимке экрана. Как и в случае с Ant, я, как правило, не использовать Maven для запуска мой простой Java приложения, а вместо этого использовать Java на скомпилированный код (или использовать сценарий, вызывающий Java непосредственно в течение длительного классам).
Построение и запуск с Gradle
Gradle является самым молодым, модных и стильных из трех основных инструментов Java сборки. Я иногда скептически относятся к существу то, что является модным, но я нашел много вещей, чтобы нравится Gradle (написанной в Groovy вместо XML, встроенный в Ant поддержки, встроенной поддержкой Ivy, конфигурации по соглашению, которое легко перенастроен , поддержка хранилища Maven, и т.д.). Следующий пример показывает сборки Gradle, который можно использовать, чтобы скомпилировать и запустить простое приложение, которое является основным пример кода для этого поста. Это адаптированный примере я представил в блоге Simple Gradle Java Plugin Customization. build.gradle
apply plugin: 'java' apply plugin: 'application' // Redefine where Gradle should expect Java source files (*.java) sourceSets < main < java < srcDirs 'src' >> > // Redefine where .class files are written sourceSets.main.output.classesDir = file("classes") // Specify main class to be executed mainClassName = "dustin.examples.Main" defaultTasks 'compileJava', 'run'

Первые две строки из файла build.gradle указать применение плагина Java и плагином Application, в результате чего кучу функциональности автоматически этой сборке. Определение «sourceSets» и «sourceSets.main.output.classesDir» позволяет перекрывать каталогов по умолчанию Java плагина Gradle для исходного кода Java и скомпилированных двоичных классов соответственно.»MainClassName» позволяет явным указанием, какой класс должен быть запущен в рамках плагина Application. Линия «defaultTasks» определяет задачи, которые будут работать, просто набрав «Gradle» в командной строке: ‘compileJava’ является стандартной задачей обеспечивается плагином Java и «Выполнить» является стандартной задачей обеспечивается плагином Application. Потому что я назвал сборки build.gradle и потому я указал задач по умолчанию ‘compileJava «и» Выполнить «и потому что я есть установочный бен каталог Gradle на моем пути, все, что я должен был сделать, чтобы построить и запустить примеры было введите «Gradle», и это демонстрируется в следующем снимке экрана. Даже самый большой скептик должен признать, что Gradle сборки очень скользкий для этого простого примера. Она сочетает в себе лаконичность от опираясь на определенные конвенций и предположений с очень легкой механизма переопределения выберите по умолчанию в случае необходимости. Тот факт, что он находится в Groovy вместо XML также очень привлекательным! Как и в случае с Ant и Maven, я, как правило, чтобы построить только с помощью этих инструментов и, как правило, работать скомпилированные файлы .class непосредственно с Java или скрипта, который вызывает Java. Кстати, я, как правило, также архивировать эти .class в баночку для запуска, но это выходит за рамки этой статьи.
Заключение
IDE часто нет необходимости для построения простых приложений и примеры и может быть даже более накладные, чем это стоит для простейших примеров. В таком случае, это довольно легко применять JAVAC и Java непосредственно построить и запустить примеры. Как примеры принимать более активное участие, инструмент для сборки, такие как Ant, Maven, или Gradle становится более привлекательным. Тот факт, что многие среды разработки поддерживают эти утилиты сборки означает, что разработчик может перейти в IDE с помощью встроенного инструмента, созданного ранее в процессе, если было определено, что поддержка IDE был нужен как простое приложение переросла в полноценный проект.
Как запустить программу java

Приложение, написанное на языке java, представляет собой jar-архив или набор файлов *.java и *.class, если составляющие программы не скомпилированы в исполняемый jar-архив. Для запуска подобных приложений вам необходимо установить Java Runtime Environment.Вам понадобится
Зайдите на официальный сайт разработчиков java по адресу http://java.sun.com/javaee/sdk/ и загрузите последнюю версию java-машины. Установите программу на винчестер компьютера. Укажите операционной системе путь к установленным файлам java-машины — для этого добавьте в параметр path переменных среды (вкладка «Дополнительно» в окне свойств компьютера) путь к месту установки программы.
Запустите командную строку через главное меню или с помощью команды cmd, введенной в поле «Выполнить». Зайдите в командной строке в директорию java-программы, которую необходимо запустить. Введите команду:java -cp [имя файла].jar [имя основного класса программы]Нажмите Enter — запустится выполнение файла.
Если вам необходимо скомпилировать java-файлы, введите команду javac[название основного файла].java, а затем java -cp [имя файла]. Получите информацию о параметрах запуска java-файлов из командной строки, введите оператор java -help и нажмите Enter. На экране появится полный список возможных команд и их опции. Все команды вводите точно, так как ошибочные комбинации могут навредить всей операционной системе персонального компьютера.
Если вам нужно запускать на компьютере мини-игры, написанные на языке java для мобильных устройств, загрузите программу MidpX. Данное приложение позволяет запускать jar-файлы без излишних сложностей. Как только установите данное программное обеспечение, на одном из файлов jar кликните правой клавишей мыши и выберите пункт «Свойства». Далее появится окно, в котором нажмите на кнопку «Изменить» и выберите подходящую программу для открытия подобного типа файлов, то есть утилиту MidpX.
Как запускать java
Давайте сделаем описанные выше шаги — скомпилируем и запустим первую программу на Java. Здесь я предлагаю не обращать внимания на то, что программа делает. Функциональность этой программы достаточно тривиальна — она печатает слова «Hello, world . ». (Сколько же было за все годы написано таких примеров — и не сосчитать). Но как я уже говорил, на первый раз мы не будем обращать внимание на то, как программа это делает. Сейчас важно научиться делать три шага:
- Редактирование кода
- Компилирование программы на Java
- Запуск программы под управлением JVM
Для редактирования кода можно использовать самый простой редактор — тот же «Блокнот» (Notepad).
Создайте отдельный каталог для наших примеров — предлагаю назвать его JavaLesson. В нашем случае это будет на диске C. Если у Вас будет другой диск — я думаю, что замена C на какую-то другую букву не вызовет больших проблем. Итак, в редакторе набираем следующие строки (как я уже говорил — если вы практически ничего не поймете из того, что здесь написано — не страшно). На первый раз можно просто использовать Copy/Paste.
ВНИМАНИЕ . Посмотрите на рисунок, где показано как сохранять файл в Блокноте — там по умолчанию сохраняется текстовый документ. Если вы выберете такой формат, то у вас будет файл First.java.txt.
Вам надо обязательно выбрать пункт «Тип файла: Все файлы». Тогда при сохранении будет правильное расширение
