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

Обновлено: 05.07.2024

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

Для чего используется JVM

JVM выполняет две основные функции: позволяет запускать Java-программы на любом устройстве или в любой операционной системе (известный как принцип "Написать один раз, запускать везде"), а также управлять памятью программ и оптимизировать ее. Когда в 1995 году была выпущена Java, все компьютерные программы были написаны для конкретной операционной системы, а программная память управлялась разработчиком программного обеспечения. Так что JVM стала откровением.

JavaWorld/IDG

Рисунок 1. Общий вид JVM

Полезно иметь техническое определение JVM, а разработчики программного обеспечения думают об этом повседневно. Давайте разберем их:

  • Техническое определение. JVM — это спецификация программы, которая выполняет код и предоставляет среду выполнения для этого кода.
  • Повседневное определение: JVM — это то, как мы запускаем наши Java-программы. Мы настраиваем параметры JVM, а затем полагаемся на нее для управления программными ресурсами во время выполнения.

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

Кто разрабатывает и поддерживает JVM?

JVM широко развернута, интенсивно используется и поддерживается некоторыми очень умными программистами, как корпоративными, так и открытыми. Проект OpenJDK является результатом решения Sun Microsystems открыть исходный код Java. OpenJDK продолжает управлять Java под управлением Oracle, и большая часть тяжелой работы в наши дни выполняется инженерами Oracle.

Управление памятью в JVM

Самым распространенным взаимодействием с работающей JVM является проверка использования памяти в куче и стеке. Наиболее распространенной корректировкой является настройка параметров памяти JVM.

Сборка мусора

До Java вся программная память управлялась программистом. В Java память программы управляется JVM. JVM управляет памятью с помощью процесса, называемого сборкой мусора, который постоянно идентифицирует и удаляет неиспользуемую память в программах Java. Сборка мусора происходит внутри работающей JVM.

Сначала Java подвергалась многочисленной критике за то, что она не так "близка к металлу", как C++, и, следовательно, не так быстра. Особенно спорным был процесс вывоза мусора. С тех пор было предложено и использовано множество алгоритмов и подходов для сборки мусора. Благодаря последовательной разработке и оптимизации сбор мусора значительно улучшился.

Что означает «близко к металлу»?

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

JVM в трех частях

Можно сказать, что у JVM есть три аспекта: спецификация, реализация и экземпляр. Рассмотрим каждый из них.

1. Спецификация JVM

Во-первых, JVM — это спецификация программного обеспечения. Несколько зацикленно спецификация JVM подчеркивает, что детали ее реализации не определены в спецификации, чтобы обеспечить максимальную креативность в ее реализации:

"Чтобы правильно реализовать виртуальную машину Java, вам нужно только уметь читать формат файла класса и правильно выполнять указанные в нем операции."

Дж.С. Бах однажды так описал создание музыки:

"Все, что вам нужно сделать, это нажать нужную клавишу в нужное время".

Итак, все, что нужно сделать JVM, — это правильно запускать Java-программы. Звучит просто, может даже показаться простым со стороны, но это грандиозная задача, особенно с учетом мощности и гибкости языка Java.

JVM как виртуальная машина

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

2. Реализации JVM

Реализация спецификации JVM приводит к фактической программе, которая является реализацией JVM. На самом деле существует множество реализаций JVM, как открытых, так и проприетарных. HotSpot JVM OpenJDK является эталонной реализацией и остается одной из наиболее тщательно проверенных кодовых баз в мире. HotSpot также является наиболее часто используемой JVM.

Почти все лицензированные JVM созданы как ответвления OpenJDK и HotSpot JVM, включая лицензированный JDK Oracle. Разработчики, создающие лицензионную версию OpenJDK, часто руководствуются желанием добавить улучшения производительности для конкретной ОС. Как правило, вы загружаете и устанавливаете JVM как составную часть Java Runtime Environment (JRE).

3. Экземпляр JVM

После того как спецификация JVM будет реализована и выпущена как программный продукт, вы сможете загрузить и запустить ее как программу. Эта загруженная программа является экземпляром (или созданной версией) JVM.

В большинстве случаев, когда разработчики говорят о "JVM", мы имеем в виду экземпляр JVM, работающий в среде разработки программного обеспечения или в рабочей среде. Вы можете сказать: «Эй, Ананд, сколько памяти использует JVM на этом сервере?» или "Я не могу поверить, что создал циклический вызов, и ошибка переполнения стека привела к сбою моей JVM. Какая ошибка новичка!"

