Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Модуль 1. Урок 5. Настройка окружающей среды для разработки на языке Java. Введение в Java

Видео может быть заблокировано из-за расширений браузера. В статье вы найдете решение этой проблемы.

Потратив время и силы на начальную установку и настройку среды разработки - Вы избавите себя от излишних препятствий, выполняя простейшие обучающие задачки.

Программист не обязан знать то, как перепрошить утюг, но точно должен знать свою среду разработки.


Windows or Unix-like?

Windows вполне жизнеспособная система для разработки на языке java. Но всегда есть "НО". В процессе обучения, любому языку программирования, Вы неизбежно знакомитесь с различными инструментами разработки. Вы в любом случае будете настраивать переменные среды окружения, познавать консоль, управлять зависимостями. И лучше сразу делать это на Unix-like системе(MacOs, Ubuntu, FreeBSD & others) чем крутить "костыли" к Windows и удивляться :) Тем более, что все учебные примеры этого курса осуществляются в Unix-like операционной системе (ОС).

И если в вашей жизни была только Windows — не беда, рекомендую:

  1. Или полноценный linux установленный параллельно/вместо Windows. Особенно если у вас совсем слабый компьютер. Да, это требует некоторых базовых знаний по инсталляции операционных систем. Но это придется познать, если Вы собираетесь писать программы для компьютеров, а 96% серверов работают под Unix-like системами. Тем более, что инструкций "на пальцах" по инсталляции операционных систем — море.

    Например, Ubuntu (лучше LTS версия) - ставится очень хорошо и просто. Даже рядом с Windows 10. Заставит вас, со временем, разобраться в терминале. И, возможно, возненавидеть его, а там один шаг... ))

    Например, можно и Linux Mint попробовать — он легче воспринимается пользователями Windows. Основан на Ubuntu.

    Например, можно и Kubuntu попробовать — тоже легче воспринимается пользователями Windows. Также основан на Ubuntu. Просто оболочка другая.

    Вот простая подсказка как установить Ubuntu параллельно Windows 10. Сразу обращаю ваше внимание на то, что и Windows должна быть установлена в UEFI режиме с разметкой диска GPT и Ubuntu должна быть записана на флешку с соответствующими параметрами. Рекомендую писать образ на флешку программой rufus.

    Любые вопросы по операционным системам можно задать в Slack - группа #OS

  2. Или Cygwin - UNIX-подобная среда и интерфейс командной строки для Microsoft Windows. Многие пользуются именно этой программой, при разработке под ОС Windows.

    Потребует много внимания к пакетам на этапе установки. Сразу для удобства, после установки, включите "понимание звездочек" командой shopt -s globstar. Cygwin создает свою домашнюю папку где-то на системном диске и там уже обитает пользователь. То есть Cygwin не пользуется стандартными домашними директориями Windows, но может по ним перемещаться.

  3. Или просто сразу установите систему контроля версий Git — все равно понадобится. В ее составе идет git-BASH (MINGW64). Под капотом работает такой же эмулятор как и в Cygwin — mintty. Ведет себя как unix-like терминал и вызывается из любой директории в системе — очень удобно. Для очень начальной разработки на java под ОС Windows — хватит с головой!

    В процессе установки в меню компонентов в пункте Windows Explorer integration ставим галочку напротив подпункта Git Bash Here. Удобно запускается из любой папки в контекстном мено по ПКМышки. А во избежание использования визуального интерфейса гита - убираем галочку со словами Git GUI. Git-BASH хорошо интегрирован с файловой системой Windows. Не создает своих файловых систем и домашних папок как Cygwin, а просто пользуется структурой директорий Windows. Но этот интерфейс очень урезан, по сравнению с терминалом линукса и не имеет такого пакетного менеджера как apt-get или такого простого управления пакетами как в Cygwin. Но позволит выполнять простейшие команды, создавать элиасы, компилировать и запускать программы. Для начала - "самое оно"!

