Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзаменационные билеты по Java.docx
Скачиваний:
15
Добавлен:
23.09.2019
Размер:
171.33 Кб
Скачать

Проприетарные реализации

  • Azul VM — сегментированная Java Virtual Machine, основанная на оригинальной микропроцессорной архитектуре, оптимизированной для работы с Java. Возможно использование до 54 микропроцессоров и до терабайт памяти без накладных расходов на сборку мусора.

  • CEE-J реализация Java-технологии с нуля без лицензирования от Sun.

  • Excelsior JET (с компилятором AOT)

  • Hewlett-Packard, Java для HP-UX, OpenVMS, Tru64 и Reliant (Tandem) UNIX-платформ

  • J9 (IBM), для AIX, Linux, MVS, OS/400, Pocket PC, z/OS

  • Apogee предоставляет встроенную Java, использующую IBM J9 и библиотеку классов Apache Harmony для X86/ARM/MIPS/PowerPC, работающих под Linux/LynxOS/WinCE.

  • Jbed, (Esmertec) — Java VM с поддержкой реального времени для встроенных систем и программно-аппаратных комплексов, работающих с Интернет[1]

  • JamaicaVM, (aicas) — Java VM c поддержкой приложений реального времени. Предназначена для встроенных систем

  • JBlend, (Aplix) реализация Java ME

  • JRockit (изначально разрабатываемая BEA Systems) приобретена корпорацией Oracle для Linux, Windows и Solaris

  • Mac OS Runtime for Java (MRJ)

  • MicroJvm (IS2T — Industrial Smart Software Technology) Широкий спектр виртуальных машин предназначенных для встроенных систем (в том числе систем жесткого реального времени), ARM7, ARM9, AVR, AVR32, PPC, MIPS, …

  • Microsoft Java Virtual Machine (поддержка прекращена в 2001 году)

  • OJVM (иногда также «JServer») от Oracle Corporation

  • PERC (Aonix/Atego) Java реального времени для встраиваемых систем

  • SAPJVM (SAP) лицензированная у Sun и модифицированная Sun JVM, портированная на платформы, поддерживаемые ПО SAP NetWeaver. Поддерживает Java 5 и частично Java 6 compatible (Windows i386, x64, IA64, Linux x86, IA64, PPC, AIX PPC, HP-UX Sparc/IA64, Solaris Sparc/x86_64, i5/OS PPC)

Свободные и открытые реализации

  • HotSpot

  • AegisVM

  • Apache Harmony

  • CACAO

  • Dalvik

  • IcedTea

  • IKVM.NET

  • Jamiga

  • JamVM

  • Jaos

  • Jato VM

  • JC

  • Jelatine JVM

  • JESSICA (Java-Enabled Single-System-Image Computing Architecture)

  • Jikes RVM

  • JNode (operating system)

  • JOP (Аппаратная реализация JVM)

  • Juice

  • Jupiter

  • JX

  • Kaffe

  • leJOS

  • Maxine (meta-circular JVM being developed by SUN)

  • Mika VM

  • Mysaifu (Windows CE / Windows Mobile)

  • NanoVM

  • SableVM

  • Squawk virtual machine (for embedded system and small devices)

  • SuperWaba

  • TakaTuka (for wireless sensor network devices)

  • TinyVM

  • VMkit of Low Level Virtual Machine

  • Wonka VM

  • Xam

Краткая Java-терминологияВиртуальная машина (virtual machine) – абстрактное вычислительное устройство, которое может быть реализовано разными способами: аппаратно или программно. Компиляция в набор команд виртуальной машины происходит почти так же, как и компиляция в набор команд микропроцессора.

Java-платформа (Java Platform) – виртуальная машина Java и стандартные классы составляют Java-платформу. Java-платформа предоставляет программам унифицированный интерфейс независимо от операционной системы, на которой они работают.

Java Remote Method Invocation (JRMI) – интерфейс вызова удаленных методов. Распределенная объектная модель, определяющая, каким образом производится вызов удаленных методов, работающих на другой виртуальной машине Java.

Java Runtime Environment (JRE) – среда исполнения Java. Подмножество Java Development Kit, предназначенное для конечных пользователей. JRE состоит из виртуальной машины Java (JVM), стандартных классов Java и вспомогательных файлов.

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

