Что минимально необходимо установить для запуска приложений написанных на java

Все, что нужно
для старта в Java
Разберёмся в деталях, что потребуется для того, чтобы начать программировать на Java.
К концу этого раздела у вас будут установлены инструменты разработчика JDK и интегрированная среда разработки, а также вы напишете свою первую программу!
11 октября 2021
ПО для разработки на Java
Для того, чтобы иметь возможность с комфортом разрабатывать Java программы, необходимо как минимум две вещи — комплект разработчика JDK и хороший редактор кода, как минимум, с подсветкой синтаксиса и автодополнением.
Java Development Kit
JDK — это набор программ, предназначенных для сборки и запуска программ на Java. В отличие от программ на C/C++, где компилятор сразу собирает бинарый exe файл из исходного кода, Java программы компилируются в промежуточный байт-код — файл с расширением .class . Сделано это для максимальной кроссплатформенности — разработчику не нужно каждый раз компилировать программу под каждую платформу. Полученный файл передается виртуальной Java машине, компилируется в нативный бинарый код системы и исполняется на лету.
Есть несколько реализаций JDK — проприетарная от Oracle и свободная от OpenJDK. Я рекомендую скачать версию OpenJDK 11 от Microsoft, отсюда. Найдите в списке вашу платформу (Windows x64) и скачайте msi файл. Установите программу и перезапустите компьютер.
На экране выбора компонентов не забудьте отметить для установки переменную окружения JAVA_HOME.
Для проверки установки нажмите Win + X , выберите PowerShell и введите команду java —version . В качестве альтернативы вы можете запустить командную строку через меню Пуск и ввести в ней ту же команду. Программа выведет свою версию, к примеру openjdk 11.0.12 2021-07-20 .
Среда разработки
Интегрированная среда разработки — это, можно сказать, продвинутый редактор кода, который не только подсвечивает синтаксис, но и имеет инструменты автодополнения кода и его рефакторинга, а также поможет скомпилировать или отладить вашу программу. Рефакторинг позволяет быстро преобразовывать части программы, например, переименовывать переменные, вставлять недостающие импорты внешних пакетов и вычленять новые методы из вашего кода. Отладка программы или дебаггинг — это пошаговое выполнение вашей программы с возможностью отслеживания значений переменных — незаменимый инструмент при поиске недочетов (багов) в вашей программе.
На текущий момент есть три среды разработки для Java, достойных упоминания — это IntelliJ IDEA Community, Visual Studio Code и Eclipse IDE. Скачать их вы можете по приведённым ссылкам. Можете выбирать любую, которая вам понравится. Я же использую VS Code, и даже этот текст пишу именно в ней.
IntelliJ IDEA
Если вы скачали IntelliJ IDEA, то для начала работы создайте проект, введите его название и выберите его новое местоположение на диске. Остальные настройки можете оставить по-умолчанию. После открытия проекта щелкните ПКМ по папке src в левой панели и выберите New > Java Class. В появившемся окошке введите java_tasks.FirstProgram (имя пакета и файла нашей программы) и нажмите Enter . Такая файловая структура Java программ общепринята и о ней будет подробно рассказано в подглаве Файловая структура программы.
Теперь перед вами открыт ваш новый файл с некоторым кодом. Дополните его, как показано ниже, добавив метод main .
Для возможности выполнения нашей программы необходимо добавить новую конфигурацию сборки. Вызовите обозреватель конфигураций, нажав на кнопку Add Configuration. в правом верхнем углу программы. Добавьте новую конфигурацию, нажав на плюсик, и выберите в выпадающем списке пункт Application. Укажите имя конфигурации, например, JavaProgram, и главный класс, нажав на иконку справа в поле для ввода. В списке будет единственнственный элемент — ваш файлик. Дважды нажмите Ok и мы готовы начать.
Visual Studio Code
Если же вы выбрали VS Code, то создайте новую папку, в которй будет располагаться ваш проект, и откройте её в программе (Файл > Открыть папку. ). Альтернативный вариант — открыть нужную папку в проводнике, нажать ПКМ и выбрать Открыть в Visual Studio Code. Щелкните по пустой области проводника программы ПКМ и создайте новый файл. Дайте ему название src/java_tasks/FirstProgram.java . После нажания на Enter программа создаст наш новый файл FirstProgram.java в двух вложенных папках, src и java_tasks соответственно. Такая файловая структура Java проектов общепринята, и о ней подробнее рассказано в подглаве Файловая структура программы. При первом открытии .java файла программа предложит скачать пакет расширений для работы с Java , согласитесь и установите его.
Примечание
В программе доступен русский язык в виде расширения. Для его установки перейдите в панель расширений и введите в поиске Russian Language Pack for Visual Studio Code, после чего установите предложенный пакет.
Панель расширений можно найти в списке значков в левой части программы.
Eclipse IDE
Инструкции пока что нет, но вы держитесь.
Первая программа
Дополните ваш .java файл следующими строками кода:
Теперь вы можете запустить свою первую программу. Нажмите Shift + F10 , если вы используете IntelliJ IDEA, либо F5 , если у вас VS Code, и программа скомпилируется и запустится, а её вывод появится в консоли среды разработки. Поздравляю! Вы написали свою первую программу на Java.
С этого момента вы можете начать изучение раздела Базовые понятия и приступить к решению простых задач на Java. Если же вам хочется более подробно узнать об устройстве Java программ, то ниже изложены все детали.
Основа программы
Каждая Java программа начинается однотипно:
Мы объявляем публичный статический метод main внутри публичного класса с именем нашего файла, в данном случае MyProgram . Все дальнейшие инструкции пишутся внутри этого метода. Кроме того, мы указываем пакет нашей программы java_tasks , имя которого соответствует имени директории с нашим файлом.
Важно!
В одном .java файле должен располагаться лишь один публичный класс с таким же как у файла именем и располагаться на самом верху. Остальные классы в файле, при их наличии, должны быть приватными.
Главный метод
Наш метод main является главным — именно с инструкций, расположенных в нем, наша программа начинает работу. Из этого следует, что он должен быть в программе обязательно. Рассмотрим его модификаторы.
public — означает, что метод публичный, то есть его область видимости распространяется на всю программу. Кроме public также есть модификаторы доступа protected и private , однако на текущий момент они нам не понадобятся.
static — означает, что метод статический. Обычные методы располагаются внутри объектов, позволяя изменять их состояние, и для их вызова необходимо этот самый объект создать. Чтобы метод был доступен без создания объекта, то есть, принадлежал к классу, к нему добавляют данный модификатор.
void — добавляется к методу, если он не возвращает никакого значения. В ином случае вместо void указывается возвращаемый тип, например, float или String , а в самом теле метода, обычно, в его конце, размещается оператор return .
String[] args — параметр метода main . Состоит из названия типа ( String[] — массив строк) и имени аргумента ( args ). Любой метод при необходимости может принимать в себя любое количество параметров, разделенных запятыми, однако на практике рекомендуется использовать не больше двух или трёх.
Параметры метода необходимы для того, чтобы вызывающая сторона (в данном случае система) могла передать в метод какие-либо данные. Например, в случае метода main , в параметр args из системы передается список аргументов командной строки, с которыми программа была запущена.
main(..) < .. >— Название метода и его тело. В круклых скобках прописываются параметры метода, а в фигурных — инструкции, которые метод исполнит при своём вызове. Телом метода называется как раз эта часть, включая фигурные скобки.
Кроме того, фигурные скобки задают область видимости переменных, объявленных внутри них — за их пределами к таким переменным обратиться не получится. Так что, если вам понадобятся переменные, к которым можно будет обращаться из нескольких методов, их необходимо объявлять в теле класса. Кроме того, чтобы иметь возможность обратиться к ним из наших статических методов, они также должны быть статическими.
Пример обращения к статической переменной:
При запуске этой программы в консоль будет выведено число 15 .
Подобные общие переменные называются полями класса, о них и о самом классе будет рассказано в следующей главе.
Главный класс
Java — язык объектно ориентированный, а значит, всё в нём есть объект. Под объектом подразумевается некая сущность, у которой есть своё уникальное поведение и состояние. И классы являются шаблонами, по которым эти сущности создаются.
Если приводить аналогию с реальным миром, то класс — это инструкция по сборке микроволновки, а объект — уже сама микроволновка. Соответственно, класс есть только один, а объектов, производных от него, сколько угодно.
В главе выше уже упоминались поля класса — переменные, принадлежащие одному объекту, и которые можно вызвать из любого его метода. В нашем случае эти переменные были статическими — для обращения к ним нам не нужно создавать экземпляр класса (объект). Статическим также является и метод main , а значит, принадлежит к самому классу, также как и статические переменные.
Чтобы показать разницу между статическими полями и обычными, а также понять, как создаются экземпляры класса, взгляните на этот пример:
Результатом выполнения данного кода будет вывод:
GeneralField 1: 10
GeneralField 2: 20
StaticField: 5
Мы создали новый класс — ExampleClass , и задали ему два поля: статическое StaticField и обычное GeneralField . Затем, в вызове метода main мы создали два разных экземпляра нашего класса, и у каждого присвоили своё значение полю GeneralField . После чего, изменили значение статического поля StaticField и вывели значения всех переменных в консоль.
Создание нового объекта, или экземпляра класса, происходит практически также, как объявление обычной переменной: в левой части мы указываем тип значения (в нашем случае имя класса ExampleClass ) и его имя, а в правой создаем новый объект при помощи ключевого слова new и имени класса с круглыми скобками, и присваиваем его нашей переменной посредством оператора = .
Обратите внимание, что мы указывали имена созданных объектов для изменения обычных полей. А в случае статичского поля — явно указали название класса.
Файловая структура программы
Вы уже заметили, что наша программа находится в нескольких вложенных подпапках — src/java_tasks/FirstProgram.java . А также, что наш код начинается с выражения package java_tasks . Им мы объявляем пакет, в котором находится наш код. Кроме того, имя пакета должно соответствовать имени папки, в которой располагается файл с кодом.
Пакеты используются для того, чтобы разделить программу на небольшие составные части, каждая из которых выполняет свою определённую роль, а также создать понятную структуру, иерархию вашего проекта. В небольших проектах можно обойтись и единственным пакетом с одним или несколькими файлами исходного кода, однако в более крупных без них никак не обойтись.
Приведу пример. Вам нужно написать приложение, которое будет создавать несколько видов электротехники, например, микроволновки и электрочайники. Причем, у каждого вида электротехники есть несколько различных вариантов. Например, микроволновка с дисплеем или с механическим таймером, а электрочайник металлический или аллюминиевый. Кроме того, помимо электротехники, программа создает электромобили.
Вдаваться в детали реализации подобной программы в данный момент мы не будем. Всё что нам сейчас нужно — придумать, каким образом можно распределить пакеты и файлы исходного кода.
Пример файловой структуры подобной программы (без учета src/ ):
Следуя файловой иерархии данной программы, будут созданы аналогичные пакеты:
creating_app , в котором находится единственный файл с главным классом программы.
creating_app.electro_cars , в котором находятся все классы электромобилей.
creating_app.devices.electric_kettles , в котором содержатся электрочайники.
creating_app.devices.microwaves — пакет с микроволновками.
Пакет creating_app.devices не содержит в себе файлов с исходными кодами и служит ради более выраженной структуры файлов проекта.
Как уже можно заметить, пакеты могут быть вложенными друг в друга. И каждый файл .java в своем начале будет содержать объявление пакета, к которому он принадлежит.
Теперь, мы можем создать наши электромобили и микроволновки обычным инстанциированием объекта, импортировав пакет с ними, либо указав пакет напрямую:
Как видно из примера выше, можно как импортировать один определённый класс, так и весь пакет целиком при помощи символа * , однако, это рекомендуется делать, только если вам необходимо импортировать множество классов из одного пакета.
src/ и out/
Весь наш исходный код расположен не в главной директории проекта, а в поддиректории src/ — это стандартная практика для любой Java программы. Сделано это потому, что кроме исходников, в проекте могут находиться и другие файлы, такие как внешние ресурсы (например, изображения и звуки, которые наша программа будет использовать), файлы, которые ваша среда разработки создает при компиляции программы, файлы конфигурации и другие. Все эти данные располагаются в своих выделенных директориях: внешние ресурсы в resources/ , конфиги в configs/ , а файлы компиляции .class в out/ .
Примечание
VS Code также компилирует вашу программу для выполнения, однако, по умолчанию, помещает скомпилированные файлы в директорию временных файлов системы. При желании, это поведение можно изменить в параметрах программы.
Что необходимо для запуска Java-программ?
Предположим я написал программу. Самую простую, калькулятор какой-нибудь. Он весит, грубо говоря, 20 мб., бинарники + исходники + пр. ресурсы. Чтобы запустить программу нужна явамашина. Она есть в JDK.
Чтобы другие люди смогли оценить мой «супер-калькулятор» им нужно всем скачивать и устанавливать JDK? Ведь JDK весит намного больше чем моя программа.
НЕТ, JDK — набор разработчик (JRE + для разработки), для запуска jar архивов(запускаемых джава-архивов) нужно только JRE. ХОтя и JRE весит гораздо больше чем твой калькулятор
Например на с++ тебе не нужно что либо скачивать помимо самой запускаемой программы, но тебе нужно будет компилировать свой код под огромное множество различных процессоров. Т.Е ты не сможешь просто написать программу , скинуть exe файл на другой компьютер и запустить её(Вернее сможешь, но он не всегда будет запускаться).
![]()
Еще есть вариант поставлять все вместе, т.е. ваш Jar и JRE(он портабельный). Просто создайте директорию с Вашим Jar и рядом с JRE примерно так
и можно еще написать скрипт запуска start вида ./jre/bin/java -jar ./myJar.jar .
Кроме того существуют конвертеры которые преобразуют Jar в нативный код (довольно много Jar to exe конвертеров)
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.9.5.43611
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Java Core для самых маленьких. Часть 1. Подготовка и первая программа
Как-то давно мы с моим товарищем и коллегой Егором готовили обучающий курс по Java Core. Но как-то не срослось и это дело не было доведено до какого-либо логического конца. И вот, спустя время, я решил, что не стоит пропадать добру и по-этому запускаю серию статей про Java Core для самых маленьких.
Начало разработки языка было положено еще в 1991 году компанией Sun Microsystems, Inc. Вначале язык был назван Oak (Дуб), но в 1995 он был переименован в Java. Публично заявили о создании языка в 1995 году. Причиной создания была потребность в независящем от платформы и архитектуры процессора языке, который можно было бы использовать для написания программ для бытовой электротехники. Но поскольку в таких устройствах применялись различные процессоры, то использование популярных на то время языков С/С++ и прочих было затруднено, поскольку написанные на них программы должны компилироваться отдельно для конкретной платформы.
Особенностью Java, которая решила эту проблему, стало то, что компилятор Java выдает не машинный исполняемый код, а байт-код — оптимизированный набор инструкций, которые выполняются в так называемой виртуальной машин Java (JVM — Java Virtual Machine). А на соответствующую платформу предварительно устанавливается JVM с необходимой реализацией, способная правильно интерпретировать один и тот же байт-код. У такого подхода есть и слабые стороны, такие программы выполняются медленнее, чем если бы они были скомпилированы в исполняемый код.
Установка программного обеспечения — JDK
В первую очередь, нам нужно установить на компьютер так называемую JDK (Java Development Kit) — это установочный комплект разработчика, который содержит в себе компилятор для этого языка и стандартные библиотеки, а виртуальную машину Java (JVM) для вашей ОС.
Для того чтобы скачать и установить JDK открываем браузер, и в строке поиска Google вводим “download JDK” или переходим по этой ссылке.

