Рубрики
Без рубрики

Java – Начало (Часть 1: Теория)

Всем привет 👋 Я Гаурав Гупта, студент бакалавриата, изучающий информатику из Индии…. Помечено как java, новички, программирование.

Всем привет 👋 Я Гаурав Гупта, студент бакалавриата, изучающий информатику из Индии. Прежде чем мы погрузимся в блог, сначала я хотел бы рассказать вам о том, почему этот блог существует и что будет Хранилище знаний .

Почему существует этот блог

С тех пор как я начал программировать, я всегда чувствовал, что мне чего-то не хватает, и я продолжаю обнаруживать пробелы в своих знаниях по многим темам, иногда основы не сильны, а иногда это некоторые продвинутые темы.

Я пишу, чтобы узнать то, что я знаю. – Фланнери О’Коннор

Я хотел записать свой путь программирования и полученные знания, чтобы определить, что я знаю и где я могу улучшить. Эта идея оказалась здесь в виде блога, а не физического журнала моих знаний, потому что я либо теряю их, либо просто никогда не возвращаюсь и регулярно пересматриваю. Из-за моей личности я постоянно проверяю свои посты или любые действия, которые я обнародовал, где люди могут видеть и судить меня. Это, по крайней мере, заставит меня постоянно проходить через свои знания, помогая мне пересматривать материал. Это породило Хранилище знаний.

❗ ❗ Примечание: Ни в коем случае, я не являюсь экспертом по темам, которые я буду писать в этом блоге, вы можете рассматривать это как точку зрения и понимание новичка.

Каким будет Хранилище знаний?

Хранилище знаний будет больше похоже на онлайн-журнал моих исследований в области программирования. Если мое хранилище может помочь некоторым людям, я надеюсь, что смогу рассматривать его как свой вклад в сообщество.. Недавно я начал изучать Java, и даже после ознакомления с концепциями, которые я записал в своей физической записной книжке, я обнаружил недостатки в своих знаниях, когда посещал те же лекции в колледже. Итак, этот пост в блоге будет посвящен всему, что я узнаю во время своего путешествия по Java, где я могу учиться у других критиков и предложений.

Предложения и ресурсы по улучшению меня очень ценятся. 💖 Итак, без лишней болтовни, давайте начнем.

Что такое Java?

Java – это объектно-ориентированный язык программирования общего назначения, основанный на классах, предназначенный для использования с меньшими зависимостями от реализации. Это быстро, безопасно и надежно.

Чем выполнение Java отличается от других объектно-ориентированных языков

В объектно-ориентированном языке, таком как C++, код высокого уровня, который читается человеком, компилируется непосредственно в код машинного уровня (0 и 1). Этот машинный код зависит от платформы (т.Е. зависит от операционной системы, на которой он скомпилирован). Например, если файл C++ скомпилирован на компьютере с Windows, то скомпилированный машинный код (файл .exe) не будет выполняться на компьютере Mac и наоборот.

Чтобы преодолеть эту проблему, Java создает байт-код (файл .class) при компиляции, который не зависит от платформы и может совместно использоваться машинами с разными операционными системами. Но этот байт-код не может быть непосредственно запущен в системе и требует выполнения виртуальной машины Java (JVM). Эта JVM зависит от платформы, т.е. каждая ОС имеет версии JVM, зависящие от платформы, которые используются для выполнения этого байт-кода.

Структура Java

ух ты! Это выглядит многослойным и сложным 😱 Поверьте мне, ТАК ОНО и ЕСТЬ 🙂

Итак, давайте начнем с самого внешнего слоя.

Набор для разработки Java (JDK)

JDK предоставляет среду для разработки и выполнения (запуска) Java-программ. Это пакет, который включает в себя:

  1. Инструменты разработки – Среда для разработки программ
  2. Среда выполнения Java (JRE) – Для выполнения программ
  3. Компилятор (javac)
  4. Архиватор (jar)
  5. Генератор документации (javadoc)
  6. Переводчик/Загрузчик

Среда выполнения Java (JRE)

JRE (также написанный как Java RTE) представляет собой установочный пакет, который обеспечивает минимальные требования ТОЛЬКО для выполнения Java-программы на вашем компьютере. Он состоит из:

  1. Технологии развертывания
  2. Наборы инструментов пользовательского интерфейса
  3. Библиотеки интеграции
  4. Базовые библиотеки
  5. Виртуальная машина Java (JVM) – JRE предоставляет все библиотеки и файлы, необходимые JVM

Виртуальная машина Java (JVM)

JVM – это абстрактная машина/спецификация, предоставляющая среду выполнения, в которой может выполняться байт-код java. JVM выполняет следующие операции:

  1. Загружает код
  2. Проверяет код
  3. Выполняет код
  4. Обеспечивает среду выполнения

Архитектура JVM

При компиляции компилятором java (javac) исходный файл Java (файл .java) выдает файл байт-кода (файл .class), который затем передается в качестве входных данных в JVM, в частности в подсистему загрузки классов.

Подсистема загрузчика классов в основном выполняет 3 функции:

  1. Загрузка : Он считывает файл .class и генерирует двоичные данные. Объект этого класса создается в куче. Это дополнительно содержит 3 модуля – Загрузчик классов начальной загрузки, Загрузчик классов расширения и загрузчик классов приложений.
  2. Связывание : Основные функции связывания включают проверку, подготовку и разрешение. Здесь JVM проверяет файл .class, выделяет память для переменных класса и значений по умолчанию и заменяет символические ссылки из типа прямыми ссылками.
  3. Инициализация : Всем статическим переменным присваиваются их значения, определенные в коде и статическом блоке. При выполнении JVM интерпретатор выполняет код построчно. Но одно из ограничений заключается в том, что когда метод вызывается много раз, он будет интерпретировать его снова и снова.

Выполнение внутри подсистемы загрузчика классов – Загрузка -> Связывание -> Инициализация.

JVM также содержит распределение памяти стека и кучи, но я не буду вдаваться в подробности, чтобы избежать информационной перегрузки и путаницы (я также не понимаю деталей 😣 ). Это нормально, если вы не совсем понимаете вышеприведенную архитектуру, как и я. Основной сути этого должно быть достаточно для начала, мы вернемся к деталям позже.

Более простой способ понять связь между JVM и JRE: JRE – это коробка, а JVM – это содержимое внутри коробки, которое выполняет основную работу.

Точно в срок (JIT)

Он также называется сборщиком мусора, и его основная цель – решить проблему ограничения выполнения JVM. Методы, которые многократно вызываются, JIT предоставляют прямой машинный код, поэтому их интерпретация не требуется, что приводит к более быстрому выполнению.

Краткое описание рабочей архитектуры JVM

Чтобы обобщить рабочую архитектуру Java на более простой диаграмме для лучшего понимания, вы можете посмотреть на приведенную ниже диаграмму.

Я думаю, что этой теории должно быть достаточно для таких новичков, как я, даже если она не совсем понятна, это нормально. В следующий раз мы продолжим, начиная с части кодирования (надеюсь 👀 ). Я очень признателен за любые предложения или ресурсы, которые помогут мне лучше понять и которые были бы полезны другим. 💖

PS: Вы также можете найти меня на HashNode

До следующего раза. Пока 👋

Оригинал: “https://dev.to/gauravgupta/java-the-beginning-part-1-the-theory-4ie7”