Что такое спецификация программного обеспечения?

Спецификация программного обеспечения (или спецификация) – это удобочитаемый проектный документ, описывающий, как должна работать программная система. Цель спецификации — создать четкое описание и требования для разработчиков кода.

Загрузка и выполнение файлов классов в JVM

Мы говорили о роли JVM в запуске Java-приложений, но как она выполняет свои функции? Для запуска приложений Java виртуальная машина Java зависит от загрузчика классов Java и механизма выполнения Java.

Загрузчик классов Java в JVM

Все в Java является классом, и все приложения Java построены из классов. Приложение может состоять из одного класса или тысяч. Чтобы запустить приложение Java, JVM должна загрузить скомпилированные файлы .class в контекст, например на сервер, где к ним можно получить доступ. JVM зависит от своего загрузчика классов для выполнения этой функции.

Загрузчик классов Java — это часть JVM, которая загружает классы в память и делает их доступными для выполнения. Загрузчики классов используют такие методы, как отложенная загрузка и кэширование, чтобы сделать загрузку классов настолько эффективной, насколько это возможно. Тем не менее, загрузка классов не является эпической головоломкой, как, скажем, переносимое управление памятью во время выполнения, поэтому методы сравнительно просты.

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

Механизм исполнения в JVM

После того, как загрузчик классов выполнил свою работу по загрузке классов, JVM начинает выполнение кода в каждом классе. механизм выполнения — это компонент JVM, который обрабатывает эту функцию. Механизм выполнения необходим для работающей JVM. Фактически, для всех практических целей, это экземпляр JVM.

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

Как исполнительный механизм управляет системными ресурсами

Системные ресурсы можно разделить на две широкие категории: память и все остальное.

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

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

Эволюция JVM: прошлое, настоящее, будущее

В 1995 году JVM представила две революционные концепции, которые с тех пор стали стандартом для современной разработки программного обеспечения: "Напиши один раз, работай где угодно" и автоматическое управление памятью. В то время функциональная совместимость программного обеспечения была смелой концепцией, но сегодня немногие разработчики задумывались об этом дважды. Точно так же, в то время как нашим предкам-разработчикам приходилось самим управлять памятью программ, мое поколение выросло на сборке мусора.

Можно сказать, что Джеймс Гослинг и Брендан Эйх изобрели современное программирование, но в последующие десятилетия тысячи других усовершенствовали и доработали их идеи. В то время как виртуальная машина Java изначально предназначалась только для Java, сегодня она эволюционировала для поддержки многих языков сценариев и программирования, включая Scala, Groovy и Kotlin. Заглядывая вперед, трудно представить себе будущее, в котором JVM не будет занимать видное место в ландшафте разработки.

Все о JVM

Эта статья "Что такое JVM? Введение в виртуальную машину Java" была первоначально опубликована JavaWorld .

Мэттью Тайсон – основатель Dark Horse Group, Inc. Он верит в технологии, ориентированные на людей. Когда Мэтт не играет на гитаре, он исследует отдаленные районы и философские глубинки. Он пишет для JavaWorld с 2007 года.

Существует множество инструментов для управления Java. Это программное обеспечение упрощает весь процесс разработки, тестирования и развертывания на Java. Вот список лучших инструментов с их функциями и ссылками для скачивания.

Инструменты разработки Java

1) Сайт24x7

Отслеживайте производительность своих Java-приложений с помощью Site24x7 APM Insight. Site24x7 — это комплексное решение для мониторинга на основе SaaS для DevOps и ИТ. С помощью Site24x7 APM вы можете получить целостное представление о производительности вашего приложения в режиме реального времени и с легкостью отлаживать ошибки.

Основные характеристики:

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

2) Диспетчер приложений ManageEngine

ManageEngine Applications Manager помогает активно отслеживать приложения Java и производительность инфраструктуры.

Возможности:

  • Отслеживайте, оптимизируйте и устраняйте неполадки производительности приложений Java с помощью данных на уровне кода, распределенных трассировок и многого другого.
  • Поддерживает мониторинг виртуальной машины Java (JVM), среды выполнения Java (JRE), сервера приложений Java, JDBC, JMX и дампов потоков Java.
  • предотвратить возникновение ошибок и ненужный надзор.
  • Автоматические корректирующие действия с использованием веб-перехватчиков для запуска внешних действий.
  • Машинное обучение поддерживает аналитику, которая помогает прогнозировать использование и рост ресурсов в будущем.

