Почему язык Java независим от платформы?
Опубликовано: 2021-02-08Оглавление
Введение
Java завоевал огромную популярность среди всех других языков программирования с момента своего появления. И причиной такого огромного отклика является возможность предоставления уникальных функций. Синтаксис Java будет почти похож на C++, но предоставляет намного больше возможностей, чем C++.
Доступность объектно-ориентированного программирования (ООП) выделяла Java среди всех остальных языков того времени. Java был разработан для использования ООП в своей основе, и это было одной из причин того, что он стал наиболее используемым языком. Эта концепция повышает возможность повторного использования и бесшовное выполнение. В этот момент у нас в голове может возникнуть вопрос «зачем нам использовать объект?».
Объекты в Java похожи на структуры в языке C, где мы связываем похожие методы и переменные вместе. Наряду с этим Java также обеспечивает абстракцию, инкапсуляцию, наследование и полиморфизм, которые побуждают пользователя реализовывать объекты.
Java играет доминирующую роль во многих областях, таких как разработка приложений, веб-разработка, создание программных инструментов. Он также имеет большое количество библиотек, которые упрощают работу. Также наличие IDE играет решающую роль в привлечении внимания разработчиков. IDE, такие как Eclipse, IntelliJ, NetBeans, часто используются многими разработчиками.
Хорошо, теперь давайте перейдем к нашему обсуждению.
Но прежде всего, что означает независимость от платформы? Чтобы получить ответ на этот вопрос, нам нужно знать, что происходит, когда мы компилируем код.

Компиляция кода
Всякий раз, когда мы пишем код, мы следуем синтаксису языка программирования, который будет достаточно удобочитаемым. И он содержит несколько слов, фраз, имена переменных, имена методов и т. д. Все это считается удобочитаемым и понятным человеку текстом.
Таким образом, машина использует компилятор для преобразования исходного кода в машиночитаемый код, который также называется языком машинного уровня. Компилятор строит код машинного уровня в специальном представлении, чтобы он мог быть легко понят ЦП и, следовательно, беспрепятственно выполнялся.
Это построение языка машинного уровня отличается для каждого языка программирования и каждой операционной системы. Например, c/c++ создает файл .exe, который не будет одинаковым для двух машин, если они работают в разных операционных системах.
И тут возникает проблема!
Когда язык машинного уровня различается в каждой операционной системе, мы не можем запускать код, скомпилированный на другом компьютере, на новом компьютере, если только обе системы не работают в одной и той же операционной системе. Многим программистам и разработчикам это кажется дерьмом.
Но Java упрощает задачу, и у Java есть решение для этого. Давайте начнем.
Java не зависит от платформы
Так что же происходит, когда мы компилируем код в java?
Всякий раз, когда мы вводим оператор «javac filename.java» или компилируем код в java, javac компилирует код. И он создает промежуточный код, называемый байтовым кодом.
Вот где Java делает различие между всеми различными языками программирования. Он создает файл .class, который считается байтовым кодом. В то время как такие языки, как c/c++, создают собственный исполняемый код при компиляции и, таким образом, делают их зависимыми от платформы.
Подождите, еще слишком рано для праздника. Этот байт-код не является исполняемым. Нам нужен транслятор для выполнения этого байт-кода. И JVM делает эту работу. Как правило, JVM находится в основной памяти нашего компьютера. Виртуальная машина Java действует как интерпретатор, а затем выполняет байтовый код, сгенерированный javac.
И вот мы закончили, наш код успешно выполняется.
Так как же java собирается управлять всем этим в одиночку?
И ответ был бы, это из-за JVM. Байт-код, сгенерированный при компиляции исходного кода, будет работать в любой операционной системе, но JVM, присутствующая на машине, различается для каждой операционной системы. Именно поэтому Java считается независимым от платформы языком программирования.
Чтобы понять это правильно, давайте разберемся с архитектурой и работой JVM.
JVM-архитектура
JVM является частью среды выполнения Java и отвечает за преобразование файла .java в файл .class. Когда мы компилируем код Java, JVM вызывает метод main в исходном коде.
JVM-архитектура
ClassLoader
Это подсистема виртуальной машины Java. Он загружает файл .class, проверяет, есть ли какие-либо исключения, и это является причиной нескольких исключений во время выполнения. И после проверки выделяет память для переменных и присутствующих методов, присваивает значения по умолчанию переменным и массивам. Он также выполняет статические методы или переменные, присутствующие в коде.