Скролим ниже и находим таблицу с вариантами скачивания JDK. В зависимости от нашей операционной системы выбираем файл для скачивания.
Процесс установки для ОС Windows имеет несколько этапов. Не стоит пугаться, все очень просто и делается в несколько кликов. Вот здесь подробно описан процесс установки. Самое важное для пользователей Windows это добавить системную переменную JAVA_HOME. В этой же статье достаточно подробно расписано как это сделать (есть даже картинки).
Для пользователей MacOS также стоит добавить переменную JAVA_HOME. Делается это следующим образом. После установки .dmg файла JDK переходим в корневую папку текущего пользователя и находим файл .bash_profile. Если у вас уже стоит zsh то ищем файл .zshenv. Открываем этот файл на редактирование и добавляем следующие строки:
Здесь обратите внимание на версию JDK указанную в пути — jdk1.8.0_271.jdk. Могу предположить, что у вас она будет отличаться, поэтому пройдите по указанному пути и укажите свою версию. Сохраняем изменения и закрываем файл, он нам больше не понадобится.
Теперь важно проверить правильность установки JDK. Для этого открываем командную строку, в случае работы на Windows, или терминал для MacOS. Вводим следующую команду: java -version Если вы все сделали правильно, вы увидите версию установленного JDK. В ином случае вы, скорее всего, допустили где-то ошибку. Советую внимательно пройтись по всем этапам установки.