3) Мониторинг производительности Java


Мониторинг производительности Java – это инструмент, позволяющий повысить производительность вашего приложения. Это программное обеспечение поможет вам без проблем проверить базу данных, память и параллелизм. Это позволяет вам находить проблемы, связанные с Java-программами времени выполнения и времени компиляции.

Возможности:

4) JUnit:


JUnit – это инструмент модульного тестирования с открытым исходным кодом для языка программирования Java. Это важный инструмент разработки Java для разработки и развертывания через тестирование.

Возможности:

  • Подготовка входных данных и настройка/создание поддельных объектов
  • Загрузка баз данных с определенным известным набором данных
  • Он предоставляет аннотации, чтобы тестовые классы могли запускать фикстуру до или после каждого теста.
  • JUnit обеспечивает поддержку написания и запуска тестов.
  • Он содержит аннотации для определения методов тестирования.
  • Предоставляет утверждения для проверки ожидаемых результатов.
  • Тесты JUnit позволяют быстрее писать код, что повышает качество

5) NetBeans:


NetBeans — это БЕСПЛАТНАЯ среда IDE с открытым исходным кодом. Это один из лучших инструментов для разработчиков Java, который позволяет разрабатывать настольные, мобильные и веб-приложения.

Возможности:

  • Он предлагает полную поддержку новейших технологий Java.
  • Поддержка быстрого и умного редактирования кода.
  • Простой и эффективный процесс управления проектами
  • Быстрая разработка пользовательского интерфейса
  • Помогает писать код без ошибок
  • Среда IDE NetBeans предлагает превосходную поддержку для разработчиков C/C++ и PHP
  • Среду IDE NetBeans можно установить в любой ОС, поддерживающей Java, от Windows до Linux и Mac OS X.

6) Apache Maven:


Apache Maven — это программный инструмент управления проектами. Он основан на концепции объектной модели проекта (POM).

Возможности:

  • Простая настройка проекта в соответствии с рекомендациями для запуска нового проекта или модуля за считанные секунды.
  • Это программное обеспечение для программирования Java позволяет легко писать плагины с использованием Java.
  • Мгновенный доступ к новым функциям с минимальной дополнительной настройкой
  • Задачи Ant для управления зависимостями и развертывания вне Maven
  • Управление выпуском и распространение публикации
  • Рекомендуется использовать центральный репозиторий файлов JAR и других зависимостей.

7) Дж. Крыса:

JRat — это набор инструментов для анализа времени выполнения Java. Это простой в использовании профилировщик производительности с открытым исходным кодом для платформы Java. Он может отслеживать выполнение приложения и измерения производительности.

Возможности:

  • Простая передача файлов в любое место на любом компьютере.
  • Разрешает удаленный просмотр jRAT
  • Поддержка перенаправления веб-сайтов.
  • JRat позволяет изменять системные файлы
  • Помогает пользователям обрабатывать в своих системах
  • Создание скриншотов позволяет администратору вести учет проблем на клиентском компьютере.

8) Мокито:


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

Возможности:

  • Его можно использовать для написания тестов в стиле Behavior Driven Development с синтаксическим сахаром
  • Он предлагает приятный, легко читаемый синтаксис. Он также содержит некоторые аннотации, необходимые для сокращения шаблонного кода.
  • Mockito позволяет писать простые тесты

9) Клевер:

Clover – это инструмент Java для создания отчетов о покрытии кода на основе модульных тестов. Его можно запустить как плагин в Ant, Eclipse или Maven. Его также можно использовать для сбора данных о покрытии интеграционных тестов.

Возможности:

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

10) Ehcache:


Ehcache – это основанный на стандартах инструмент кэширования с открытым исходным кодом для языка Java. Это надежный, проверенный, полнофункциональный инструмент, который можно интегрировать с другими популярными библиотеками и платформами.

Возможности:

  • Ehcache стремится сохранять компактность, чтобы приложения были как можно более легкими.
  • Обновленный API, в котором используются универсальные шаблоны Java и взаимодействие с кэшем.
  • API очень прост и удобен в использовании
  • Масштабируемость до сотен кэшей.
  • Разрешает интеграцию box Spring Caching и Hibernate с поддержкой javax.cache

