Разработка сред управляемого исполнения на примере виртуальной машины Java Занятие 1 Салищев С. И.
Виртуальная машина Программная система позволяющая без изменения запускать код для одной программно аппаратной платформы на другой несовместимой программно аппаратной платформе. Возможна интерпретация и динамическая компиляция в естественный код целевой платформы. Выбор способа исполнения является деталью реализации. Выбор способа исполнения является деталью реализации. Примеры: Xen, VMWare, DosBox, Sega Emulator, etc. Примеры: Xen, VMWare, DosBox, Sega Emulator, etc.
Среда управляемого исполнения Стандартизованное представление кода. Управление памятью(сборка мусора). Защита данных пользователя. Обработка ошибок. Стандартные средства (библиотеки) для решения типовых задач. Все это возможно только при ограничении доступа к низкоуровневым средствам платформы. Все это возможно только при ограничении доступа к низкоуровневым средствам платформы. За счет стандартизации может существовать несколько эквивалентных реализаций. За счет стандартизации может существовать несколько эквивалентных реализаций.
Компиляция в естественный код платформы Полный доступ пользовательского кода ко всем аппаратным возможностям платформы. Специфичное для платформы естественное представление кода. Для трансформации кода используется статическая компиляция. Пользователь имеет непосредственный доступ к естественному коду платформы.
Преимущества MRE Компактность кода. Переносимость. Возможность проверки безопасности кода перед загрузкой. Упрощение отладки. Улучшение безопасности. Возможность динамической оптимизации кода.
Недостатки MRE Виртуальная машина требует дополнительных ресурсов. Сложность доступа к низкоуровневым особенностям платформы. Ограниченная применимость для задач системного программирования.
Существующие MRE/VM Специализированные: RIP for PostScript, SQL Server, Web Browser for Java Script Общего применения: PHP, Ruby, CLISP, Java RE, CLI(.NET)
Поедание собственной стряпни Genera OS in LISP JNode OS in Java Jikes RVM JVM in Java Singularity OS in CIL
История Java 1991 Oak – язык для потребительской электроники и интерактивного телевиденья Java 1.0, HotJava web browser 1996 Java Card 1998 Java with JIT 1999 Java HotSpot dynamic compiler 1999 J2SE, J2EE, J2ME
Приложения Java Для телефонов: id Doom, id Orcs&Elves, Mobile Book Reader Клиентские: Eclipse, NetBeans, Azureus, jEdit Серверные: Tomcat, Geronimo, Axis, jBoss
История CLI 1998 MS JRE with JIT 1998 J начата стандартизация CLI ECMA 2000.NET 1.0 Beta 2002.NET CLI 3ed - стандарт ECMA 2005.NET NET NET for embedded devices
Приложения СLI Пользовательские: Paint.NET