|
Многие мои друзья могут быть похожи на меня, которые давно пользуются JAVA, но связь и различия между JDK, JRE и JVM всегда были расплывчатыми. Сегодня я напишу эту статью, чтобы разобраться в отношениях между этими тремя.
JDK: Java Development ToolKit. JDK является ядром всей JAVA, включая Java Runtime Environment, множество Java-инструментов (javac/java/jdb и др.) и библиотеки на базе Java (то есть Java-API включают rt.jar). Самым распространённым JDK является JDK, выпущенный Sun, помимо Sun, существует множество компаний и организаций, которые разработали свой собственный JDK, например, иностранные компании IBM разработали свой JDK, внутренний Taobao также разработал свой JDK, различные организации создали свой JDK для улучшения в некоторых аспектах и адаптации к своим потребностям, например, JDK IBM считается гораздо эффективнее JDK SUN. Но в любом случае, нам всё равно нужно освоить базовый Sun JDK. Существует три версии JDK: J2SE, стандартное издание, стандартное издание — это версия, которую мы обычно используем J2EE, Enterpsise edtion, Enterprise Edition, используем этот JDK для разработки приложений J2EE. J2ME, микроредакция, в основном используемая для Java-приложений на мобильных устройствах и встроенных устройствах.
Мы часто используем JDK для обозначения Java API, Java API — это интерфейс прикладного программирования Java, на самом деле это некоторые классы Java, написанные нашими предшественниками, включая важные языковые структуры и базовые графики, сетевые и файловые вводы/выводы и т.д., которые мы называем классами, написанными нашими предшественниками в наших собственных программах, как основу для собственной разработки. Конечно, у нас всё больше сторонних библиотек с лучшей производительностью или мощными функциями.
JRE: Java Runtime Enviromental. Другими словами, все программы на Java должны находиться в JRE для запуска. Включает ядра JVM и JAVA, а также поддерживающие файлы. В отличие от JDK, он не включает инструменты разработки — компиляторы, отладчики и другие инструменты.
JVM: Java Virtual Mechinal (JAVA Virtual Machine). JVM является частью JRE — вымышленного компьютера, реализуемого путём имитации различных функций компьютера на реальном компьютере. JVM имеет собственную полную аппаратную архитектуру, такую как процессоры, стеки, регистры и т.д., а также соответствующую систему команд. Основная задача JVM — интерпретировать собственный набор инструкций (то есть байткод) и сопоставлять его с набором инструкций локального процессора или системными вызовами ОС. Язык Java работает кроссплатформенно, что на самом деле является другой операционной системой, используя разные правила отображения JVM, чтобы сделать его независимым от операционной системы и полностью кроссплатформенным. JVM не заботится о верхнеуровневых Java-исходных файлах, её интересуют только классовые файлы, сгенерированные исходными файлами. Файл классов состоит из набора инструкций JVM, таблицы символов и дополнительной информации. Следующая рисунок даёт хороший обзор взаимоотношений между JDK, JRE и JVM:
Фактическая ситуация нашей разработки такова: после того как мы создаём собственную программу на JAVA с использованием JDK (вызов JAVA API), мы компилируем наши текстовые java-файлы в JAVA-байткод через компилятор (javac) в JDK, запускаем эти JAVA-байткоды на JRE, JVM парсирует эти байткоды и сопоставляет их с набором инструкций процессора или системными вызовами ОС.
|