11) VisualVM:


VisualVM – это визуальный инструмент для интеграции инструментов JDK из командной строки. Он также предлагает облегченные возможности профилирования. Он предназначен как для разработки, так и для использования во время производства.

Возможности:

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

12) Oracle JDeveloper:

Oracle J Developer — это бесплатная среда разработки Java. Это один из лучших инструментов Java, который позволяет разработчикам создавать надежную сервис-ориентированную архитектуру с помощью Java. Он поддерживает полный жизненный цикл разработки.

Возможности:

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

13) Поиск ошибок:

FindBugs — это Java-проект с открытым исходным кодом для статического анализа. Он сканирует байт-код Java для выявления потенциальных ошибок.Этот инструмент обеспечивает раннюю обратную связь о потенциальных ошибках в коде. Это помогает разработчику получить доступ ко всем типам ошибок на ранней стадии разработки.

Возможности:

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

14) Декомпилятор Java:


Java Decompiler – это бесплатный инструмент Java, который реконструирует исходный код Java из файлов CLASS. Это позволяет декомпилировать апплеты Java, файлы JAR и ZIP для создания точного исходного кода Java.

Возможности:

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

15) Градл:


Gradle — это Java-инструмент для автоматизации проектов. Он основан на функциях Apache Ant и Apache Maven. Он также служит инструментом сборки по умолчанию для платформы Android.

Возможности:

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

16) Кобертура:


Cobertura – это бесплатный инструмент Java, который подсчитывает процент кода, к которому обращаются тесты. Его также можно использовать для определения того, в каких частях программы Java отсутствует тестовое покрытие.

Возможности:

  • Он позволяет отображать линии и ответвления в подробном древовидном представлении.
  • Просмотреть исходный код и раскрасить его в соответствии с покрытием строки
  • Запуск Scala, Eclipse JUnit и PDE в скрытом режиме
  • Он отфильтровывает неинтересные классы и пакеты
  • Инструментирует байт-код Java после завершения компиляции
  • Позволяет создавать отчеты в формате HTML или XML.
  • Отображать процент строк, ветвей, охваченных для каждого класса, пакета и всего проекта

17) Отлично:


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

Возможности:

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

18) Ваш набор:


Возможности:

  • Простой процесс установки
  • Удобная среда для разработчиков
  • Простая интеграция с интегрированными средами разработки и серверами приложений
  • Мощные возможности анализа
  • Встроенное туннелирование SSH упрощает профилирование в условиях ограниченной сети.
  • Разрешающая лицензионная политика разрешает неограниченное количество профилированных приложений
  • Он предлагает высокоуровневый мониторинг сети, базы данных, ввода-вывода.
  • Результаты профилирования высокого уровня, позволяющие увидеть общую картину и выявить точные проблемы.

19) Затмение:


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

Возможности:

  • Разработка на основе модели
  • Простая и бесшовная интеграция с JUnit
  • Предоставление полных подробных отчетов
  • Кроме того, его легко настроить. В сочетании с сервером автоматических отчетов об ошибках Ctrlflow
  • Eclipse предлагает лучший инструментарий для проектов JEE.

20) Искра:


Spark – это надежная платформа на основе Java для разработки веб-приложений.Это позволяет разработчикам Java создавать веб-приложения без написания стандартного кода.

Возможности:

  • Возможность поддержки нескольких языков
  • Он поставляется с инструментами для интерактивных/декларативных запросов, потоковой передачи данных и машинного обучения.
  • Код Spark можно повторно использовать для пакетной обработки.
  • Потоковая передача Spark может обрабатывать потоки в реальном времени.
  • Есть возможность обработки потока в реальном времени.
  • Активное, прогрессивное и быстрорастущее сообщество

21) Идея IntelliJ:


IntelliJ IDEA — это многоцелевая интегрированная среда разработки, ориентированная на разработку Java. Это один из лучших инструментов программирования на Java, предлагающий расширенную поддержку разработки веб-приложений, мобильных и гибридных приложений.

Возможности:

  • Он анализирует исходный код между всеми файлами проекта и языками.
  • Содержит список наиболее подходящих символов, применимых в текущем контексте.
  • Это позволяет проводить рефакторинг на разных языках
  • Находит повторяющиеся фрагменты кода на лету
  • Проверки и быстрые исправления
  • Среда, ориентированная на редактора
  • Он позволяет пользователю легко использовать статические методы или константы.