Установка IDE
Теперь нам нужно установить среду разработки, она же IDE (Integrated development environment). Что собой представляет среда разработки? На самом деле она выглядит как текстовый редактор, в котором мы можем вводить и редактировать текст. Но помимо этого, этот текстовый редактор умеет делать проверку синтаксиса языка на котором вы пишете. Делается это для того чтобы на раннем этапе подсказать вам о том, что вы допустили ошибку в своем коде.
Также среда разработки содержит в себе компилятор. Компилятор — это специальный инструмент, который будет превращать код, который вы пишете, в машинный код или близкий к машинному коду.
Кроме этого, среда разработки поддерживает отладчики которые помогают править и отлаживать ваш код в случае ошибки. Скажем так, это были описаны основные возможности IDE. Современные IDE предоставляют огромное количество инструментов, которые могут помочь в написании, отладке, автоматической генерации кода и решить множество других проблем.
Для начала нам нужно выбрать и среду разработки. Их довольно таки много, и самыми популярными из них являются: IntelliJ IDEA, NetBeans, Eclipse. Для себя я выбираю IntelliJ IDEA. Она является самой удобной на мой взгляд, и хоть она и платная, на официальном сайте можно найти бесплатную версию которая называется Community. Этой версии будет вполне достаточно для изучения основ Java. Вообщем будем работать в IntelliJ IDEA.
Итак, открываем браузер, в поисковой строке вводим «Download IntelliJ IDEA Community» или переходим по этой ссылке. Выбираем версию ОС и качаем версию Community.

