четверг, 8 ноября 2018 г.

2 Как работает JAVA

Схема работы довольно проста:



1 Создается исходный код (исходный документ)
(Программа на языке Java)
   Сначала создается исходный текстовый документ с оговоренным протоколом (на языке Java), содержащий одно или несколько описаний классов.
   Данный документ сохраняется с расширением *.java.

   Часто для этого используются специальные среды для разработки - Integrated Development Environment (IDE), но можно писать в любом текстовом редакторе, например, Notepad (блокнот).

2 Исходный документ пропускается через компилятор

   Затем документ пропускается через компилятор исходных кодов, который проверяет код на ошибки, работоспособность и корректность.

    Компилятор - это утилита, которая является частью JDK.
    К примеру, сделать это можно при помощи утилиты javac.
    Код public class PublicClass { } не содержит ни каких ошибок. Это минимальная конструкция, которая только возможна для компиляции.

3 Компилятор создает новый документ, закодированный с помощью байт-кода
(Программа состоящая из байт-кода)(компилятор транслирует файлы в специальный байт-код)

   Байт-код - машинно-независимый низкоуровневый код, представляющий собой набор инструкций для JVM.
   Скомпилированный в процессе трансляции байт-код не зависит от платформы и записывается для каждого класса в отдельном выходном файле, с именем, совпадающим с именем класса и расширением *.class
   (Результат работы компилятора сохраняется в бинарных файлах с расширением *.class)

    Платформа Java не предусматривает инструментов для редактирования байт-кода, но есть возможность его просмотреть с помощью утилиты дизасcемблера javap, которая входит в состав JDK. 

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

   Виртуальная машина (JVM) для выполнения программы запускается с помощью утилиты java.

   Машинный код - набор машинных инструкций в двоичном формате, которые непосредственно выполняются процессором.

   Для выполнения программы в скомпилированном виде из файла с расширением *.class необходима установленная JRE.
   Для каждого устройства или операционной системы разрабатывается своя JVM.

    Выполнение происходит в следующей последовательности:
    1) В оперативной памяти компьютера запускается JVM
    2) С помощью начального загрузчика классов JVM загружает и инициализирует класс в памяти компьютера

    (Резервирование памяти в Java определяется исключительно JVM, а не компилятором или разработчиком – разработчик может лишь указать, что он хочет создать еще один новый объект, по этой причине указатели по физическим адресам отсутствуют принципиально)

 

    3) Далее в обрабатываемом классе JVM ищет метод main
    4) Выполняется код метода main
    5) Далее (при необходимости) производиться загрузка и инициализация других классов
    6)  После выполнения кода производится уборка мусора - очистка памяти и закрытие программы JVM
 

    (Для освобождения неиспользуемой памяти в Java был введен механизм автоматической сборки мусора (garbage collector - сборщик мусора) - это фоновый поток исполнения, который регулярно просматривает существующие объекты, и удаляет уже не нужные. Из программы никак нельзя повлиять на работу сборщика мусора - можно только с помощью стандартной функции явно инициировать его очередной проход .Таким образом, программист должен следить лишь за тем, чтобы не оставалось ссылок на ненужные объекты, что существенно упрощает разработку программ) 

 


   *Также стоит отметить, что специальные компоновщики могут формировать из скомпилированных файлов байткода и файлов ресурсов более сложные файлы: к примеру, файлы приложений для мобильных телефонов с расширением .jar (jar-архивы) или установочные файлы приложений для операционной системы Android с расширением .apk.

   Именно благодаря такой схеме работы программы, написанные на языке Java могут выполняться практически на любом устройстве. 
 
О том, что такое JVM, JRE, JDK - здесь: https://javaika.blogspot.com/2020/09/JVM-JRE-JDK.html

Комментариев нет:

Отправить комментарий

Наследование в Java

   «родительское/дочернее»     Наследование (inheritance) - свойство системы, позволяющее описать (создать) новый класс на основе уже су...