В JVMm есть 3 встроенных загрузчика классов, загрузчик классов начальной загрузки, загрузчик классов расширений, загрузчик классов приложений.
Области памяти в JVM
Область метода/класса
Он хранит такую информацию, как имена классов, имена методов, переменные. Это общий ресурс для всех методов и переменных в классе.
куча
Он хранит информацию обо всех данных, хранящихся в области кучи.
Языковой стек JVM
Он хранит информацию в блоках, также называемых стековыми фреймами/фреймами, в которых хранится текущая информация при вызове функции, хранятся локальные переменные, он также играет доминирующую роль в управлении потоками.
Регистрация ПК
Он хранит адрес инструкции, которая в данный момент выполняется. Это полезно в ситуации многопоточного выполнения.
Стек собственных методов
Он хранит всю информацию об используемых нативных методах.
Исполнительный механизм
Механизм выполнения выполнит байт-код и удалит выделенную память для объектов, которые недоступны или на которые нет ссылок. Интерпретатор в механизме выполнения будет выполнять байт-код, читая его в потоке и интерпретируя построчно.
У него также есть захватывающая часть, называемая JIT-компилятором (Just In Time Compiler), где он создает собственный исполняемый код для методов, поэтому, если есть несколько вызовов функций, JVM не нужно снова интерпретировать его, а напрямую использовать собственный исполняемый код. Следовательно, это улучшает производительность исполнения.
Собственный интерфейс метода
Этот интерфейс используется java для взаимодействия с приложениями, реализованными на разных языках, таких как C/C++. Взаимодействие является двунаправленным, когда JVM может вызывать эти приложения или может вызываться этими приложениями.
Библиотеки нативных методов
Он отслеживает библиотеки на родном языке, которые могут использоваться механизмом выполнения.
Теперь, когда мы поняли архитектуру JVM, давайте вернемся к нашему обсуждению. Таким образом, эта JVM отличается для разных операционных систем, но вывод, генерируемый этими JVM, будет одинаковым для одного и того же предоставленного байт-кода.

Читайте также: Идеи и темы проектов Java
Изучайте онлайн -курсы по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.
Заключение
Мы рассмотрели несколько уникальных особенностей java, поняли, что происходит, когда мы компилируем код на таких языках, как C/C++, поняли разницу между собственным исполняемым кодом и байтовым кодом. Мы рассмотрели объяснение того, почему java считается независимым от платформы языком, и поняли, что JVM является причиной независимости java от платформы. Мы рассмотрели архитектуру JVM для лучшего понимания.
Теперь, когда вы знаете, почему Java не зависит от платформы, изучите другие уникальные возможности Java и начните их использовать!
Если вам интересно узнать больше о Java, разработке программного обеспечения с полным стеком, ознакомьтесь с программой Executive PG upGrad и IIIT-B по разработке программного обеспечения с полным стеком, которая предназначена для работающих профессионалов и предлагает более 500 часов тщательного обучения, 9+ проекты и задания, статус выпускника IIIT-B, практические практические проекты и помощь в трудоустройстве в ведущих фирмах.
Каковы преимущества Java перед другими языками?
Есть много преимуществ Java по сравнению с другими языками. Начнем с главного преимущества — Java не зависит от платформы. Код Java может работать на любой аппаратной платформе, операционной системе и браузере. Он может работать на любом устройстве. Это означает, что после того как вы написали свое приложение на Java, вы можете запускать его на любом устройстве. Это так просто! Кроме того, после того как вы написали свой код, его очень легко отлаживать и исправлять ошибки. Наконец, Java является объектно-ориентированным. Это означает, что вам нужно использовать более мелкие программы и код. Это упростит работу с вашим кодом. Если требуются какие-либо модификации, код менее подвержен ошибкам. Он имеет такие функции, как многопоточность, управление памятью, независимость от платформы, безопасность, виртуальная машина, то есть байт-код, структура сбора, сборщик мусора, многоуровневая архитектура и т. д.
Почему Java не зависит от платформы?
Java не зависит от платформы, поскольку использует виртуальную машину. Язык программирования Java и все API скомпилированы в байт-коды. Байт-коды фактически не зависят от платформы. Виртуальная машина позаботится о различиях между байт-кодами для разных платформ. Таким образом, требования времени выполнения для Java очень малы. Виртуальная машина Java позаботится обо всех проблемах, связанных с аппаратным обеспечением, поэтому не нужно компилировать код для другого оборудования.
Что такое автоматическая сборка мусора в Java?
Автоматическая сборка мусора — это метод сборки мусора, при котором сборщик мусора запускается автоматически, и программисту не нужно писать для него код. В Java сборка мусора выполняется путем перевода виртуальной машины Java в специальный режим. Сборщик мусора запустится, когда увидит возможность сделать это. Некоторые сборщики мусора используют подход «остановить мир», и виртуальная машина Java должна остановить выполнение программы, чтобы выполнить сборку мусора. Сборка мусора — непростая концепция, но как только вы ее освоите, уже не оглядываетесь назад. И сборка мусора в Java — одна из самых простых для понимания.