Язык Java

Java — не просто язык программирования, а целая программная платформа с широкими возможностями. Основными составляющими блоками этой платформы являются:
  • базовые инструменты для написания и запуска программ на Java;
  • библиотеки и классы — ядро языка. Они обеспечивают основные функциональные возможности программирования на Java: обработка исключений, многопоточность, коллекции, логирование, рефлексия, безопасность, работа с сетью, работа с XML, сериализация, регулярные выражения.
  • инструменты для развертывания и автоматического запуска приложений;
  • инструменты для создания фронтенда (GUI, интерфейса пользователя). Это классы библиотек JavaFX, Swing и Java2D;
  • библиотеки, для работы с базами данных, удаленно по сети, такие как JDBC, JNDI, RMI и Java RMI-IIOP.
Если вы хотите узнать больше о классах и инструментах Java, переходите по ссылке — там есть всё. Первая версия Java JDK 1.0 включала «всего лишь» несколько сотен классов. Зато в настоящее время их число увеличилось уже до нескольких тысяч. За время жизни языка авторы внесли огромное количество изменений, которые повышают его безопасность, функциональность и переносимость. Благодаря постоянному совершенствованию и поддержке языка со стороны его разработчиков, Java всегда шла в ногу с развитием IT-технологий. Так что в настоящее время перед нами — современный язык, основными характеристиками которого являются:
  • Невысокий порог вхождения
    Изучать Java проще, чем большинство языков с Си-подобным синтаксисом

  • Объектно-ориентированность
    Программы в Java строятся на основании объектов и их взаимодействии, что позволяет задействовать все преимущества ООП

  • Переносимость
    Благодаря использованию интерпретатора — виртуальной машины Java, программы являются переносимыми не только на различные платформы, но и на различные устройства

  • Платформенная независимость
    Программа, написанная на Java, для одной платформы, компилируется в промежуточный байт-код, который может запускаться на других платформах благодаря интерпретации с помощью JVM под каждую платформу

  • Развитая многопоточность
    Средства Java позволяют управлять выполнением нескольких потоков, что позволяет создавать многопоточные приложения

  • Безопасность
    Благодаря встроенной в JVM верификации байт-кода, отсутствии в Java ручного управления памятью, слежением за переполнением стека, а также наличием различных API, позволяющих контролировать безопасность, язык позволяет создавать действительно безопасные приложения

  • Отказоустойчивость
    Механизм исключений, как при компиляции, так и во время непосредственного выполнения, повышает отказоустойчивость программ и снижает количество ошибок

  • Интерпретируемость
    Java-интерпретатор может выполнять байт-коды Java на любой машине, на которой имеется JVM и JRE.

  • Распределенность
    Java имеет инструменты для создания распределенных приложений.

  • Производительность
    Использование JIT (Just-in-time)-компилятора обеспечивает высокую скорость работу приложений, сопоставимую по скорости с языками С и С++.

Первые шаги в освоении новой профессии не всегда даются легко. Особенно если не знаешь с чего начать, а вопросов возникает множество. В случае с программированием вопрос «с чего начать изучение Java» возникнет самым первым. Помочь ответить на него вам поможет эта блок-схема:
Чтобы начать изучение Java с нуля в первую очередь желательно разобраться с основными понятиями. То есть усвоить, что включает в себя язык Java, что представляет собой программа на Java и как происходит ее выполнение. Затем следует переходить к освоению синтаксиса языка, его основ, изучению основных библиотек. После элементарного прочтения парочки статей о самом языке Java изучение основ можно начинать. Но для начала нужно установить программное обеспечение для разработки и запуска программ — JDK (Java Development Kit).

Установка Java на компьютер

Итак, делаем первый шаг при изучении Java с нуля – устанавливаем JDK. Для этого вам потребуется проделать несколько простых операций:
  1. перейти на сайт Oracle;
  2. выбрать и скачать установочный файл в зависимости от вашей операционной системы;
  3. выполнить установку, следуя рекомендациям программы-установщика;
  4. настроить переменную окружения, если вы используете Windows
Вот, например, описание установки JDK и переменной окружения для операционной системы Windows.

Основные определения

Если вы только начали изучать Java, то непременно встретите следующие термины: JVM (Java Virtual Machine) — виртуальная машина Java. Это программный модуль, зависящий от платформы, который служит для интерпретации исходного байт-кода в машинный код и его исполнения. JRE (Java Runtime Environment) — исполняющая среда выполнения Java. Включает в себя реализацию JVM для конкретной платформы и набор библиотек, необходимых для выполнения программ на Java. JDK (Java Development Kit) — набор инструментов разработчика, необходимых для написания программ на Java. Включает в себя компилятор, JRE, набор стандартных библиотек Java, документацию, различные утилиты. Исходный код – текстовый файл на языке Java, имеющий расширение .java Байт-код — машинно-независимый низкоуровневый код, представляющий собой набор инструкций для JVM. Машинный код — набор машинных инструкций в двоичном формате, которые непосредственно выполняются процессором. Компиляция — преобразование исходного кода в байт-код. Интерпретация — преобразование байт-кода в машинный код. Платформа — программно-аппаратная среда, в которой происходит выполнение программ и приложений. Наиболее популярными платформами являются Microsoft Windows, Linux, ОС Solaris и Mac OS. Эта схема поможет лучше ориентироваться в понятиях JVM, JRE и JDK:

Жизненный цикл программы

Жизненный цикл программы на языке Java начинается с написания исходного кода в текстовом формате. Обычно для написания программ используются специальные среды для разработки – Integrated Development Environment (IDE), но простые программы можно набирать и в текстовом редакторе, даже в Notepad, который поставляется с любой редакцией ОС Windows. Исходный код необходимо сохранить в файл, имеющий расширение .java. Пример программы HelloWorld.java:
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("This is my first program");
    }
}
Прежде, чем выполнить этот исходный код, его необходимо скомпилировать в байт-код с помощью компилятора. Компилятор — это утилита, которая является частью JDK. В результате его работы мы получим файл с расширением .class, который содержит байт-код — инструкции для JVM, формат которых напоминает язык ассемблер. Наша программа HelloWorld.java будет скомпилирована в файл HelloWorld.class. Платформа Java не предусматривает инструментов для редактирования байт-кода, но возможность просмотреть его все же есть. Чтобы посмотреть, что представляет собой байт-код программы на Java, можно воспользоваться утилитой дизасcемблера javap, которая входит в состав JDK. HelloWorld. class будет содержать такой байт-код:
Compiled from "HelloWorld.java"
public class HelloWorld {
  public HelloWorld();
    Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."":()V
4: return

  public static void main(java.lang.String[]);
    Code:
0: getstatic #2//Fieldjava/lang/System.out:Ljava/io/PrintStream;
3: ldc       #3// String This is my first program
5:invokevirtual#4//Methodjava/io/PrintStream.println:(Ljava/lang/String;)V
8: return
}
Теперь наша программа хранится в скомпилированном виде в файле HelloWorld.class. Для ее выполнения на любой из платформ необходимо наличие установленной JRE. Возможность переносимости Java-программ на любую платформу обеспечивается за счет использования JVM. Исполнение программы — это выполнение байт-кода виртуальной машиной Java. Выполнение программ производит утилита java, которой необходимо указать имя скомпилированного файла. Выполнение происходит в следующей последовательности:
  1. в оперативной памяти компьютера запускается JVM. По сути это программа, которая служит для выполнения написанных нами Java-программ;
  2. с помощью начального загрузчика классов JVM загружает и инициализирует наш класс в памяти компьютера. В нашем примере это класс HelloWorld;
  3. далее в нашем классе JVM ищет метод public static void main(String[]);
  4. выполняется код метода main. При этом, если необходимо для выполнения программы, производиться загрузка и инициализация других классов;
  5. после выполнения кода производится уборка мусора — очистка памяти и закрытие программы JVM.
При выполнении всех этих действий JVM интерпретирует (преобразовывает) байт-код в машинную инструкцию для процессора с учетом операционной системы, на которой она выполняется. Схематично жизненный цикл Java-программы можно представить так:

Выбор и установка среды разработки

Для того, чтобы быстро и эффективно программировать на Java вам понадобиться среда разработки — приложение для написания программ на Java. Наиболее популярными IDE среди разработчиков на Java являются:
  • IntelliJ IDEA
  • Eclipse
  • NetBeans
Согласно обзору популярности инструментов Java разработки от компании RebelLabs за 2017 лидером является IntelliJ IDEA, второе место занимает Eclipse, на третьем месте со значительным отставанием от пары лидеров расположился NetBeans. Доля остальных IDE невелика и не превышает в общем объеме 3%. Хороший сравнительный обзор этих IDE можно посмотреть здесь. Для новичков вполне достаточно установить IntelliJ IDEA Community Edition. Во-первых, вы получите все плюсы современной IDE, такие как: подсказки, проверка кода, возможность отладки кода, удобная интеграция с БД, серверами и поддержка многих инструментов и технологий разработки. Во-вторых, вы сделаете первый шаг в освоении профессионального инструмента разработки, используемого большинством разработчиков. Инструкция по установке IntelliJ IDEA приводится в начале обучающего курса JavaRush, также с ней можно ознакомиться на этом ресурсе.

Заключение

Начать изучение Java с нуля самостоятельно не составит труда для большинства начинающих. Для этого вполне достаточно знаний на уровне пользователя персонального компьютера. Чтобы эффективно начать изучать Java проделайте несколько простых шагов:
  1. установите Java на компьютер
  2. изучите основные понятия
  3. установите среду разработки
  4. напишите и запустите свою первую программу.