Все, приведенные выше, варианты выбора ОС для разработки не являются строгими рекомендациями. Экспериментируйте, комбинируйте. Например, можно установить Git в Windows и на нем познавать секреты BASH, а можно использовать CMD или PowerShell, просто подправляя некоторые команды под ОС Windows. Для обучения — этого хватит! И опять "НО", помните: 96++ процентов серверов работают на Unix-like системах — целые программные экосистемы выращены для/вокруг этих ОС. И ваши программы так или иначе будут касаться их. И про Android не забывайте — это тоже Unix-like система.

Родной терминал и менеджер пакетов в Windows

В Windows есть терминал, в котором можно открывать несколько вкладок с CMD, PowerShell или даже Azure Cloud Shell. Устанавливается из магазина. Называется Windows Terminal. Он будет удобен для тех, кто использует Ubuntu внутри Windows.

Вот документация на это приложение.

Пакетный менеджер называется winget (Windows Package Manager Client). На 20.05.2020 его можно получить только по программе предварительной оценки Windows. Вот ссылка на репозиторий. Там есть инструкция по установке.

Java Development Kit

Для компиляции программ нам понадобится комплект для разработчика JDK. Который, кстати, включает в себя и обычную JRE.

На данный момент существует две основных ветки JDK:

  1. OracleJDK — проприетарная ветка с закрытым кодом и различными патентами и ограниченными правами на использование.
  2. OpenJDK — это ветка с открытым исходным кодом.

Качаем и устанавливаем JDK

Для начала нужно определится с веткой JDK и версией. Версию рекомендую ставить восьмую, т.к. курс построен на ней. А выбор ветки, на данный момент, лучше делать основываясь на удобстве использования конкретно в вашем случае. Например у меня, в Windows стоит OracleJDK, а в Ubuntu OpenJDK.

Очень удобно устанавливать и управлять различными средствами разработки с помощью SDKMAN!. SDKMAN! даже позволяет назначать свою JDK для отдельной папки/проекта.

Если хотите вручную скачать и установить:

  1. Общая страница выбора OracleJDK - Тут Вы можете выбрать любую необходимую версию OracleJDK. Загрузка более старых версий OracleJDK доступна только после регистрации в системе Oracle. Еще более древние релизы OracleJDK доступны по пункту Java Archive в самом низу страницы загрузки.
  2. OpenJDK на сайте проекта.

Необходимо скачать подходящую версию JDK именно под вашу операционную систему.

В Windows необходимо обязательно скачать и запустить, соответственно, исполняемый файл. Как установить JDK - видео инструкция установки JDK на Windows 10.

Управление версиями JDK проще осуществлять:

  • в Ubuntu с помощью команды update-java-alternatives или SDKMAN!.
  • в Windows с помощью изменения переменной JAVA_HOME в переменных среды окружения (об этом ниже) или SDKMAN!. Можно, конечно, еще использовать пакетный менеджер CHOCO. Но мне кажется, что проще поменять одну переменную среды окружения, для переключения разных версий JDK в системе.

Переменные среды окружения

Это переменные, в которых, в частности, указаны пути к исполняемым файлам в операционной системе.

BASH: javac command not found — говорит о том, что в системе не установлен JDK или неправильно прописаны переменные среды. Система просто не видит исполняемые файлы java. Такое часто бывает на Windows. Повторяю: JRE входит в состав JDK! Но не наоборот.

Рекомендую создать переменную среды JAVA_HOME, которая будет содержать путь к папке с конкретной версией JDK, а в переменной PATH к JAVA_HOME добавить уже /bin (\bin - для windows). Это позволит подменять версию JDK во всей системе простым изменением пути к нужному JDK в переменной JAVA_HOME. Для того чтобы эти изменения подхватывались в терминале, нужно перезапустить его, чтобы он заново прочитал переменные среды окружения. Естественно, после сохранения изменений в переменных среды окружения.

В Windows нужно еще, ко всему, удалить строку пути к java в переменной Path в окошке системные переменные (нижнее). Чтобы не было разночтений путей к java. Иначе возникнет ситуация, когда код компилируется, скажем, под java13, а запустить Вы его пытаетесь на java8 и тому подобное.