В установке IntelliJ IDEA нет ничего военного. На крайний случай на ютубе есть множество видео о том, как установить эту программу.
Первая программа
Теперь мы готовы создать нашу первую программу. В окошке запустившийся IDE нажимаем New Project.

В новом окошке в левой панели выбираем Java.

Обратите внимание! В верхнем окошке, справа, возле надписи «Project SDK:» должна находится версия Java, которую вы установили вместе с JDK. Если там пусто, то вам нужно будет указать путь к вашему JDK вручную. Для этого в выпадающем списке нажмите «Add JDK. « и укажите путь к вашему JDK, который был предварительно установлен.
Теперь можем нажать на кнопку Next. В следующем окошке, вверху, поставьте галочку “Create project from template” и выберите “Command Line App”. И снова нажимаем Next.

Дальше нам нужно указать имя программы. У меня это будет Hello World, желательно чтобы имя проекта было введено латиницей, и на английском языке.
Примечание. Все программы, имена программ, принято писать на английском языке, и желательно придерживаться такого стиля, что является хорошим тоном в программировании.
После указываем путь к проекту программы.
Далее, нам нужно указать базовый пакет нашей программы. О пакетах я расскажу вам позже, обычно компании используют свое имя Интернет-домена в обратном порядке, но вы можете написать, например, свои имя и фамилию через точку в нижнем регистре (маленькими буквами), тоже латиницей. Я же использую псевдоним. Когда все поля будут заполнены — нажимаем “Finish”.