22) Apache JMeter:


JMeter – это инструмент нагрузочного тестирования с открытым исходным кодом. Он предназначен для загрузки функциональных тестов и измерения производительности веб-сайтов.

Возможности:

  • JMeter позволяет выполнять тест нагрузки и производительности для различных типов серверов
  • Этот инструмент нагрузочного тестирования хранит свои планы тестирования в формате XML, что позволяет пользователям создавать планы тестирования с помощью текстового редактора.
  • Этот инструмент также можно использовать для автоматизированного и функционального тестирования приложений.
  • Подключаемые модули для анализа и визуализации данных обеспечивают расширяемость и персонализацию.
  • Функции должны обеспечивать динамический ввод данных для проверки манипулирования данными.

23) Комплект разработки Java:

Java Development Kit (JDK) – это инструмент для написания апплетов и приложений Java. JDK включает в себя среду выполнения Java, компилятор Java и API-интерфейсы Java.

Возможности:

  • Строка в выражении переключения
  • Подчеркивание между цифрами в числовых литералах
  • Целочисленные типы как двоичные литералы
  • Поддержка обработки нескольких исключений в одном блоке catch.
  • Заявление о попытке использования ресурсов
  • Автоматическое определение типа при создании универсального объекта

❓ Что такое инструменты Java?

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

Существует четыре платформы языка программирования Java:

Платформа Java, стандартная версия (Java SE)

Платформа Java, корпоративная версия (Java EE)

Платформа Java, Micro Edition (Java ME)

Все платформы Java состоят из виртуальной машины Java (ВМ) и интерфейса прикладного программирования (API). Виртуальная машина Java — это программа для конкретной аппаратной и программной платформы, которая запускает приложения технологии Java. API — это набор программных компонентов, которые можно использовать для создания других программных компонентов или приложений. Каждая платформа Java предоставляет виртуальную машину и API, что позволяет приложениям, написанным для этой платформы, работать на любой совместимой системе со всеми преимуществами языка программирования Java: независимостью от платформы, мощностью, стабильностью, простотой разработки и безопасность.

Ява SE

Когда большинство людей думают о языке программирования Java, они думают о Java SE API. API Java SE обеспечивает основные функции языка программирования Java. Он определяет все, от базовых типов и объектов языка программирования Java до классов высокого уровня, которые используются для работы в сети, безопасности, доступа к базе данных, разработки графического пользовательского интерфейса (GUI) и синтаксического анализа XML.

В дополнение к основному API платформа Java SE состоит из виртуальной машины, инструментов разработки, технологий развертывания и других библиотек классов и наборов инструментов, обычно используемых в приложениях на основе технологии Java.

Java EE

Платформа Java EE построена на основе платформы Java SE. Платформа Java EE предоставляет API и среду выполнения для разработки и запуска крупномасштабных, многоуровневых, масштабируемых, надежных и безопасных сетевых приложений.

Ява МЭ

Платформа Java ME предоставляет API и небольшую виртуальную машину для запуска приложений языка программирования Java на небольших устройствах, таких как мобильные телефоны. API представляет собой подмножество API Java SE вместе со специальными библиотеками классов, полезными для разработки приложений для небольших устройств. Приложения Java ME часто являются клиентами служб платформы Java EE.

Явские спецэффекты

Технология Java FX — это платформа для создания многофункциональных интернет-приложений, написанных на языке Java FX Script TM . Java FX Script — это статически типизированный декларативный язык, скомпилированный в байт-код технологии Java, который затем можно запустить на виртуальной машине Java. Приложения, написанные для платформы Java FX, могут включать классы языка программирования Java и ссылаться на них, а также могут быть клиентами служб платформы Java EE.

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

В этом руководстве мы обсудим Java как платформу. Мы также обсудим компоненты платформы Java и посмотрим, как они работают.

Java Components

Что вы узнаете:

Платформа Java

Платформа Java – это программное обеспечение или набор программ, которые помогают нам выполнять приложения, написанные на языке программирования Java. Платформа Java состоит из компилятора Java, набора библиотек и механизма выполнения.

Платформа Java не зависит от какой-либо конкретной ОС, что делает язык программирования Java независимым от платформы языком.

