Первая программа на Java
Первая программа на Java
А теперь давайте немного попрактикуемся и посмотрим, как выглядит работа с Java. Пройдитесь и выполните все действия по алгоритму, но на каждом шаге старайтесь исследовать то, что на экране, чтобы понимать.
Алгоритм написания базовой программы на Java
- Установите Apache NetBeans и запустите (на рабочем столе будет ярлык).
- Выберите «New Project» (или File – New Project).
- Выберите «Java with Maven» (в списке шаблонов – Maven – Java Application).
- Заполните сведения о проекте:
- Project Name: mavenproject1 – можете задать своё имя;
- Project Location – выберите папку, где будет храниться проект;
- Project Folder – укажет путь к проекту;
- Artifact Id – название проекта;
- Group Id – название группы – назовите, с учётом правил, которые мы изучили выше, к примеру, назовём «com.test»;
- Version – это будет версия, которая добавится к названию исполняемого файла и запишется в метаданные;
- Package – опционально, по умолчанию будет groupId.projectName.
- Проверьте всё и нажмите Finish – IDE подготовит проект.
- В левой части окна будет структура проекта:
Если мы перейдём к папке с проектом, увидим следующее:
- В правой части окна будет код со стандартным шаблоном:
package com.test.mavenproject1;
public class Mavenproject1 {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
- Чтобы запустить проект, нужно нажать правой кнопкой мыши на проекте в структуре и выбрать «Run» или нажать зеленую кнопку на панели инструментов:
- Если всё успешно – то в нижней части окна в панели Output будет полная информация о процессе сборки, и вывод исполнения команды. Наша программа просто должна вывести сообщение «Hello World!», и это мы можем увидеть именно там:

-
Если переименовать проект или изменить свойства без рефакторинга, может быть ошибка в панели Output – и если ошибка говорит о том, что не может найти main class (который и нужен для запуска), то нужно исправить pom.xml и пересобрать проект. Там указывается то, что мы заполняли в пункте 4.
-
Сборка проекта выполняется через кнопку с иконкой молотка на панели инструментов, или через правую кнопку мыши на проекте и «Build» (построить проект), «Clean and Build» (с очисткой). Успешная сборка показывает в Output «BUILD SUCCESS».
-
Исполняемый файл будет только после сборки, в папке «target»:
Добавление юнит-теста
Усложним задачу – теперь добавим юнит-тест к нашему проекту.
- Начинаем с добавления зависимости в pom.xml. Мы хотим добавить JUnit, поэтому в элемент
<project>, после<properties>, добавляем<dependencies>:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>mavenproject1</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>21</maven.compiler.release>
<exec.mainClass>com.test.mavenproject1.Mavenproject1</exec.mainClass>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Нас интересует:
- groupId - org.junit.jupiter;
- artifactId - junit-jupiter;’
- version - 5.10.0 (можно, конечно, и новее);
- scope – test (это означает, что библиотека будет доступна только при тестировании).
- Не забываем сохранять файлы после завершения создания или редактирования. Теперь нам нужно создать класс для теста. NetBeans автоматически создаёт папку
src/test/javaпри сохранении pom.xml, но если этого не произошло – создаём через ПКМ по проекту и «New» - «Folder». Для интереса, эту структуру можно воссоздать и через файловую систему, создав «матрёшку» из папок – «\src\test\java\com\test\mavenproject1»:
Мы получим в структуре «Test Packages»:
-
Создадим новый файл, через ПКМ на Test Packages – назовём его
AppTest.java:- New – Java Class;
- Class Name – AppTest;
- Location – Test Packages.
-
Откроем новый файл и добавим туда код:
package com.test.mavenproject1;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
public class AppTest {
@Test
public void testHelloWorldOutput() {
String expected = "Hello World!";
String actual = HelloWorld.getMessage();
assertEquals(expected, actual);
}
}
Что здесь произошло:
package– наш пакет;import– импортируемая библиотека JUnit;@Test– аннотация, что здесь у нас тест;public void testHelloWorldOutput()– метод для тестирования – именно в нём мы можем проверить поведение программы, допустим, вынеся логику из Main;String expected– переменная ожидаемого результата, то есть, что должно быть;String actual– переменная фактического результата, то есть, что вышло в итоге;assertEquals– expected сравнивается на равенство с actual.
Но нам понадобится изменить и основной класс.
- В
Mavenproject1.javaвносим изменения, чтобы сделать основной класс тестируемым:
package com.test.mavenproject1;
public class Mavenproject1 {
public static void main(String[] args) {
System.out.println(HelloWorld.getMessage());
}
}
Здесь мы указываем, что System.out.println выведет не прямо указанный тут текст Hello World!, а именно то, что значение надо получить через getMessage() из класса HelloWorld. Но этого класса у нас нет – нужно создать.
- Создаём новый класс
HelloWorld.javaв Source Packages и добавляем туда код:
package com.test.mavenproject1;
public class HelloWorld {
public static String getMessage() {
return "Hello World!";
}
}
Это и есть метод getMessage(), который возвращает значение «Hello World». Это простой пример, как один класс может не содержать в себе нужную информацию, а получить из другого класса, но с условием – метод публичный – именно поэтому мы добавляем public к классу и методу – так работает инкапсуляция. Собственно, метод getMessage() и будет тестироваться.
- Чтобы запустить тесты, нужно нажать ПКМ на проекте и выбрать «Test» или ПКМ на
AppTest.javaи выбрать «Test File»:

- В окне Output мы увидим результаты тестов:

Добавление логирования
И ещё одна тренировка. Добавим логирование. Используем Apache Log4j 2.
- Как и в прошлый раз, добавим в
pom.xmlзависимости для нашего логирования:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.24.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.24.3</version>
</dependency>
- В директории
src/main/создаём папкуresources, а в ней – файл с названием «log4j2.xml», с следующим содержимым:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Файл можно создать через New – Other – XML – XML Document:

Внимательно с названием папки и файла – строго как указано выше:
Как можно понять из содержимого, этот файл создаёт конфигурацию для вывода логов в консоль с определённым форматом по шаблону в PatternLayout.
- Внесём изменения в
HelloWorld.java:
package com.test.mavenproject1;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class HelloWorld {
private static final Logger logger = LogManager.getLogger(HelloWorld.class);
public static String getMessage() {
logger.info("getMessage() вызван – это лог!");
return "Hello World!";
}
}
Здесь мы импортировали пакеты log4j через import, создали логирование – приватная переменная-метод logger, и в наш метод getMessage() к имеющейся логике добавили логирование с выводом текста.
- Проверим работу через тест или просто запустив через Run:
В окне вывода мы увидим INFO – и текст по формату, как мы указали в xml-файле конфигурации, а также текст, который мы ввели в logger.info().
Так можно логировать важные действия в процессе работы.
- Если столкнулись с ошибками в коде
HelloWorld.java, значит некорректно подключена конфигурация, либо нужно перезагрузить проект через ПКМ по проекту – Reload Project – в этот момент происходит обновление всех компонентов проекта, в том числе пакетов. Если и обновление не помогло – можно выполнить Build with Dependencies, чтобы собрать билд с учётом зависимостей.
Этого пока достаточно. Если вы успешно проделали это шаги, вы:
- ознакомились с IDE NetBeans;
- настроили pom.xml;
- успешно собрали и запустили программу;
- подключили пакеты и добавили JUnit;
- написали модульный тест (юнит-тест);
- добавили логирование при помощи Log4j.
Но это запуск программы через IDE.
Запуск вне IDE
Так, у нас есть программа. Как её запустить вне IDE? Ответ – настроить Maven.
- Добавляем в pom.xml новый тег
<build>:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.test.mavenproject1.Mavenproject1</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Это конфигурация для Maven.
- Переходим на сайт
maven.apache.orgи скачиваем архив с maven:

- Создадим для себя папку для разработки (обычно создают что-то вроде
C:\devtools) и распакуем Maven туда. Пример пути:
C:\devtools\apache-maven-3.9.9.
- Добавим переменную окружения: На примере Windows
- Система
– Дополнительные параметры системы
– Переменные среды
– найти PATH
– Изменить
– и добавить C:\devtools\apache-maven-3.9.9\bin.
Это нужно, чтобы терминал понимал, что за «mvn» мы пишем. Для проверки можно открыть командную строку и написать mvn --version, и, если версия отобразится – значит всё сделали правильно.
-
Скачиваем и устанавливаем Java SE Разработка Kit – скачать можно с официального сайта -
oracle.com/th/java/technologies/downloads/При установке запоминаем путь, куда устанавливается JDK – к примеру,C:\Program Files\Java\jdk-24\ -
Проверяем, есть ли переменная среда JAVA_HOME и равна ли она
C:\Program Files\Java\jdk-24\(так система будет понимать, где JDK). К слову, другие IDE, допустим, IDEA, как раз просят показать, где находится JDK и предоставляют удобные инструменты для конфигурации Maven. -
Теперь можно гарантированно работать с Maven даже через командную строку. Переходим к папке проекта и в командной строке вводим «mvn clean package» для сборки проекта. После сборки мы получаем файл в папке с проектом – к примеру, «
mavenproject1\target\mavenproject1-1.0.jar». -
Проверяем, есть ли Java на компьютере – вводим java -version в командной строке, и, если видим информацию – значит, всё готово к работе.
-
Переходим в командной строке к папке с проектом и вводим команду:
java -jar target/mavenproject1-1.0.jar
Таким образом мы даём команду запустить исполняемый файл и видим наши логи и Hello World!
Именно так и работает принцип – программа запускается через JVM – система запускает Java, и запускает исполняемый файл. Можно, конечно, собрать exe или bat, к примеру, который выполнит команду по запуску файла jar, или использовать специальные менеджеры, вроде JBoss.
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). JDK (Java Разработка Kit) — полный комплект разработчика. Включает — Компилятор javac для преобразования исходного кода в байт-код, Виртуальную машину JVM для выполнения байт-кода, Стандартные… Фундамент для начинающего программиста - что повторить, как работать, чего ожидать. Набор советов, правил, принципов и обычаев в разработке на этом языке. Use-after-free — это обращение к участку памяти после его освобождения. Программа продолжает использовать указатель на объект, память которого уже возвращена системе управления памятью. Библиотеки, фреймворки, инструменты сборки, тестирования, развёртывания и мониторинга. Что такое пакет и пакетная структура, как собираются проекты на Java. Справочник-шпаргалка по конфигурациям в Java — типы, синтаксис, стандартная библиотека, типовые паттерны. Не заменяет пошаговое обучение. Учебный курс — раздел. Примеры простых и полезных консольных приложений с демонстрацией концепций языка. Кавычки, точки, запятые, скобки и прочие знаки препинания. Это полный справочник всех ключевых слов языка Java, включая основные, контекстные и зарезервированные слова. Набор функций, которые включены в стандартную библиотеку языка. Типизация, набор правил определения типа данных значений языка.Основы языка Java
Что требуется знать перед началом изучения языка программирования Java
Рекомендации по разработке на Java
История языка Java
Экосистема Java-приложений
Структура и сборки Java-проектов
Справочник по конфигурациям в Java
Простые приложения на Java
Синтаксис и пунктуация в Java
Ключевые слова в Java
Встроенные функции и методы Java
Типы данных и переменные в Java