Как Java является независимым от платформы языком
Компьютерные программы очень тесно связаны с конкретным оборудованием и операционной системой. Например, приложения Windows не могут работать в операционной системе Mac. Приложения Mac не могут работать в операционной системе Android и т. д.
Некоторые приложения являются общими для всех операционных систем, например MS Word, поэтому следует ли писать их отдельно для всех операционных систем?
Чтобы справиться с этим разнообразием платформ, такие приложения должны быть написаны независимо для всех платформ. Java позволяет писать приложения независимо от аппаратного обеспечения и операционных систем. Таким образом, он называется платформо-независимым языком программирования.
Смысл независимости от платформы заключается в том, что скомпилированный Java-код (байт-код) может работать во всех операционных системах.
Программа написана на языке, понятном человеку. Он может содержать слова, фразы и т. д., которые машина не понимает. Чтобы исходный код был понятен машине, он должен быть на языке, понятном машине, обычно на языке машинного уровня. Итак, наступает роль компилятора. Компилятор преобразует язык высокого уровня (человеческий язык) в формат , понятный машинам. Следовательно, компилятор — это программа, которая переводит исходный код другой программы с языка программирования в исполняемый код.
Этот исполняемый код может быть последовательностью машинных инструкций, которые могут выполняться ЦП напрямую, или может быть промежуточным представлением, которое интерпретируется виртуальной машиной. Это промежуточное представление в Java являетсяБайт-код Java.
· Что такое платформа и что такое независимый от платформы язык?
· Компиляция кода
· Как программа выполняется в JAVA?
· JVM (виртуальная машина Java)
· Какую роль играют компиляция и интерпретация в независимости от платформы?
· Как Java обеспечивает независимость от платформы?
· Почему Java не является полностью независимой от платформы?
· Заключение
Что такое платформа и что такое независимый от платформы язык?
Платформа может быть определена как отдельная комбинация аппаратного обеспечения, операционной системы и программного обеспечения, которая обеспечивает среду для запуска программ .
Независимость от платформы относится к независимости программы от операционной системы системы. Он использует методологию «Write Once Run Anywhere (WORA)».
Компиляция кода
Каждый раз, когда мы пишем код, мы придерживаемся синтаксиса языка программирования, который обычно удобочитаем. Включены несколько слов, имена переменных, фразы, имена методов и т. д. Все они считаются литературой, которую люди могут читать и понимать.
В результате компьютер запускает компилятор для преобразования исходного кода в машиночитаемый код, также известный как язык машинного уровня. Компилятор создает код машинного уровня в определенном формате, чтобы ЦП мог легко его понять и выполнить без ошибок.
Если оба компьютера не работают под одной и той же ОС, мы не можем запускать код, разработанный на одном компьютере, на другом, если язык машинного уровня различается в каждой ОС. Многие разработчики и программисты считают это неприемлемым. Однако Java упрощает ситуацию и включает в себя исправление для этого.
Как программа выполняется в JAVA?
В Java компилятор преобразует программу в байт-код, который не является исполняемым кодом. Затем JVM (виртуальная машина Java) выполняет байтовый код во время выполнения. Исходный код Java компилируется в байт-код, когда мы используем компилятор javac .
Полученный байт-код не является исполняемым на машине, и его может запускать любая другая платформа или операционная система. но для работы на компьютере требуется интерпретатор. Когда мы запускаем его программу или файл, мы получаем файл .class , который является неисполняемым файлом. JVM служит этим интерпретатором и в результате выполняет байт-код. JVM, несомненно, не зависит от платформы. Подобно тому, как он меняется в зависимости от окружения. Например, MAC и Linux имеют другую JVM, чем Windows. Он поддерживает переносимость как одну из своих ключевых функций, поскольку переносимый байт-код его кода делает его независимым от платформы.
Байт-код сохраняется на диске с расширением файла .class . Когда программа должна быть запущена , байт-код преобразуется с помощью JIT - компилятора. В результате получается машинный код, который затем загружается в память и выполняется.
Код Java должен быть скомпилирован дважды, чтобы быть выполненным:
- Java-программы должны быть скомпилированы в байт-код.
- Когда байт-код запускается, его необходимо преобразовать в машинный код.
Компилятор создает файл OS-зависимый.exe, когда используется C или C++ (эти языки не являются независимыми от платформы). Этот файл .exe не запустится, когда мы попытаемся запустить его в другой ОС, поскольку он зависит от этой ОС и несовместим с ней.
JVM (виртуальная машина Java)
JVM, компонент компилятора Java, преобразует файлы .java в файлы .class. Ключевая функция в исходном коде называется JVM, когда мы компилируем код Java.
JVM (виртуальная машина Java) действует как механизм времени выполнения для запуска приложений Java. JVM - это тот, который фактически вызывает основной метод, присутствующий в коде Java. JVM является частью JRE (среда выполнения Java).
Java-приложения называются WORA (Write Once Run Anywhere). Это означает, что программист может разрабатывать код Java в одной системе и ожидать, что он будет работать в любой другой системе с поддержкой Java без какой-либо корректировки. Все это возможно благодаря JVM.
Когда мы компилируем файл .java , компилятор Java генерирует файлы .class (содержащие байт-код) с теми же именами классов, которые присутствуют в файле .java . Этот файл .class проходит различные этапы, когда мы его запускаем. Эти шаги вместе описывают всю JVM.
В Java главное здесь то, что JVM зависит от операционной системы, поэтому, если вы используете Mac OS X, у вас будет другая JVM, чем если вы используете Windows или какую-либо другую операционную систему. Этот факт можно проверить, попытавшись загрузить JVM для вашей конкретной машины — при попытке загрузить ее вам будет предоставлен список JVM, соответствующих различным операционным системам, и вы, очевидно, выберете ту JVM, которая предназначена для операционной системы, которая Ты бежишь. Таким образом, мы можем сделать вывод, что JVM зависит от платформы, и именно поэтому Java может стать «независимой от платформы».
Важные моменты:
- В случае с Java магия байт-кода делает его независимым от платформы .
- Это добавляет важную особенность языка JAVA, называемую переносимостью . Каждая система имеет свою собственную JVM, которая устанавливается автоматически при установке программного обеспечения jdk. Для каждой операционной системы доступна отдельная JVM, способная читать файл .class или байт-код.
- Важно отметить, что, хотя JAVA является независимым от платформы языком, JVM зависит от платформы. Разные JVM предназначены для разных ОС, и байт-код может работать на разных ОС.
Чтобы добиться независимости от платформы, он сочетает в себе компиляцию и интерпретацию. Когда программа компилируется в Java, она превращается в байт-код, часто известный как файл .class, а не в машинный код. Теперь этот байт-код — это то, что отличает его от машинного кода своими особенностями, поскольку его можно перенести на другую платформу, а Java — нет. Этот байт-код может быть выполнен на виртуальной машине Java.
Как Java обеспечивает независимость от платформы?
В большинстве языков программирования компилятор (или интерпретатор) генерирует код, который может выполняться на конкретной целевой машине. Например, если вы скомпилируете программу на C++ на машине с Windows, исполняемый файл можно скопировать на любую другую машину, но он будет работать только на других машинах с Windows, но не на другой машине (например, на Mac или Linux). Платформа определяется целевой машиной (вместе с ее операционной системой). Для более ранних языков разработчикам языков приходилось создавать специализированную версию компилятора (или интерпретатора) для каждой платформы. Если вы написали программу, которую хотели сделать доступной на нескольких платформах, вам, как программисту, пришлось бы проделать немало дополнительной работы. Вам придется создать несколько версий исходного кода для каждой платформы.
Java удалось устранить проблему с платформой для программистов высокого уровня (таких как вы), потому что она реорганизовала последовательность компиляции-связывания-выполнения на базовом уровне компилятора. Детали сложны, но, по сути, разработчики языка Java изолировали те проблемы программирования, которые зависят от платформы, и разработали низкоуровневые средства для абстрактного обращения к этим проблемам. Следовательно, компилятор Java не создает объектный файл, а вместо этого создает файл байт-кода , который, по сути, является объектным файлом для виртуальной машины . На самом деле, компилятор Java часто называют компилятором JVM (для виртуальной машины Java).
Следовательно, вы можете написать программу на Java (на любой платформе) и использовать компилятор JVM (называемый javac) для создания файла байт-кода (файлы байт-кода используют расширение .class). Этот файл байт-кода можно использовать на любой платформе (с установленной Java). Однако байт-код не является исполняемым файлом. Чтобы выполнить файл байт-кода, вам действительно нужно вызвать интерпретатор Java (называемый java). У каждой платформы есть собственный интерпретатор Java, который автоматически решит проблемы, связанные с платформой, которые больше нельзя откладывать. Когда байт-код требует операций, специфичных для платформы, интерпретатор Java связывается с соответствующим кодом, специфичным для платформы.
Как и в случае с интерпретируемыми языками, Java-программы могут работать быстрее, скомпилировав байт-код в исполняемый файл; недостатком является то, что такие исполняемые файлы будут работать только на той платформе, на которой они созданы.
Почему Java не является полностью независимой от платформы?
Ясно, что Java не может работать на платформе, на которой нет JVM. Таким образом, в самом буквальном смысле слова Java не зависит от платформы. Но в то же время ваше определение независимости от платформы бесполезно. Ни один возможный язык никогда не сможет быть по-настоящему независимым от платформы, потому что какой-то аспект платформы должен будет иметь возможность анализировать язык. И учитывая все возможные платформы, некоторые обязательно не смогут его проанализировать.
Таким образом, учитывая тот факт, что на многих платформах работает JVM, и что код Java может выполняться на любой JVM с одинаковым значением, Java зависит от платформы.
Заключение
Java — один из самых известных и широко используемых языков программирования. Это независимый от платформы язык программирования . Java не требует переписывания всего кода для всех различных платформ. Он поддерживает независимость от платформы, используя байт-код Java и виртуальную машину Java . Компилятор Java javac преобразует программный код в байтовый код. Этот байт-код не зависит от платформы и может работать в любой операционной системе JVM. JVM интерпретирует байт-код в машинный код, и программа выполняется.
Спасибо за чтение. Приятного обучения
Поддержите нашу публикацию, подписавшись на нее
Как совмещать работу на полный рабочий день и учебу на неполный рабочий день? Запуск собственной торговой площадки NFT с решениями платформы NFT White-Label Java по желанию и по выбору: обработка нулевых значений и представление двух возможных значений Часто задаваемый вопрос на собеседовании на основе Java8 Stream — заключительная часть 8 главных законов из «48 законов власти» Роберта Грина: Розмарин — как его посадить и какие у него преимущества
![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