Платформа Java состоит из следующих компонентов.

  • Язык Java
  • Комплект средств разработки Java (JDK)
  • Среда выполнения Java (JRE)
  • Компилятор Java
  • Виртуальная машина Java (JVM)

Помимо перечисленных выше основных компонентов, платформа Java также содержит сборщики мусора, набор библиотек и другие дополнительные компоненты и инструменты, необходимые для эффективной работы приложений Java.

Давайте рассмотрим следующую диаграмму, на которой показана взаимосвязь между всеми этими компонентами.

 Связь между всеми компонентами Java

Итак, из приведенной выше диаграммы мы можем сделать вывод, что

JRE = JVM + библиотечные классы.
JDK = JRE + инструменты разработчика.

Прежде чем мы рассмотрим каждый из компонентов, давайте сначала разберемся с потоком выполнения Java-программы.

На следующей диаграмме показан поток программы Java.

Поток Java-программы

Итак, на приведенной выше диаграмме показан простой поток выполнения программы Java. Программа, написанная на языке Java, компилируется компилятором Java (javac). В отличие от компиляторов других языков, которые создают машинный код после компиляции, компилятор Javac создает файл класса, состоящий из байтового кода.

Теперь этот файл класса передается виртуальной машине Java (JVM), которая преобразует файл класса в объектный файл, содержащий машинно-зависимый код. Затем этот код выполняется машиной.

Давайте подробно обсудим каждый из этих компонентов.

Язык Java

Java — это язык программирования, используемый платформой Java. Java — это объектно-ориентированный язык программирования, синтаксис которого унаследован от C, а функции OOPS — от C++. У него есть свой синтаксис, правила, формат и парадигма программирования.

В этой серии мы подробно изучим все основные концепции Java и программирование.

Компилятор Java

Это компилятор для языка программирования Java, и его функция заключается в создании файлов классов Java из исходного кода Java. Файл класса Java содержит независимый от платформы байт-код Java.

После создания файлов классов JVM загружает эти файлы классов и либо интерпретирует байтовый код, либо компилирует его в машинный код с помощью JIT-компилятора.

Виртуальная машина Java (JVM)

JVM — это центр языка программирования Java и платформы Java. JVM преобразует байтовый код в машинно-зависимый код (также известный как объектный код на других языках программирования).

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

Независимость JVM от платформы позволяет нам создавать Java-программы на одном компьютере и выполнять их на другом (WORA — Write — Once — Run — Anywhere).

На следующей диаграмме показаны различные части JVM.

Различные части JVM

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

Для выполнения файл класса загружается в Ram загрузчиком классов. Здесь код BYTE проверяется на наличие проблем с безопасностью. Classloader также отвечает за загрузку, компоновку и инициализацию исполняемой программы.

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

Память JVM также содержит область методов и стек собственных методов, который содержит код метода и спецификацию на родном языке соответственно. Стек JVM содержит экземпляр программы или текущий поток. Если существует более одного потока, каждый поток будет иметь свой стек JVM.

После того как программа правильно скомпонована, она передается механизму выполнения. Механизм выполнения взаимодействует с собственным интерфейсом метода и библиотеками собственных методов. Интерфейс нативных методов — это среда программирования, которая позволяет коду Java вызывать библиотеки и нативные приложения, которые являются частью библиотек нативных методов.

Затем механизм выполнения преобразует байт-код в собственный машинный код с помощью JIT-компилятора. Затем программа выполняется машиной.

Примечание. JIT или JIT-компилятор является частью виртуальной машины Java (JVM). Он интерпретирует часть байт-кода, которая в то же время имеет аналогичную функциональность. Другими словами, он преобразует байтовый код в собственный машинный код на том же уровне программирования. Это причина, по которой Java компилируется так же, как и интерпретируемый язык.

Среда выполнения Java (JRE)

JRE, как следует из названия, представляет собой среду выполнения, необходимую для выполнения программ и приложений Java. JRE состоит из виртуальной машины Java (JVM), а также двоичных файлов и других классов для успешного выполнения программ Java.

JRE является подмножеством JDK и не содержит инструментов разработки, таких как компилятор Java, отладчик и т. д. Поэтому, если ваши Java-приложения разрабатываются в другом месте и вам нужно только выполнить их на своем компьютере, вы можете установить JRE отдельно. Для этого вам необходимо установить JDK.

