Введение в язык программирования Java

Java является параллельным, объектно-ориентированным и предназначенным для того, чтобы позволить разработчикам приложений « написать один раз, запустить где угодно »(WORA). Java считается быстрым языком, почти таким же быстрым, как такие языки, как C и Rust, но он использует много памяти по сравнению с этими языками.

1. Что такое язык программирования Java?

Java — это универсальный язык программирования, который является параллельным, основанным на классах, объектно-ориентированным и специально разработанным для того, чтобы иметь как можно меньше зависимостей от реализации. Он предназначен для того, чтобы позволить разработчикам приложений «написать один раз, запустить где угодно»(WORA), что означает, что скомпилированный код Java может работать на всех платформах, которые поддерживают Java, без необходимости перекомпиляции.

Например, мы можем написать и скомпилировать программу Java в UNIX и запустить ее на машинах Microsoft Windows, Macintosh или UNIX без каких-либо изменений исходного кода.

WORA достигается путем компиляции программы Java в промежуточный язык, называемый байт-кодом. Формат байт-кода не зависит от платформы. Для запуска байт-кода на каждой платформе используется виртуальная машина, называемая Java Virtual Machine(JVM).

JDK против JRE против JVM
JDK против JRE против JVM

2. История Явы

Java изначально был разработан Джеймсом Гослингом в Sun Microsystems(которая впоследствии была приобретена Oracle Corporation) и выпущен в 1995 году как основной компонент платформы Java Sun Microsystems. Язык во многом заимствует свой синтаксис из C и C++, но в нем меньше низкоуровневых возможностей, чем в любом из них.

Язык программирования Java был разработан как машинно-независимый язык программирования, достаточно мощный, чтобы заменить собственный исполняемый код. Первоначально начавшийся с апплетов(встроенных компонентов в веб-страницу), сегодня Java является наиболее используемой платформой для веб-приложений и веб-сервисов. Сегодня ответвление платформы Java является основой операционной системы Android от Google, которая управляет миллиардами телефонов и других мобильных устройств.

Oracle Corporation является текущим владельцем официальной реализации платформы Java SE после приобретения Sun Microsystems 27 января 2010 года. Эта реализация основана на оригинальной реализации Java от Sun. Реализация Oracle доступна для Microsoft Windows, Mac OS X, Linux и Solaris.

Реализация Oracle упакована в два различных дистрибутива:

  1. Java Runtime Environment(JRE), которая содержит части платформы Java SE, необходимые для запуска программ Java, и предназначена для конечных пользователей.
  2. Java Development Kit(JDK), предназначенный для разработчиков программного обеспечения и включающий в себя такие инструменты разработки, как компилятор Java, Javadoc, Jar и отладчик.

Обо всех предыдущих выпусках Java и их возможностях можно прочитать в связанной публикации.

3. Виртуальная машина Java

В основе экосистемы Java лежит виртуальная машина Java(JVM). Когда мы компилируем программу Java, исходный код Java преобразуется в простые двоичные инструкции, очень похожие на обычный машинный код микропроцессора. Однако, в то время как исходный код C или C++ сводится к собственным инструкциям для конкретной модели процессора, исходный код Java компилируется в универсальный формат. Эти скомпилированные инструкции называются байт-кодом и используются виртуальной машиной для запуска кода с помощью интерпретатора среды выполнения Java.

Система выполнения выполняет все обычные действия аппаратного процессора. Она выполняет стековый набор инструкций и управляет памятью как операционная система в соответствии со строго определенной открытой спецификацией для создания виртуальной машины, совместимой с Java. Например, Java определяет размеры и математические свойства всех своих примитивных типов данных, а не оставляет это на усмотрение реализации платформы.

Помимо компиляции исходного кода в переносимый байт-код, Java дополнительно оптимизирует свою производительность, компилируя байт-код в машинный код «на лету» с помощью JIT-компиляции(Just-in-Time).