После этого вы увидите главное окно IDE, в котором уже будет создана ваша первая, почти готовая консольная программа.
Это окно, то что вы будете видеть 80-90%, а иногда и 100% времени, работая программистом.
Для того чтобы закончить ваше первое приложение, останется добавить строчку кода System.out.print(«Hello world!»); как показано на скриншоте.

Чтобы скомпилировать и запустить на выполнение вашу программу, вам нужно нажать кнопочку с зеленым треугольничком на верхней панели справа, или в меню найти пункт Run -> Run “Main”. И внизу на нижней панели, под окном редактора, в консоли, вы увидите результат выполнения вашей программы. Вы увидите надпись Hello World! Поздравляю, вы написали свою первую программу на Java.

Разбираем первую программу
В своем первом приложении вы можете увидеть много непонятных символов и слов, но на данном этапе вы должны воспринять их как данность, позже, в следующих частях, я расскажу о каждом из них, и зачем они нужны. На данном этапе вам нужно понять что это стандартные составляющие любого Java-приложения, и в последующих приложениях эти компоненты будут изменяться минимально.
Пройдемся по порядку:
В начале мы видим package com.zephyr.ventum; — это объявление пакета, и это постоянный атрибут файлов с исходным кодом в Java. Простыми словами, это локация вашего файла в проекте и любой .java файл должен начинаться с подобной строки.
Ключевое слово — это слово зарезервированное языком программирования. Например, package — это тоже ключевое слово.
Фигурные скобки <> у метода main обозначаю начало и конец тела метода, весь код метода должен располагаться между этими скобками. Аналогичные скобки есть и у класса Main.
Следующая строка является // write your code here однострочным комментарием.
Комментарием является текст который игнорируется компилятором. По-этому с помощью комментариев вы можете оставлять в коде подсказки для себя и других, кто будет читать ваш код, или же для документирования вашего кода. Существует несколько видов комментариев, основными из них являются однострочный, и многострочный.
Многострочный комментарий будет выглядеть следующим образом:
Мы просто располагаем несколько строк между символами /* и */
System.out.print(«Hello world!»); — строка которая находится внутри метода main является командой, которая выводит в консоль строку «Hello world!»
Обратите внимание что в конце стоит точка с запятой, в языке Java команды должны заканчиваться точкой с запятой.
Затем мы закрываем тело нашего метода main > а также закрываем класс Main > .
На этом статья подходит к концу. Автором конкретно этого материала является Егор и все уменьшительно ласкательные формы слов сохранились в первозданном виде.
Записки программиста
Как ни крути, но Java — популярный язык программирования и программистам довольно часто приходится иметь с ним дело, нравится им это или нет. Причины могут быть разные. Возможно, вы хотите запустить примеры к прочитанной недавно книге. Или вы работаете с софтом, написанном на Java (Cassandra, Voldemort, Hadoop, ZooKeeper, Jenkins, …). Или вы просто играетесь с одним из относительно новых языков под JVM, например, Groovy, Scala, Clojure или даже каким-нибудь Frege. В общем, Java уже повсюду, и хочешь не хочешь, а приходится в ней немного разбираться.
На самом деле, есть подозрения, что Java не так уж плоха, как о ней говорят. Статическая типизация? Хорошо. Автоматическая сборка мусора? Отлично. Кроссплатформенность? Неплохая скорость дробления чисел? Множество готовых библиотек? Готовый инструментарий? Куча написанных книг? Лямбды и параллельные коллекции начиная с Java 8? Просто супер! Более того, в ранних версиях Java были даже легковесные потоки, но от них, к сожалению, решили отказаться. Есть, конечно, и множество шероховатостей, но, во всяком случае, общая идея, надо признать, правильная.
Нельзя не сказать пару слов о местной терминологии. В мире Java любят всякие непонятные аббревиатуры. В частности, вам часто будут встречаться следующие:
- JRE (Java Runtime Environment) — это виртуальная машина Java и стандартная библиотека, то есть, минимум из того, что необходимо для запуска Java-приложений;
- JDK (Java Development Kit) включает в себя компилятор Java (javac) и прочие утилиты, документацию, примеры, а также JRE — то есть, JDK представляет собой минимальный набор инструментов, необходимый программисту на Java;
- SDK (Software Development Kit) — устаревший термин, означающий в точности то же самое, что и JDK;
- Java SE (Standard Edition) представляет собой стандартный вариант платформы Java, «for general-purpose use», в состав Java SE входят такие стандартные библиотеки, как java.io, java.net, java.math и тд;
- Java ME (Micro Edition), урезанный вариант SE для использования на мобильных устройствах, телевизорах и так далее, включает в себя некоторые библиотеки, специфичные для такого окружения;
- Java EE (Enterprise Edition), расширенный вариант Java SE, в который дополнительно входят JMS (API для обмена сообщениями), библиотеки для парсинга XML, сервлеты и много чего еще;
- JNI (Java Native Interface) — такая штука, которая позволяет вызывать код на ассемблере, Си и C++ из Java, а также наоборот. В сообществе джавников использование JNI не очень приветствуется, но, скажем, на серверсайде, если очень нужно — почему бы и нет;
Установка JDK. Есть больше одной реализации JDK, наиболее популярными являются OpenJDK и Oracle JDK. Опытные джавники заверили меня, что OpenJDK ни на что не годится и что дескать пользоваться нужно только Oracle JDK. Мои личные наблюдения это подтверждают, на Oracle JDK Java-приложения работают заметно быстрее. Установку Oracle JDK мы уже рассматривали здесь. Если в двух словах:
Должна успешно установиться Java 1.7. Проверяем, сказав java -version .
Также нам понадобится Maven (о нем чуть ниже):
Касательной версий Java нужно отметить, что тут есть небольшая путаница. Строго говоря, версии имеют номера 1.1, 1.2 и так далее до последней на сегодняшний день 1.8. Но единичку в начале иногда опускают. То есть, Java 7 и Java 1.7 — это одно и то же. Приложения на Java не всегда одинаково хорошо работают на разных версиях виртуальной машины Java. Очевидно, что если приложение писалось под Java 6, оно может не запуститься на Java 5. Но я наблюдал и обратное. Приложение, которое писалось и тестировалось на Java 6 может не совсем корректно работать, а то и вовсе не запускаться на Java 7.
Писать на Java без IDE, например, в Vim, можно, но не очень удобно. Отчасти это связано с необходимостью писать всякие public static void , отчасти — с явной декларацией типов, отчасти — с тем, что для разрешения конфликтов имен в Java принято давать имена пакетов в стиле ru.example.some.package, то есть, как бы доменное имя, записанное задом наперед. Также предполагается, что вы владеете доменом example.ru, и потому ваши имена не будут конфликтовать с именами других разработчиков. При этом классы в пакете должны находится в каталоге src/main/java/ru/example/some/package — седьмой вложенности! В общем и целом, без IDE на Java писать очень грустно.
Никакой IDE по умолчанию в JDK не входит, поэтому возникает проблема выбора. IDE под Java много, например, Eclipse, NetBeans и IntelliJ IDEA. Опрос среди коллег-джавников показал, что IDEA является наиболее адекватной (быстрой, удобной, …), поэтому ею и воспользуемся. Качаем с сайта JetBrains последнюю бесплатную версию (Community Edition), распаковываем куда-нибудь архив.
У себя для запуска IntelliJ IDEA я положил в
/bin такой скрипт:
/ home / eax / path / to / idea-ide / bin / idea.sh
В моем оконном менеджере теперь можно просто сказать «Ctr+D → idea» и IntelliJ IDEA будет запущена. Приятной неожиданностью лично для меня оказалось то, что как под Linux, так и под Windows (я не поленился проверить), IntelliJ IDEA внешне практически не отличается от нативных приложений, несмотря на то, что написана она на Swing, а не SWT.
Давайте попробуем создать новый проект. Create New Project → Java/Maven → Next. В GroupId пишем «ru.example», в ArtifactId — «helloworld», жмем Next. В поле Project name указываем «HelloWorld», затем находим Project SDK. Фактически, IntelliJ IDEA найдет подходящий путь за нас. Лично у меня он получился таким: /usr/lib/jvm/java-6-oracle. Жмем Finish. После первого запуска IntelliJ IDEA может иногда тупить, поскольку она будет занята индексацией классов и еще чем-то. Поглядывайте на статусбар внизу IDE.
Дополнение: На самом деле, с Java 6 лучше не связывайтесь. Работать с этой версией очень грустно из-за отсутствия try с ресурсами, diamond syntax, классов Path и Files, возможности ловить несколько исключений в одном catch’е, а также других фичей. Берите сразу Java 7 или старше.
Теперь создаем новый пакет таким образом:

В качестве имени пакета указываем «ru.example.helloworld».
Создаем новый класс в только что созданном пакете:

В качестве имени класса указываем «HelloWorld». Вводим следующий код:
/**
* Hello world class
*/
public class HelloWorld {
public static void main ( String args [ ] ) {
System . out . println ( "Hello!" ) ;
}
}
Компилируем и запускаем программу, нажав Shift+F10. В появившемся терминале должны увидеть сообщение «Hello!».
Если теперь посмотреть на структуру проекта, она окажется примерно такой:
В src/main лежат основные исходники, с разбивкой по использованным в проекте языкам программирования. В src/test лежит код тестов. В target/classes лежат скомпилированные классы. Файл pom.xml содержит информацию о проекте и его зависимостях. Это своего рода аналог rebar.config из мира Erlang или .cabal файла из мира Haskell. Аналог Rebar или Cabal здесь называется Maven. Помимо Maven есть и другие аналогичные утилиты, например SBT. Последний заточен под Scala. Но даже скалолазы по привычке часто продолжают пользоваться Maven.
Давайте попробуем поделать что-нибудь из консоли, чтобы лучше понимать, что как работает.
Например, запустить нашу программу можно так:
Вместо -cp можно использовать -classpath . Понятно, что эта опция задает путь до каталогов со скомпилированными классами. Также эти пути можно указать в переменной окружения $CLASSPATH. Последним аргументом в нашей команде указывается имя класса. Этот класс должен иметь метод main, который и будет вызван виртуальной машиной.
Сделаем ужасное. Удалим скомпилированный класс и соберем проект вручную, используя Maven:
Нетрудно убедиться, что файл .class снова появился и программа запускается, как и раньше.
Это все, конечно, замечательно, но распространять наше приложение в таком виде мы не можем. Сначала нам нужно упаковать его в исполняемый независимый (standalone) jar’ник. Эта задача решается при помощи Assembly Plugin для Maven. Подключается он довольно просто. Открываем в IDEA файл pod.xml и перед закрывающим тэгом </project> дописываем:
В консоли говорим:
Если все было сделано правильно, мы получим исполняемый jar’ник, который можно запустить так:
Этот jar-файл можно переименовать во что угодно и распространять, как готовое Java-приложение. Ну разве что можно упаковать вместе с ним пару скриптов для Windows и *nix, говорящих java -jar .
За кадром осталось еще много вопросов, например, использование в проекте сторонних библиотек, интеграция IntelliJ IDEA с системой контроля версий, отладка, и так далее. Может быть, когда-нибудь эти вопросы будут освещены в отдельной заметке.
В качестве источников дополнительной информации, насколько я могу судить, можно порекомендовать:
-
Герберта Шилдта; Брюса Эккеля, рекомендуется читать только в оригинале, так как в русском издании выкинули пару глав;
- Двухтомник «Core Java», есть в русском переводе — том 1, том 2; , за авторством Joshua Bloch;
- Еще для изучения Java рекомендуют туториалы от Oracle, на первый взгляд выглядят они годно;
- А тут можно почитать отличный туториал по Maven, компенсирующий излишнюю увлеченность авторов книг самим языком;
Ну и дальше все зависит от интересующих вас задач — Spring, Hibernate, Swing, Netty или чем там принято решать проблему c10k в Java, разработка мобильных приложений под Android и так далее.
Отмечу, что я далеко не специалист по Java, так что если вы видите неточности в тексте, или у вас есть дополнения, не стесняйтесь пользоваться комментариями.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.