четверг, 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

вторник, 6 ноября 2018 г.

1 Что такое язык JAVA. Шо це таке


     Java - кроссплатформенный, строго типизированный объектно-ориентированный язык программирования.
    Дата официального выпуска Java – 23 мая 1995 года.


   Расшифруем данное определение: 


    Основные особенности Java


   1)  Кроссплатформенность и аппаратная переносимость - программы Java могут работать на любой платформе (компьютерной архитектуре), с помощью виртуальной Java-машины.
   (на любом устройстве, для которого существует соответствующая виртуальная машина)

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


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


   2) Java cтрого типизированный язык - то есть любая переменная и любое выражение имеет какой-либо тип данных, известный уже на момент компиляции

   3) Технология Java имеет гибкую систему безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной.

   Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером), вызывают немедленное прерывание.


   4) О том, что концепция виртуальной машины имеет недостаток в виде снижения производительности:
   Java совершенствовался в этом ключе:
      применяется технология трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде, используется платформенно-ориентированный код (native-код) в стандартных библиотеках, аппаратные средства, обеспечивающие ускоренную обработку байт-кода (к примеру, технология Jazelle).

    (Just-in-timeCompiler (JIT) - часть JVM, который оптимизирует байт-код, уменьшая общее время, необходимое для компиляции байт-кода в машинный код) 
 


   Основные возможности JAVA

- автоматическое управление памятью
- расширенные возможности обработки исключительных ситуаций;
- богатый набор средств фильтрации ввода-вывода
- набор стандартных коллекций: массив, список, стек и д. р.
- наличие простых средств создания сетевых приложений (в т.ч. с использованием протокола RMI)
- наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы
- встроенные в язык средства создания многопоточных приложений, которые потом были портированы на многие языки (например Python)
- унифицированный доступ к базам данных: на уровне отдельных SQL-запросов - на основе JDBC, SQLJ
- на уровне концепции объектов, обладающих способностью к хранению в базе данных - на основе Java Data Objects (англ.) и Java Persistence API
- поддержка обобщений (начиная с версии 1.5)
- поддержка лямбд, замыканий, встроенные возможности функционального программирования (начиная с версии 1.8).

   JAVA - базовый язык программирования операционной системы android


    В настоящее время существует три редакции языка Java:

      - Java SE (Java Platform Standard Edition) - стандартная редакция Java, которая используется для разработки простых Java приложений
      - Java EE (Java Platform Enterprise Edition) - редакция Java для разработки распределенных приложений масштаба предприятий
      - Java ME (Java Platform Micro Edition) - редакция Java для разработки приложений для микрокомпьютеров (С небольшим количеством ресурсов, например, телефонов, ТВ-приставок).


   О том, что такое JVM, JRE, JDK, IDK можно прочитать здесь: https://javaika.blogspot.com/2020/09/JVM-JRE-JDK.html

О блоге

Здесь будут заметки по результатам изучения JAVA.

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

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