Java также поддерживает адаптивную компиляцию. Например, HotSpot JVM запускается как обычный интерпретатор байт-кода Java, но также профилирует, какие части программы выполняются повторно. Как только HotSpot это узнает, он компилирует эти разделы в оптимальный машинный код.

4. Автоматическое управление памятью

Java использует автоматический сборщик мусора для управления памятью в жизненном цикле объекта. Программист определяет, когда создаются объекты, а среда выполнения Java отвечает за восстановление памяти после того, как объекты больше не используются. Как только не остается ссылок на объект, недоступная память становится доступной для автоматического освобождения сборщиком мусора.

Что-то похожее на утечку памяти все еще может произойти, если код программиста содержит ссылку на объект, который больше не нужен, как правило, когда объекты, которые больше не нужны, хранятся в контейнерах, которые все еще используются. Если вызываются методы для несуществующего объекта, выдается « NullPointerException ».

Сборка мусора может произойти в любое время. В идеале она будет происходить, когда программа простаивает. Она гарантированно сработает, если в куче недостаточно свободной памяти для выделения нового объекта; это может привести к кратковременной остановке программы. Явное управление памятью невозможно в Java.

5. Программа «Привет, мир!»

Традиционная программа «Hello, world!» может быть написана на Java как. Исходный файл Java должен быть назван в честь открытого класса, который он содержит, с добавлением суффикса .java, например, Application.java.

 Приложение открытого класса {public static void main(String[] args) {System.out.println("Hello World!"); // Выводит Hello World! на консоль.}}

Исходный файл должен быть сначала скомпилирован в байт-код с помощью компилятора Java, создав файл с именем Application.class. Только после этого его можно выполнить или «запустить».

$ javac Application.java

Точкой входа для любой программы Java является метод main(). Для выполнения метода main() используйте команду java с именем класса.

$ java Application.class

Приведенная выше программа выполнит оператор печати, и на консоли будет выведено сообщение «Hello World».

6. Возможности Java

Java имеет множество особенностей. Некоторые из них уникальны для Java, а некоторые распространены среди других языков.

  • Объектно-ориентированный – в Java все представлено в виде объектов. Объект – это своего рода оболочка, которая инкапсулирует данные и их связанное поведение. Java поддерживает все основные принципы объектно-ориентированного программирования, как и в других объектно-ориентированных языках.
  • Независимость от платформы – программы, написанные на Java, преобразуются в байт-код компилятором Java. Этот байт-код может быть запущен на любой машине, имеющей среду выполнения Java(JRE). Это делает приложения Java независимыми от платформы. Это отличается от приложений C или C++, где программы компилируются в двоичные файлы, специфичные для ОС.
  • Безопасный – приложения Java работают в среде выполнения Java(JRE) практически без взаимодействия с системной ОС. Это делает Java более безопасным, чем другие языки.
  • Многопоточный – Java поддерживает написание приложений, которые могут выполнять несколько задач в отдельных потоках. Все задачи выполняются с использованием техники квантования времени потоков ОС. Например, приложение Java служит формой входа пользователя во время выполнения фоновых процессов.
  • Высокая производительность – Java является интерпретируемым языком, поэтому он никогда не будет таким быстрым, как компилируемый язык, такой как C или C++. Но Java обеспечивает высокую производительность с использованием компилятора just-in-time.
  • Нейтральный к архитектуре ОС — компилятор Java генерирует файл класса или байт-код, нейтральный к архитектуре ОС. Например, в программировании на языке C тип данных int занимает 2 байта памяти для 32-битной архитектуры и 4 байта памяти для 64-битной архитектуры. Однако он занимает 4 байта памяти как для 32-битной, так и для 64-битной архитектуры в Java.

7. Что дальше?

На странице учебника по Java перечислены все важные темы, которые вы можете изучить, чтобы глубже понять основы языка и продвинутые концепции.

Прокрутить вверх