Рекламное объявление
Виртуальная машина Java (JVM) - это настоящее имя, когда вы программируете на Java. Вопреки тому, что указывает название, виртуальная машина Java может встречаться и с другими языками программирования.
В общем, нет необходимости знать, что такое виртуальная машина Java или даже что она делает, чтобы иметь возможность программировать на Java. С другой стороны, знакомство с внутренней работой машины помогает улучшить ваше понимание и общее понимание.
В этой статье рассматривается идея виртуальной машины Java, то, что она делает для вас, и некоторые из наиболее важных плюсов и минусов. Несмотря на то, что я постарался сделать это простым, и есть определенно более продвинутая литература по этому вопросу, ожидается элементарное понимание Java и программирования.
Языки высокого уровня
Семантика языка программирования разработана так, чтобы быть близкой к нашему естественному языку, оставаясь при этом краткой и простой для интерпретации для машины. Как вы, вероятно, знаете, язык программирования полностью отличается от машинного кода, набора инструкций, которые компьютер использует для создания и запуска программы. Это мы называем
языки высокого уровня; один или несколько уровней абстракции от машинного кода.Прежде чем он сможет работать, высокоуровневый код должен быть сначала интерпретирован. Многие программные интерфейсы компилируются заранее (AOT сборник) для конкретной платформы. Это делает программу более эффективной во время выполнения, но гораздо менее совместимой с различными платформами. Java, напротив, работает с промежуточным языком Байт-код Java и Виртуальная машина Java.
JVM & Java Bytecode
Когда ваш Java-проект собирается, он переводит исходный код (содержится в *.Джава исходные файлы) в байт-код Java (чаще всего содержится в файлах * .class). Это делает ваш высокоуровневый код на один шаг ближе к машинному коду, но пока еще не совсем. Этот байт-код представляет собой набор компактных инструкций; для машины легче интерпретировать, но менее читабельно.
Когда вы запускаете приложение Java на своем компьютере, мобильном телефоне или любой другой платформе с поддержкой Java, вы по существу передаете этот байт-код Java на виртуальную машину Java. Интерпретатор в виртуальной машине Java обычно начинает компилировать весь байт-код во время выполнения, следуя принципам так называемого своевременная компиляция. Это приводит к типичной, хотя часто небольшой задержке при открытии приложения Java, но в целом повышает производительность программы по сравнению с интерпретированный сборник.

Основным преимуществом этой системы является повышенная совместимость. Поскольку ваши приложения работают на виртуальной машине, а не непосредственно на вашем оборудовании, разработчик может программировать и создайте свое приложение один раз, которое затем можно будет выполнить на каждом устройстве с реализацией Java Virtual Машина. Этот принцип породил слоган Java:Напиши один раз, беги везде.”
Pro: совместимость и повышенная безопасность
Помимо совместимости кода, виртуальная машина Java имеет и другие преимущества. Одним из наиболее важных из них является относительная безопасность программ Java на основе виртуальной машины Java. Безопасность, означающая, что программа, работающая на виртуальной машине, с гораздо меньшей вероятностью будет нарушать работу операционной системы пользователя или повреждать файлы данных в случае возникновения ошибок.
Con: Различные реализации JVM и отладка
Одна из основных критических замечаний в отношении совместимости кода и виртуальной машины Java обусловлена множеством различных реализаций последней. Видите ли, виртуальная машина Java не является частью программного обеспечения. Oracle, владельцы Java, имеют свою реализацию виртуальной машины Java, но другие люди могут сделать свою, если она удовлетворяет различным практическим и договорным требованиям.
Эти различные реализации означают, что ваш код может работать гладко на одной виртуальной машине Java, но аварийно завершать работу на другой. Хотя на практике вы можете написать свой код один раз и запускать его везде, иногда более сложный код все еще должен быть отлажен в различных реализациях Виртуальной машины Java, чтобы гарантировать правильную работу.
Есть ли у вас опыт работы с виртуальной машиной Java? Если так, есть ли что-то, что я пропустил здесь, что следует упомянуть?
Кредит изображения: Michaelaw, Dcoetzee
Я писатель и студент информатики из Бельгии. Вы всегда можете сделать мне одолжение с хорошей идеей статьи, рекомендацией книги или идеей рецепта.