На вашем компьютере должна быть установлена ​​JRE, так как это минимальное требование для запуска программ Java на вашем компьютере.

JRE включает следующие компоненты.

  • Библиотеки кода, настройки свойств и файлы ресурсов. Сюда входят такие файлы, как charsets.jar, rt.jar и т. д.
  • Файлы DLL: используются клиентской виртуальной машиной точки доступа Java и виртуальной машиной сервера.
  • Файлы расширения Java: Например, файлы, относящиеся к спецификации локали, такие как localedata.jar
  • Файлы, необходимые для управления безопасностью. Например, java.policy, java.security
  • Классы поддержки апплета.
  • Файлы шрифтов True Type: обычно требуются платформой.

Чтобы выполнить любое приложение/программу, написанную на Java, в вашей системе должна быть установлена ​​JRE. JRE зависит от платформы. Это означает, что вам необходимо загрузить и установить JRE, совместимую с вашей ОС и архитектурой.

Комплект средств разработки Java (JDK)

Это основной компонент любой среды Java. JDK содержит JRE (среду выполнения Java), а также компилятор Java, отладчик Java и другие основные классы. JDK используется для разработки Java, поскольку он предоставляет весь исполняемый и двоичный файлы, а также инструменты, необходимые для компиляции и отладки программы Java.

JDK — это программное обеспечение для конкретной платформы, поэтому у нас будут отдельные установщики JDK для каждой операционной системы.

JDK содержит следующие компоненты:

  • jConsole: это консоль мониторинга и управления Java.
  • jar: это архиватор. Этот инструмент используется для упаковки связанных библиотек классов в один файл JAR, а также для управления файлами JAR.
  • jarSigner: этот инструмент используется для подписи и проверки jar-файлов.
  • javap: это инструмент для дизассемблера файлов классов.
  • javaws: веб-запуск Java для приложений JNLP.
  • jhat: инструмент для анализа кучи Java.
  • jrunscript: оболочка сценария командной строки Java.
  • jstack: утилита, используемая для печати трассировки стека для потоков Java.
  • Javadoc: документация создается автоматически из комментариев к исходному коду.
  • appletviewer: используется для выполнения и отладки апплета без веб-браузера.
  • apt: инструмент обработки аннотаций.
  • extCheck: утилита, используемая для проверки конфликтов файлов JAR.
  • keytool: с помощью этой утилиты вы можете управлять хранилищем ключей.
  • policytool: инструмент для создания политик и управления ими.
  • xjc: это часть API привязки XML (JAXB), которая принимает схему XML и создает классы Java.

Таким образом, вы можете видеть, что компоненты JDK нужны нам с точки зрения разработки.

Компоненты JDK

Как показано на диаграмме выше, исходный код Java преобразуется в байтовые коды компилятором Java, который является частью JDK. Затем этот байт-код передается в JVM (этот процесс уже описан выше), а оттуда — в JRE, где выполняется код.

Узнав подробности о JDK и JRE, теперь давайте обсудим различия между JRE и JDK.

JRE против JDK

НетJREJDK
1JRE означает Java Runtime Environment.JDK означает Java Development Kit.
2В основном используется для выполнения программ Java.JDK используется разработчиками для разработки программ Java.
3Содержит виртуальную машину Java (JVM) в комплекте.Не имеет JVM.
4JRE не имеет компилятора Java, поэтому не может компилировать программы.JDK имеет компилятор javac и отвечает за компиляцию программ.
5Содержит библиотеку классов java, java и другую инфраструктуру.JDK содержит такие инструменты, как Javadoc и архиватор, которые используются для разработки Java-приложений.
6JRE можно установить как отдельную программу.JDK — это отдельная программа установки, которая поставляется вместе с JRE.
7 берет комп Сохраненная/интерпретированная программа Java в качестве входных данных и генерирующая выходные данные.Компилирует исходную программу Java и создает файл класса, который затем передается в JVM.

Заключение

В этом руководстве мы обсудили детали комплекта разработки Java (JDK), который поставляется вместе со средой выполнения Java (JRE) и компилятором Java. JRE, в свою очередь, содержит виртуальную машину Java (JVM), которая отвечает за преобразование байтового кода, сгенерированного компилятором Java, в машинно-зависимый код.

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

Читайте также: