Технология Java
-
Java Virtual Machine
Java Virtual Machine (сокращенно Java VM, JVM) — виртуальная машина Java — основная часть исполняющей системы Java, так называемой Java Runtime Environment (JRE). Виртуальная машина Java интерпретирует и исполняет Байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java (javac). JVM может также использоваться для выполнения программ, написанных на других языках программирования. Например, исходный код на языке Ada может быть откомпилирован в байт-код Java, который затем может выполниться с помощью JVM.
JVM является ключевым компонентом платформы Java. Так как виртуальные машины Java доступны для многих аппаратных и программных платформ, Java может рассматриваться и как связующее программное обеспечение, и как самостоятельная платформа, отсюда принцип «написано однажды, запускается везде» (write once, run anywhere). Использование одного байт-кода для многих платформ позволяет описать Java как «скомпилировано однажды, запускается везде» (compile once, run anywhere).
Спецификация JVM
В 1996-м году компания Sun выпустила первую версию документа «Голубая книга JVM», в котором описана спецификация виртуальной машины Java, ставшего де-факто отраслевым стандартом платформы Java. Благодаря этому документу появились альтернативные реализации JVM, являющиеся «разработками с чистого листа» (англ. clean room design). В качестве примера можно привести Kaffe.
Начиная с версии J2SE 5.0 изменения в спецификации JVM вырабатываются в соответствии с формализованными пожеланиями заинтересованных сторон. Процесс внесения изменений в спецификации JVM называется Java Community Process.
JVM, доступная в исходных текстах на Си от фирмы Sun называется KVM (Kilo Virtual Machine) и доступна на их сайте.
Конкуренция между Sun и Microsoft
В начале развития платформы Java существовали две конкурирующие реализации Java VM — одна от фирмы Sun Microsystems, создателя языка Java, для различных платформ (Windows, Mac OS, Unix), и другая — от фирмы Microsoft, ориентированная только на платформу Windows и, по утверждениям Microsoft, «специально оптимизированная для быстрого выполнения Java-кода на платформе Microsoft Windows».
Однако, Microsoft JVM была не полностью совместима со спецификацией, описанной Sun в голубой книге JVM, а также имела существенные проблемы с производительностью при работе под большими нагрузками (при большом числе одновременно выполняемых потоков) и с безопасностью. Компания Sun посчитала такую ситуацию недопустимой и решила, что Microsoft занимается намеренной дискредитацией и профанацией платформы Java путем распространения своей версии виртуальной машины Java, обладающей вышеперечисленными недостатками. На этом основании Sun неоднократно подавала в суд на Microsoft и добилась сначала того, что Microsoft потеряла право называть свою реализацию JVM Java VM. С этого момента Microsoft стала называть свой продукт просто Microsoft VM. Затем Microsoft потеряла право встраивать свою VM в браузеры и операционные системы. После этого Microsoft вынуждена была изъять свою VM из поставки Windows и из пакета IE, но могла, согласно решению суда, предлагать её отдельно для скачивания на сайте. Затем Sun добилась прекращения разработки новых версий Microsoft VM и прекращения выпуска обновлений к ней, а затем и снятия Microsoft VM из списка доступных для скачивания программ на сайте Microsoft.
Некоторые обозреватели компьютерных изданий полагают, что жесткая позиция, занятая Sun по вопросу Java, могла послужить дополнительным стимулом для разработки компанией Microsoft собственного Windows-платформенного решения — «.NET Framework».
Разногласия между Sun и IBM
В 2001 году, с целью разработки стандарта кросс-платформенных Desktop-приложений, IBM стартовала открытый проект Eclipse.
Фреймворк Eclipse был основан на предыдущей закрытой разработке IBM VisualAge. IBM удалось сбалансировать интересы свободного сообщества и интересы бизнеса (свои интересы) в лицензии Eclipse Public License, признанной FSF.
Проект успешно развивается, признан индустрией, в значительной степени отделился от IBM в самостоятельную Eclipse Foundation.
Sun остаётся в оппозиции Eclipse Foundation, как и Microsoft. Формально основной причиной противоречий остается библиотека SWT, которая противоречит Sun-концепции виртуальной машины и переносимости Java-приложений.
Среда исполнения
Программы, предназначенные для запуска на JVM должны быть скомпилированы в стандартизированном переносимом двоичном формате, который обычно представляется в виде файлов .class. Программа может состоять из множества классов, размещенных в различных файлах. Для облегчения размещения больших программ, часть файлов вида .class могут быть упакованы вместе в так называемый .jar файл (сокращение от Java Archive).
Виртуальная машина JVM исполняет файлы .class или .jar, эмулируя инструкции, написанные для JVM, путем интерпретирования или использования just-in-time компилятора (JIT), такого, как HotSpot от Sun microsystems. В наши дни JIT компиляция используется в большинстве JVM в целях достижения большей скорости. Существуют также ahead-of-time компиляторы, позволяющие разработчикам приложений прекомпилировать файлы классов в родной для конкретной платформы код.
Как и большинство виртуальных машин, Java Virtual Machine имеет stack-ориентированную архитектуру, свойственную микроконтроллерам и микропроцессорам.
JVM, которая является экземпляром JRE (Java Runtime Environment), вступает в действие при исполнении программ Java. После завершения исполнения, этот экземпляр удаляется сборщиком мусора. JIT является частью виртуальной машины Java, которая используется для ускорения времени выполнения приложений. JIT одновременно компилирует части байт-кода, которые имеют аналогичную функциональность, и, следовательно, уменьшает количество времени, необходимого для компиляции.
- Часть 1.2. Basic(Знакомство с информационной технологией) 186
- Часть 1.3. Html (Знакомство с информационной технологией). Примечание: Подробно будут изучать (некоторые специальности) в рамках курса языки разметки web-страниц 198
- Часть 1.4. С-подобные языки(Знакомство с информационной технологией) 204
- Конспект лекций
- Часть 1: Современные информационные технологии (по и оборудовние)
- Вопрос 01. Информация и информатизация.
- Вопрос 02. Устройства хранения информации.
- Вопрос 06. Базы данных. Субд.
- Вопрос 07. Acses
- Вопрос 08. Передача данных.
- Вопрос 09. Сетевые информационные технологии
- Вопрос 10. Интернет. Сервисы, услуги и информационные ресурсы Интернета
- Вопрос 11. Защита информации
- Вопрос 12: Архитектура и структура пк. Назначение составных элементово пк. Сборка пк.
- Часть 2: Разработка информационных технологий. Применение информационных технологий преданазначенных для разработки информационных технологий.
- Вопрос 13. Переменные, объявление переменных, константы, массивы в языке Паскаль.
- Вопрос 14. Условный оператор (If) и оператор выбора (case) в языке Паскаль
- Вопрос 15. Циклы в языке Паскаль
- Вопрос 16. Объявление и использование своих функций и процедур в языке Паскаль
- Вопрос 17. Встроенные функции в языке Паскаль
- Вопрос 23. Понятие класса. Объявление класса.
- Вопрос 25. Среда Delphi и особенности языка
- Вопрос 28. Основные языковые структуры и применение html.
- Вопрос 29. JavaScript.
- 1. Оператор for
- 2. Оператор while
- 3. Оператор do…while
- 4. Метки операторов
- 5. Оператор break
- 6. Оператор continue
- 5. Оператор for…in
- 6. Оператор with
- Вопрос 30. Php.
- Вопрос 31. Жизненный цикл информационных технологий
- Часть 3: Концептуальные информационные технологии
- Вопрос 32: Технология com
- Вопрос 33: Технология Java. Java virtual mashin. Особенности и области применения языка Java.
- Технология Java
- Язык программирования Java
- Вопрос 34: Технология .Net. Особенности языка и области применения языка с#.
- Технология .Net.
- Язык с#.
- Вопрос 35: Использование библиотек DirectX и OpenGl.
- Вопрос 36: Создание компьютерных игр. Генераторы комьпьютерных игр.
- Вопрос 37: Проектирование информационных технологий. Язык uml 2.
- Вопрос 38: Интерпретаторы и компиляторы. История развития языков. Общая характеристика, назначение и область применения различных языков программирования.
- Интерпретаторы
- Компиляторы
- История развития языков. Общая характеристика, назначение и область применения различных языков программирования.
- Вопрос 39: Фриланс в информационных технологиях. Sharovar-ное программирование. Волонтерство в информационных технологиях.
- Фриланс
- Волонтеры
- Вопрос 40: Интерфейс usb.
- Список лабораторных работ (в количестве 5 штук с разделением на составные части)
- Часть 2: Использование ms Acses.
- Часть 3: Использование оборудования.
- Часть 4: Дополнительные лабораторные работы
- Пояснение по содержанию лекций и лабораторных работ
- Условный оператор (If) и оператор выбора (case) в языке Паскаль
- Циклы в языке Паскаль
- Объявление и использование своих функций и процедур в языке Паскаль
- Встроенные функции в языке Паскаль
- (2 Занятие)Лаб. Работа. 1. Часть 2. Особенности применения, особенности языка и среда Delphi (Знакомство с информационной технологией).
- Часть 1.2. Basic(Знакомство с информационной технологией)
- (4 Занятие)Лаб. Работа. 2. Часть 2. Особенности применения, особенности языка и среда Visual Basic (Знакомство с информационной технологией).
- Часть 1.3. Html (Знакомство с информационной технологией). Примечание: Подробно будут изучать (некоторые специальности) в рамках курса языки разметки web-страниц
- Часть 1.4. С-подобные языки(Знакомство с информационной технологией)
- (9 Занятие)Лаб. Работа. 4. Часть 4. Особенности применения, особенности языка и среда ms c# (Знакомство с информационной технологией).
- (10 Занятие)Лаб. Работа. 4. Часть 5. Особенности применения, особенности языка и среда JavaScript (Знакомство с информационной технологией).
- 1. Оператор for
- 2. Оператор while
- 3. Оператор do…while
- 4. Метки операторов
- 5. Оператор break
- 6. Оператор continue
- 5. Оператор for…in
- 6. Оператор with
- (11 Занятие)Лаб. Работа. 4. Часть 6. Особенности применения, особенности языка и среда php (Знакомство с информационной технологией).