Java байт-код (Java bytecode) – машинно-независимый код, который генерирует Java-компилятор. Байт-код выполняется Java-интерпретатором. Виртуальная машина Java полностью стековая: не требуется сложная адресация ячеек памяти и большое количество регистров. Поэтому команды JVM короткие, большинство из них имеет длину 1 байт, отчего команды JVM называют байт-кодами (bytecodes), хотя имеются команды длиной 2 и 3 байта (средняя длина команды составляет 1,8 байта). Программа, написанная на языке Java, переводится компилятором в байт-код. Байт-код записывается в одном или нескольких файлах, может храниться во внешней памяти или передаваться по сети. Это особенно удобно благодаря небольшому размеру файлов с байт-кодом. Полученный в результате компиляции байт-код можно выполнять на любом компьютере, имеющем систему, реализующую JVM (в не зависимости от типа какого-либо конкретного процессора и архитектуры ПК). Так реализуется принцип Java: «Write once, run anywhere» – «Написано однажды, выполняется где угодно».

Java-апплеты (Java applets) – Java-приложения, доступ к которым можно получить из веб-браузера.

Java Community Process (JCP) — сформированный в 1998 году формальный процесс, который позволяет заинтересованным лицам участвовать в формировании будущих версий спецификаций платформ языка Java.

JSR

Основа JCP — так называемые JSR (Java Specification Request/Запрос на Спецификацию Java), формальные документы, описывающие спецификации и технологии, которые предлагается добавить к Java платформе.

Разработка JSR включает следующие шаги:

  • Запрос (Initiation). Спецификация предлагается членами сообщества, и, путем голосования, принимается Исполнительным Комитетом (JCP Executive Committee). В это время JSR присваивается номер.

  • Черновик для сообщества (Community Draft). После принятия JSR формируется экспертная группа, которая разрабатывает первый черновик спецификации. Этот черновик выносится на рассмотрение Исполнительного Комитета и членов сообщества. По итогам обсуждения выносится решение о том, переходить к следующей стадии, или необходим новый доработанный Community Draft.

  • Открытый черновик (Public Draft). Черновик, дошедший до этой стадии, выкладывается в свободный доступ, и любой человек, имеющий доступ к сети Интернет, может рассмотреть его и высказать свое мнение. Экспертная группа использует эти отзывы для дальнейшего совершенствования спецификации. После этого доработанная спецификация выносится на голосование Исполнительного Комитета для окончательного утверждения. К этому времени становятся доступными Эталонная реализация (reference implementation) и набор автоматических тестов Technology Compatibility Kit (TCK).

  • Поддержка (Maintenance). Окончательная версия спецификации, эталонной реализации и TCK обновляется по мере поступления запросов на доработку, уточнение и расширение. Некоторые запросы могут потребовать пересмотра спецификации экспертной группой и выпуска новой версии, или даже формирования нового JSR.

Области данных виртуальной машины Java

  • Стек (Java Stack)

Каждый поток виртуальной машины Java имеет свой собственный стек, созданный в момент создания потока. Стек содержит кадры виртуальной машины и является эквивалентом стека в обычном языке, таком как C. Он содержит локальные переменные и результаты промежуточных вычислений, а также активно используется механизмом вызова и возврата из методов.

  • Динамически распределяемая область (Heap)

Виртуальная машина Java имеет динамически распределяемую область (heap), общую для всех ее потоков. Это область, из которой динамически выделяется память для всех экземпляров классов и массивов. Она создается при старте виртуальной машины.

  • Регистр pc (pc Register)

Виртуальная машина Java может поддерживать множество потоков(нитей, threads) исполнения одновременно. Каждый такой поток имеет свой собственный регистр pc (program counter). В любой момент времени поток виртуальной машины исполняет код одного метода, являющегося текущим для данного потока. Если этот метод не является native, регистр pc содержит адрес инструкции виртуальной машины, исполняющейся в данный момент. В противном случае его значение не определено. Размер этого регистра соответствует размеру типа word.

  • Область методов (Method Area)

Виртуальная машина Java имеет область методов (method area), общую для всех ее потоков. Эта область аналогична области компилированного кода в обычных языках программирования или сегменту "TEXT" в процессе UNIX. В ней хранятся информационные структуры классов - область констант, поля и данные методов, а также код методов и конструкторов, включая специальные. Эта область создается при старте виртуальной машины.

  • Область констант (Constant Pool)

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

  • Стеки для native-методов (Native Method Stacks)

Реализация виртуальной машины Java может использовать такие стеки для поддержки native-методов, т.е. методов, написанных не на языке Java. Также они могут быть использованы для реализации эмулятора инструкций виртуальной машины Java в таких языках, как например C.