То есть, в любой системе, должна быть одна переменная JAVA_HOME и одно ее упоминание в переменной Path с постфиксом /bin. Любые другие ссылки на java нужно убрать, аккуратно, из переменной Path.

Про IDEA

В начале обучения IntelliJ IDEA не будет часто нужна — все в терминале будем понимать. Но изучать эту среду разработки постепенно уже нужно.

Для обучения работе с IDEA стоит применить плагин IDEA Features Trainer — требует установки в самой IDEA в настройках. Settings -> Plugins -> Browse Repositories ищем там. После установки этого плагина — в IDEA появится жёлтенький значок Learn Intellij IDEA.

Обращаю ваше внимание на то, что отдельные *.java файлы или малое их количество проще компилировать и запускать из консоли. Это не только проще чем в разухабистой IDEA, но и позволит Вам вникнуть в то, как работает система команд в терминале. Каждая ошибочка или необходимость разухабистой команды в терминале — заставляет лучше вникнуть в тонкости экосистемы языка.

После детальной настройки под себя — не забудьте импортировать эти настройки ;) File —> Import Settings... Это позволит восстанавливать настройки, после чрезмерных экспериментов с ними.

Про sublime

Сайт Sublime Text.

Очень рекомендую для простых задач на пару файлов. По сравнению с IDEA сильно легковеснее. Но тоже дает возможность работать с разухабистыми проектами. Также sublime имеет свою базу плагинов Preferences —> Package Control.

Для вызова sublime из терминала или для определения его как редактора по умолчанию, например, для Git или еще какого приложения — используйте файл с именем subl. И для того чтобы не ловить "subl" - command not found — пропишите путь к нему, в переменной Path в переменных среды окружения.

Пример запуска из терминала: subl README.md.

К сожалению, sublime не имеет простого способа импорта/экспорта любимых настроек. Для этого нужны или какие-то плагины, или нужно переносить папки sublime из директории пользователя.

Базовые команды языка java в консоли

  • javac - команда, которая компилирует java-код в байт-код. Например из файла Main.java в файл Main.class. Может принимать на вход как один файл, так и перечень файлов. Файлы для компиляции необходимо указывать с расширением *.java.
  • javap - это дизассемблер, так сказать. Он показывает содержимое файлов *.class. Эта команда пригодится в одном из следующих курсов, а потом и в разработке, тестировании.
  • java - это команда, которая запускает байт-код в виртуальной машине java. Запускает на исполнение, например, Main.class или MyProgram.jar. Вот эта команда и нужна для запуска скомпилированных файлов. На вход этой команде нужно подавать скомпилированный класс, но без расширения, только его имя. Например, так: java Main.

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

И еще чуть-чуть. :)

Вам должно показаться, что в этом уроке слишком много информации по среде разработчика. Но уверяю — Вам еще предстоит многое узнать. А в этом уроке собрана базовая информация о настройке среды разработки, к которой Вы будете время-от-времени возвращаться в начале своего java-пути. И пока Вы в начале: экспериментируйте, совершайте ошибки.

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

Оформляйте свои вопросы в разметке Markdown или пользоваться соответствующими кнопками над полем ввода текста своего вопроса — это повысит читабельность Ваших сообщений. Так же, знание Markdown, пригодится в оформлении описания или документации на собственные проекты. Markdown, как говорит Википедия: "..облегчённый язык разметки, созданный с целью написания наиболее читаемого и удобного для правки текста, но пригодного для преобразования в языки для продвинутых публикаций (HTML, Rich Text и других).".

Markdown пригодится:

- для описания собственных проектов и документации в файлах `README.md`;
- для красивого и читабельного оформления своих вопросов тут на hexlet.io.

Вот очень полезная статья, которая поможет понять как лучше и точнее задавать вопросы по возникающим у Вас проблемам и задачам. Это статья пригодиться Вам не только в любом обучении, но и в любой работе. Потому что корректно сформулированный вопрос чаще приводит к корректному ответу ;)


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

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

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

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

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

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

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

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

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

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

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

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