Как инженер-программист, помимоJavaВ дополнение к этому ключевому слову часто упоминается еще один термин, а именноJVM. УпомянутыйJVMВо время собеседований часто встречаются следующие вопросы:
- Зачем системе разработки Java нужна JVM?
- Что вы знаете о принципе работы JVM?
- Как работает код Java?
Чтобы правильно ответить на эти три вопроса, вам нужно сначала понять, что такое JVM? При чем здесь Java? Какая связь с JDK? Чтобы решить три вышеупомянутые проблемы, нам нужно думать о трех аспектах:
- Связь между JVM и операционной системой;
- Связь между JVM, JRE и JDK;
- Какая связь между спецификацией виртуальной машины Java и спецификацией языка Java?
После выяснения взаимосвязи между ними можно использовать простой пример кода, чтобы понять, как выполняется программа Java.
1. Связь между JVM и операционной системой
В мире боевых искусств требуется много усилий, чтобы усовершенствовать меч, который можно увидеть во всем мире. В дополнение к превосходной технологии изготовления мечей также требуется хорошо обученная печь для меча.Инженер эквивалентен мастеру изготовления мечей, а JVM — это печь для меча.
Java: что это и для чего нужен
Полное название JVM — Java Virtual Machine, это знакомая виртуальная машина Java. Он может распознавать файлы с суффиксом .class и может анализировать свои инструкции и, наконец, вызывать функции в операционной системе для выполнения желаемой операции.
В нормальных условиях программа, разработанная на C ++, может быть запущена непосредственно после компиляции в двоичный файл, и операционная система может ее распознать; но программа Java отличается. После использования javac для компиляции файла .class вам необходимо использовать команды Java, чтобы проявить инициативу. Для его выполнения операционная система не распознает эти файлы .class.
Возникает сомнение, почему Java не может запустить скомпилированный двоичный файл непосредственно в операционной системе, например C ++? Вместо того, чтобы создавать виртуальную машину посреди программы и операционной системы?
Вот где JVM выделяется. Как мы все знаем, Java — это язык с особенно высоким уровнем абстрактных программ, обеспечивающий ряд функций, таких как автоматическое управление памятью. Эти функции невозможно реализовать непосредственно в операционной системе, поэтому преобразование требуется JVM.
С приведенным выше введением можно провести следующую аналогию.
- JVM: эквивалент операционной системы;
- Байт-код Java: эквивалент языка ассемблера.
Байт-код Java, как правило, легче читать и понимать, что доказывает, что язык Java имеет относительно высокую степень абстракции. Вы можете использовать JVM в качестве транслятора, который будет непрерывно переводить и выполнять байт-код Java, а затем вызывать реальные функции операционной системы, которые связаны с информацией о платформе. Как показано ниже:
Зачем нужна Java машина?
Как видно из рисунка, с уровнем абстракции JVM Java может быть кроссплатформенной. JVM нужно только гарантировать, что файл .class может выполняться правильно, и он может работать на таких платформах, как Linux, Windows и MacOS.
Значение кроссплатформенности Java состоит в том, чтобы компилировать один раз и запускать везде, и JVM может это сделать. Например, вы можете загрузить пакет jar той же версии на складе Maven и запускать его везде, без повторной компиляции на каждой платформе.
Некоторые существующие языки расширений JVM, такие как Clojure, JRuby, Groovy и т. Д., В конце компилируются в файлы .class.Сопровождающим язык Java требуется только управлять парсером JVM, чтобы легко интегрировать эти языки расширения. Запускаем поверх JVM.
В чем разница между программой на Java и широко используемой программой на C ++? Следующий рисунок может проиллюстрировать проблему:
Как видно из приведенного выше рисунка, программы на C ++ компилируются в файлы .exe, которые могут быть распознаны операционной системой, а программы Java компилируются в файлы .class, которые могут распознаваться JVM, а затем JVM отвечает за вызов системных функций для выполнения программы.
2. Связь между JVM, JRE и JDK.
Благодаря вышесказанному, JVM — это ядро, которое могут запускать программы Java. Но следует отметить, что: JVM ничего не может делать сама по себе и должна предоставлять ей исходные материалы (файлы .class). Как говорится, умной женщине сложно приготовить без риса. Несмотря на то, что он мощный, он все же должен предоставлять файл .class.
Просто JVM не может завершить компиляцию и работать везде. Ему нужна базовая библиотека классов, например, как управлять файлами и как подключаться к сети. Система Java очень щедрая и передаст ей все библиотеки, необходимые для работы JVM, за один раз. Стандарт JVM плюс большое количество реализованных базовых библиотек классов составляют среду выполнения Java, которую часто называют JRE (Java Runtime Environment).
С JRE программы Java можно запускать в браузере. Вы можете посмотреть каталог Java, который вы установили.Если вам нужно запустить только несколько программ Java, достаточно только одной JRE.
Для JDK он даже больше. В дополнение к JRE, JDK также предоставляет несколько очень полезных небольших инструментов, таких как javac, java, jar и т. Д. Это ядро Java, поэтому неспециалисты также могут практиковаться на мечах!
Взгляните на полное написание JDK, Java Development Kit. Я очень боюсь слова «комплект» (оборудование), это как бездонная яма, что говорит о бесконечных исследованиях в ней. Связь между JVM, JRE и JDK может быть представлена отношением включения:
3 Связь между спецификацией виртуальной машины Java и спецификацией языка Java
Когда дело доходит до JVM, первое, о чем следует подумать, — это сборщик мусора. Фактически, он по-прежнему состоит из многих частей, таких как механизм выполнения, который анализирует байт-код.
- Вообще говоря, JVM — это спецификация, это самый официальный и точный документ;
- В узком смысле «горячие точки» используются чаще. Обычно, говоря об этом понятии, они считаются эквивалентными.
В сочетании с широко используемым языком Java вы можете получить следующую картину (две спецификации, которые должны понимать разработчики Java)
Левая половина приведенного выше рисунка — это спецификация виртуальной машины Java, которая фактически предназначена для обеспечения рабочей среды для ввода и выполнения байт-кода. Правая часть — это обычно упоминаемая спецификация языка Java, такая как switch, for, generics, lambda и другие связанные программы, которые в конечном итоге будут скомпилированы в байт-код. Мост, соединяющий левую и правую части, по-прежнему представляет собой байт-код Java.
Если спецификация файла .class не изменилась, эти две части можно оптимизировать независимо. Однако Java иногда расширяет формат следующих файлов .class и добавляет некоторые инструкции байт-кода для поддержки большего количества функций.
Виртуальную машину JVM можно рассматривать как абстрактный компьютер, который имеет свой собственный набор инструкций и различные области оперативной памяти.После изучения «структуры компьютера» вы увидите много общего.
Если вы не изучите JVM, повлияет ли это на написание кода Java? Теоретически между ними нет необходимой связи. Они взаимодействуют друг с другом через файлы .class, даже если они знают JVM, они могут написать большую часть кода Java. Так же, как вы пишете код на C ++, вам не нужно глубоко понимать, как реализована основная операционная система.
Однако, если вы хотите написать более сложный и эффективный код, вам необходимо иметь представление об уровне реализации. Понимание JVM в основном используется для настройки и устранения неполадок. У вас будет более полный контроль над распределением различных ресурсов в работе.
4. Как работает код Java?
В HelloWorld.java он соответствует спецификации языка Java. Среди них вызываются такие модули, как System.out, которые представляют собой библиотеки классов, представленные в JRE.
public class HelloWorld public static void main(String[] args) System.out.println(«Hello World») > >
Как показано ниже:
После компиляции с помощью инструмента JDK javac будет сгенерирован байт-код HelloWorld.
Байт-код Java — это мост между JVM и программами Java. Вы можете использовать javap -c HelloWorld.class, чтобы увидеть, как выглядит байт-код, как показано на следующем рисунке:
Виртуальная машина Java использует стековую архитектуру, а ее инструкции состоят из кодов операций и операндов. Эти инструкции байт-кода называются кодом операции. Среди них более легкие для понимания коды операций, getstatic, Idc, invokevirtual, return и т. Д.
Вы можете продолжать использовать hexdump для просмотра двоичного содержимого байт-кода. Двоичный код, соответствующий приведенному выше байт-коду, представляет собой следующие числа:
b2 00 02 12 03 b6 00 04 b1
Вы можете увидеть их переписку
0xb2 getstatic Получить значение статического поля
0x12 ldc Постоянное значение из пула констант помещается в стек.
0xb6 invokeвиртуальный метод вызова привязки метода среды выполнения
0xb1 return void function return
код операции имеет длину один байт (0 ~ 255), что означает, что количество кодов операции в наборе команд не может работать 256. И сразу после кода операции стоит операнд. Например, b2 00 02 означает getstatic # 2 .
JVM завершает выполнение программы, анализируя эти коды операций и операнды. Использование команды Java для запуска файла .class фактически эквивалентно запуску процесса JVM.
Затем JVM переведет эти байт-коды, и у нее будет два метода выполнения.
- Наиболее распространенным является объяснение и выполнение, перевод кода операции + операнды в машинный код;
- Другой метод выполнения — это JIT, который часто называют своевременной компиляцией, при которой байт-код компилируется в машинный код при определенных условиях перед его выполнением.
Эти файлы .class будут загружены и сохранены в метапространстве, ожидая вызова, там будет концепция загрузчика классов.
Программа JVM запускается в стеке, который аналогичен выполнению других обычных программ, и также разделен на кучу и стек. Например, теперь, когда основной метод запущен, ему будет выделен кадр стека. Когда тело метода выталкивается, соответствующий кадр стека появляется. Вы обнаружите, что большинство инструкций байт-кода постоянно работают с кадром стека.
Остальные большие фрагменты данных помещаются в кучу. Java будет подробнее в разделении памяти.
4 резюме
Вернитесь к трем вопросам выше.
1. Зачем системе разработки Java нужна JVM?
JVM интерпретирует байт-код аналогично языку ассемблера и требует абстрактной среды выполнения. В то же время эта виртуальная среда также должна решать ряд проблем, таких как загрузка байт-кода, автоматическая сборка мусора и параллелизм. JVM — это фактически спецификация, которая определяет структуру файлов .class, механизм загрузки, хранилище данных, стек времени выполнения и т. Д. Наиболее часто используемой реализацией JVM является Hotspot.
2. Насколько хорошо вы знаете принципы работы вашей JVM?
Жизненный цикл JVM такой же, как и у программы Java. Когда программа завершается, экземпляр JVM исчезает. JVM лежит в основе всей системы, и конкретный принцип работы будет продолжен .
3. Как работает код Java?
Программа Java сначала компилируется в файл .class с помощью javac, а затем JVM загружает его в Метаданные Зона, механизм выполнения пройдет Смешанный режим Выполните эти байт-коды. При выполнении он будет переведен в функции, связанные с операционной системой. JVM существует как черный ящик из файлов .class, для ввода байт-кода и вызова функций операционной системы.
Процесс выглядит следующим образом: Файл Java -> Компилятор> Байт-код -> JVM -> Машинный код.
Источник: russianblogs.com
Что такое Java: простыми словами для новичков
Как появились и что связывает Google, Android и Uber? Эти программы были разработаны на Java — популярном языке программирования. Он используется для создания мобильных приложений, программного обеспечения, игр и веб-приложений. Как работает язык, что можно на нем писать, где и как научиться кодить на Java — разбираем в статье.
Подготовлено_выпускником —>
Получите востребованную профессию бесплатно. Обучение от 1 до 4 месяцев
Java — что это и зачем нужно
Java — один из самых популярных языков программирования в мире. Его используют многие компании, создавая сервисы и приложения: Aliexpress, Uber, Google, TripAdvisor, YouTube.
Основные принципы Java
Java — язык программирования общего назначения (многоплатформенный) и объектно-ориентированный. Это и есть основные принципы языка. Разберемся, что они означают.
Многоплатформенность. Это значит, что на Java можно написать практически любой IT-продукт: от игры до сервиса вызова такси. Код Java, написанный для Windows, можно перенести на ОС телефона. Важно, чтобы на операционной системе устройства была установлена виртуальная машина Java (JVM).
Объектно-ориентированность. Это означает, что в языке Java существуют классы и объекты, а не функции и команды. То есть вы сами их создаете и прописываете, как и для чего они должны работать.
Нужно создавать блоки для конструктора и постепенно собирать его. Это похоже на проектирование домов из отдельных строительных блоков, которые можно использовать при создании других домов и зданий. Программы, написанные на Java, состоят из подобных «блоков». Это сокращает время разработки, делает код более читаемым и удобным для изменений.
Эти признаки делают Java универсальным и относительно простым в изучении языком, который чрезвычайно популярен среди разработчиков программного обеспечения и технологических компаний.
Что можно писать на Java
Язык Java используют во многих сферах, и создавать на них можно многие сервисы. перечислим некоторые из них.
- Мобильные приложения для Android
- Веб-приложения и сервера
- Десктопные приложения
- Корпоративное программное обеспечение
- Игры
- Научные программы
- Банковские программы
Разработка приложений для Android и веб-разработка — две сферы, в которых чаще всего используют Java, однако и в других сферах язык популярен.
Плюсы и минусы Java
Каждый язык программирования имеет свои достоинства и недостатки, так же и с Java.
Плюсы: код может работать на разных платформах, его элементы можно использовать в разработке совсем других сервисов и приложений, по сравнению с другими языками в Java простой синтаксис.
Минусы: низкая скорость, если сравнивать, например, с C++, требует много памяти, обновления для бизнеса с 2019 года стали платными.
Что такое Java Virtual Machine (JVM), и как она обеспечивает переносимость Java
Java Virtual Machine (JVM) — это ключевой элемент платформы, который загружает, проверяет и выполняет код.
Чтобы понять, как работает JVM, разберемся в разнице между компилируемыми и интерпретируемыми языками программирования.
Компилируемые — это языки, которые в итоге компиляции (соединения) дают, код исполняемый на конкретном процессоре. Простую программу без проблем можно создавать под разные процессоры. Но программа, которая была собрана под один конкретный процессор, нельзя запустить на другом.
Интерпретируемые языки, такие как Java, работают иначе. Они имеют в своем составе интерпретатор, который транслирует код программы в операционные коды (опкод) процессора. Опкод — это часть машинного языка, она называет и определяет операцию, которая должна быть выполнена. Значит, если вы сможете один раз реализовать интерпретатор под разные платформы, то получите кроссплатформенный язык, и код, написанный на нем, будет работать на телефонах, компьютерах и других устройствах.
Так, программы на Java пишутся не для платформы, а для абстрактного «исполнителя» — виртуальной машины, или Java Virtual Machine (JVM). Она не знает, что исполняет инструкции на Java, ведь принимает и исполняет байт-код. А Java-программист не задумывается, на какой платформе будет запускаться его код и не подстраивается под нее. Именно так JVM обеспечивает переносимость кода, написанного на Java.
Как начать изучение Java
Java — более простой язык по сравнению, например с C и C++, но из-за синтаксиса сложнее, чем Python. Однако, если у вас уже есть минимальный опыт программирования, то можете смело остановиться на Java и учиться работать на нем. Однако, попробовать разобраться можно и с нулевыми знаниями, главное мотивация и начало с простых основ.
Чтобы самостоятельно и бесплатно познакомиться с языком и освоить принципы его работы, присмотритесь к следующим материалам и учебным ресурсам.
Здесь программисты делятся своим опытом, рассказывают лайфхаки разработки и рабочие истории.
Это серия видеороликов для начинающих разработчиков на Java. В материалах объясняют основы языка, объясняют, как начать работать с ним.
Памятки содержат справки о языке программирования, сведения о параметрах JVM, заметках Spring, Maven, Gradle, IntelliJ и Git.
Советы для новичков, изучающих Java
Чтобы вам было легче разобраться, собрали несколько советов для тех, кто только начала изучать язык Java.
Код должен быть понятным и легко читаемым. Большую часть времени вы будете не писать новый код, а читать и анализировать уже написанный. В этом и есть смысл Java, как мы объясняли ранее — готовые блоки уже написаны и их можно адаптировать под задачу. Код должен быть понятным, чтобы тратить минимум времени на понимание функций каждого куска кода. Если вы написали понятный код с прогнозируемым поведением, вы снизите риск ошибки, которая может произойти, если код меняет не его автор.
Придерживайтесь спецификации Java, принятых командой разработки, когда пишете код. Спецификация похожа на правила оформления докладов в школах и университетах. Представьте, что текст доклада напечатан разными шрифтами, кеглями, цветами. Для этого есть единый стиль оформления текста. Так и с кодом.
Спецификация приводит код к единому виду.
Программирование на Java — хороший вход в карьеру разработчика, если у вас уже есть мотивация развиваться в этой области. У языка есть свои плюсы и минусы, и только вам решать, остановиться на изучении именно его или изучать и пробовать другие варианты. Важный совет, который мы можем дать: научитесь хорошо кодить на одном любом языке и изучать другие станет легче.
Как начать зарабатывать на Java-разработке
Стать квалифицированным специалистом реально, обучившись на курсах IT от федерального проекта «Содействие занятости».
Выбирайте, в какой профессии вы хотите стартовать:
- «Тестировщик программного обеспечения: с нуля до первых проектов»
- «Web-программист: с нуля до первых проектов»
- «1С программист»
- «Аналитик данных:с нуля до разработки прикладных решений для бизнеса»
- «Product Manager в IT»
- «Разработчик чат-ботов с использованием готовых конструкторов»
- «Project manager в IT: старт карьеры руководителя ИТ проектов»
- «Data-аналитик: старт карьеры»
Обучение на всех курсах проходит в онлайн-формате на образовательной платформе Odin. Все учебные материалы, лекции и презентации доступны вам в любое время. Обучаться можно по гибкому графику: вечером или на выходных, даже с телефона.
После окончания программы вы получите документ установленного образца и возможность пройти оплачиваемую стажировку в компаниях-партнерах проекта. Сейчас «Содействие занятости» сотрудничает с крупными компаниями: Литрес, МТС, Яндекс, Кинопоиск, ВТБ, банк «Открытие», Теле2 и другими.
Как только закончите обучение, вы получите доступ в закрытый канал с 4500+ вакансиями от проверенных работодателей России. Мы связываемся с работодателями по всей России и ищем для вас актуальные вакансии «с опытом» и «без», чтобы вы могли найти работу мечты после обучения. Каждый день канал добавляется больше 10 свежих вакансий
Чтобы вам было легче и комфортнее найти работу после обучения, чувствовать поддержку и получать помощь и ответы на вопросы, обращайтесь в Центр карьеры. Вы научитесь создавать продающее резюме, оформлять портфолио, писать сопроводительные письма.
Наши HR-специалисты профессионально помогут:
- Сориентироваться в сферах, где вам стоит искать работу по своей специальности.
- Понять, на какую зарплату можно претендовать (подготовят статистику по вашей позиции).
- Определиться с чего начать, если планировали менять работу.
- Узнать, как действовать при угрозе увольнения или сокращения.
- Составить план поиска работы.
- Правильно коммуницировать с работодателем на всех этапах работы.
Поделиться:
Бесплатно помогаем найти работу мечты
Лучшая инвестиция — это инвестиция в себя, в свои знания и будущее. Оставьте заявку на бесплатное обучение прямо сейчас и станьте участником проекта.
Получите востребованную профессию бесплатно. Обучение от 1 до 4 месяцев
Источник: www.tgu-dpo.ru
Почему Java так популярна?
Как мы уже упоминали в одной из статей, согласно данных Oracle, более 3 миллиардов устройств в мире работают на Java. Так почему же Java так популярна? Можно выделить 4 основные причины:
1. «Написано единожды, работает везде» (кросс-платформенность)
Язык Java хорош тем, что один и тот же написанный код будет работать, например:
- и на Windows
- и на Linux
- и на MacOs
В то время как на других языках программирования Вы должны написать не 1, а сразу 3 разных кода — под Windows, под Linux и под MacOs. Такая особенность Java, что «написано единожды, работает везде» называется кросс-платформенностью . Наверняка, Вам интересно, как же обеспечили кросс-платформенность в Java? Давайте посмотрим на картинку ниже.
- Когда Вы будете писать программы на языке Java, они всегда будут сохраняться отдельными файлами. Причём эти файлы всегда будут иметь расширение .java . Например, Program.java. Если, например, Ваши коллеги захотят ознакомиться с таким файлом, они легко смогут прочитать написанный в нём код или что-то переписать, дописать в файле, если это будет необходимо. Потому что этот код как бы человекочитаемый .
- Далее, когда Вы запускаете компилятор (если быть совсем точными, то это называется компилятор javac ), Ваш код из человекочитаемого превращается в так называемый байт-код (то есть в виде разных комбинаций 0 и 1) и код становится исключительно машиночитаемым . После этого появится еще один файл, который всегда будет иметь расширение .class. В нашем примере -Program.class
- Затем JVM (Java Virtual Machine) исполняет байт-код.
2. Дружественный синтаксис
Разработчики языка Java не стали изобретать велосипед с нуля . А, грубо говоря:
- взяли всё самое лучшее от лучшей марки «велосипеда» — языка программирования С и его прямого наследника языка программирования С++
- выбросили всё, что посчитали лишним и не особо удачным в С и С++
- внесли новшества в новый язык программирования Java
И выиграли от такого подхода. Поскольку между Java, С и С++ есть много схожего , программистам было гораздо легче переходить на новый язык. Ведь не надо было абсолютно всё учить с нуля, многие конструкции были им уже понятны. И это тоже способствовало быстрому росту популярности Java среди программистов.
3. Объектно-ориентированный язык
Попробуем буквально на пальцах объяснить в чём суть объектно-ориентированного программирования. Позже, в разделе Java ООП, мы посвятим целую статью этому — «Что такое ООП?» А пока Вам будет достаточно такого объяснения.
ООП — это программирование с помощью классов и объектов. Для начала разберёмся что такое объект, а потом плавно перейдём к понятию что такое класс.
В сё вокруг нас является объектом. Например,
- машина — это объект
- человек — это объект
- кошка — это объект
- собака — это объект
- стол — это объект
- и т.д.
У каждого объекта есть свойства. Например, свойства машины: модель, цвет, размер и т.д.
У каждого объекта есть методы (то есть действия, которые может делать объект). Например, методы машины: затормозить, нажать на газ и т.д. Ниже приводим Вам слайд в помощь.
Как было сказано, ООП — это программирование с помощью классов и объектов. Так что же такое класс?
Класс — это как бы уже готовый шаблон. Приведём несколько образных примеров что такое класс.
Пример №1
Все кошки разные:
- с короткой шерстью
- с длинной шерстью
- без шерсти и т.д.
Но вместе с тем, у всех кошек есть много общего. Так вот если бы мы выделили общее в отдельный класс Кошка, тогда можно было бы брать класс Кошка за основу каждый раз, когда бы нам нужно было бы создать кошку. Он бы работал как шаблон при создании кошки . А далее уже под каждую конкретную кошку мы бы прописывали дополнительные черты — особенности именно этой кошки.
Пример №2
Все машины разные:
- легковые
- грузовики
- внедорожники
- бюджетного класса
- бизнес класса
- и т.д.
Вместе с тем у всех машин есть много общих черт. Так вот если бы мы выделили эти общие черты в отдельный класс Машина , тогда можно было бы при создании машины брать каждый раз класс Машина за основу. Он бы работал как шаблон при создании машины . А далее уже бы под каждую машину мы бы прописывали дополнительные черты — особенности именно этой машины.
Напомним: ООП (объектно-ориентированное программирование) — это программирование с помощью классов и объектов. Впрочем об ООП мы поговорим детально, когда дойдём до уровня Java ООП. А пока этой информации Вам будет более, чем достаточно.
4. Управление памятью
Надеемся, что наша статья была Вам полезна. Также есть возможность записаться на наши курсы по Java в Киеве. Обучаем с нуля.
По всем вопросам звоните:
+38 050 205 77 99
+38 098 205 77 99
Или читайте информацию по нашим курсам Java c нуля у нас на сайте.
- ← Какие есть виды Java?
- Где используется Java? →
Источник: vertex-academy.com