Logo    
Деловая газета CitCity.ru CITKIT.ru - все об Open Source Форумы Все публикации Учебный центр Курилка
CitForum    CITForum на CD    Подписка на новости портала Море(!) аналитической информации! :: CITFORUM.RU
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

22.05.2017

Google
WWW CITForum.ru
С Новым годом!
2005 г.

Многозадачная Java: наступление на системном фронте

Арсений Чеботарев.
Компьютеры+Программы

Идея Java OS может стать реальностью уже в ближайшем будущем. Благодаря нескольким новым интерфейсам и изменениям в виртуальной машине, разрабатываемым в рамках проекта Barcelona.

До сих пор Java была изначально отделена от операционной системы с помощью Java Runtime. В результате этот язык программирования обладал многими полезными свойствами — но не теми, которые делали бы его пригодным для системного программирования. В частности, не предусматривалось никаких встроенных средств управления ресурсами. Это препятствовало реализации такой давно вынашиваемой идее, как полностью самостоятельная операционная среда Java OS. Для выполнения системных функций разработчику приходилось пользоваться обычным в таких случаях языком С — и потом возвращаться в код Java. И хотя в Java изначально включена совместимость с C и это взаимодействие давно не вызывает проблем, тем не менее у многих переход в Native Code вызывал ощущение, будто что-то не так, как должно быть. Функции управления заданиями могли б быть реализованы средствами Java — при условии поддержки их со стороны системы времени выполнения.

Вторым мотивом для введения многопоточности стало распространение параллельного выполнения нескольких Java-приложений в нескольких копиях виртуальной машины. При этом виртуальные машины не оптимизировали использование памяти и тактов процессора. В частности, каждая из VM отдельно от остальных разбирала каждый из пакетов, в том числе стандартных,— и таким образом значительная часть работы дублировалась.

В результате для решения поставленных задач и вновь возникающих проблем, связанных с масштабируемостью и надежностью, был создан Barcelona Project. В кратком описании этого проекта явно сформулирована его цель: превратить Java в полноценную операционную среду. Метод: прозрачное разделение метаданных (системных данных) между приложениями.

Первоначально было решено не менять существующую виртуальную машину в корне, но дополнить ее модулем, который, по замыслу, должен отвечать за совместно используемые ресурсы и эффективно кэшировать их. Каждая запускаемая копия виртуальной машины загружала очередную порцию классов в общую область — и таким образом эффект кэширования для каждого следующего экземпляра VM проявлялся все лучше. На следующем этапе были переработаны основные библиотеки, в которых были выделены реентерабельные блоки кода "только для чтения".

Часть данных, составляющая состояние приложения, которая не может быть разделена между приложениями, включает глобальные переменные, которые в терминах Java представлены статическими членами системных и пользовательских классов. Код — как данные только для чтения — по определению поддается повторному использованию, а значения динамических членов не нуждаются в реентерабельности.

Прирост быстродействия и экономии памяти для обоих подходов составил около 10%, однако главная цель не была достигнута, поскольку основное время при запуске приложения составляет запуск самого Java Runtime. То есть, запуская новые виртуальные машины, никогда не удастся достичь желаемой гибкости, особенно для небольших приложений, таких как утилиты командной строки. Поэтому было решено вынести Runtime в категорию (квази-)резидентных в памяти программ (демонов, сервисов) и сделать Java многопоточной и реентерабельной средой для множества приложений. Таким образом, JRE запускается только один раз (возможно — только при запуске компьютера), и накладных расходов типа "CreateProcess" при запуске отдельных приложений, в том числе и первого, не возникает.

На данном этапе существует прототип многопоточной виртуальной машины, MVM, основанной на Hot Spot Virtual Machine и соответствующем компиляторе. Основным принципом построения новой машины, по словам Гжегожа Чайковски (Grzegorz Czaikowski), руководителя проекта Barcelona, стала проверка всех компонент Java VM на предмет разделения функциональности между приложениями. В результате каждая выполняемая программа требует только ограниченных частных ресурсов, связанных с состоянием приложения. Большинство кода и метаданных теперь обслуживают все приложения одновременно. В частности, удалось сделать реентерабельными в рамках многопоточной виртуальной машины стандартные библиотеки классов, которые используют все без исключения приложения.

В результате скорость запуска приложений возросла на 60…90% — и для большинства приложений, в том числе и графических, составляет теперь около одной секунды. Стало возможным даже реализовать такие системные утилиты, как ls или grep,— раньше этому препятствовало значительное время запуска, которое сводило на нет преимущества эффективности таких команд. Оперативная память, занимаемая приложением, сократилась в полтора-два раза за счет повторного использования стандартных модулей. Когда одно приложение требует модуль, то он уже, как правило, загружен и находится в кэше виртуальной машины.

Наблюдается также рост производительности самих приложений. Причина — выполнение всех приложений в одном процессе, в результате чего переключение между приложениями не вызывает системного переключения контекста. Например, приложение баз данных (реализованное на 100% Java) и сервер приложений, работающие в одном процессе MVM, показали 11-процентный прирост пропускной способности обмена данными и на 36% лучшее время реакции на запросы.

Безусловно, объединяя приложения в одной виртуальной машине, необходимо обеспечить их "гальваническую развязку", то есть гарантировать неприкосновенность их адресных пространств. В MVM роль такого защитного контейнера выполняет изолятор — экземпляр специального типа Isolate. Это контейнер для приложений, позволяющий не только гарантировать частное адресное пространство, но и манипулировать приложением, мониторить его ресурсы и обеспечивать чистое завершение приложения. Класс Isolate является частью Application Isolation API Spec, выдвинутой на форуме Java Community Process (www.jcp.org/en/jsr/detail?id=121).

Что еще важно — менеджер загрузки модулей будет использовать изоляторы прозрачно для существующих приложений, так что они не потребуют модификации. Собственно, изоляция не подразумевает ограничений в плане реализации и может быть представлена как в мультипотоковой виртуальной машине, так и средствами нескольких VM.

Важное следствие из применения изоляторов — те полезные ограничения, которые налагает изоляция на взаимодействие приложений. В частности, изоляция обеспечивает взаимодействие процессов только средствами сокетов, файлов или JRI — то есть теми методами, которые могут быть легко спроектированы на кластерные архитектуры. Фактически, модульное приложение, использующее два и больше изоляторов, будет даже на одном компьютере работать так же, как если бы это было распределенное сетевое окружение.

Еще одним важным системным интерфейсом, служащим для мониторинга ресурсов, обещает стать Resource Management (RM) Interface. Этот основанный на изоляторах механизм позволяет гибко создавать и опрашивать счетчики системных ресурсов — от таких низкоуровневых, как процессорное время, до высокоуровневых, типа подключения к серверу приложений или баз данных. Как и в случае с изоляцией, менеджмент ресурсов легко спроектировать на сетевое окружение.

Новая виртуальная машина не только сможет обслуживать несколько приложений одновременно — вполне возможно также, что эти приложения будут выполняться под различными пользовательскими эккаунтами. В результате JVM приобретает свойства самостоятельной среды выполнения, обладающей средствами для выполнения множества приложений в многопользовательской среде.

Новая MVM была опробована как на мобильных терминалах, где экономия памяти является важнейшей задачей (хотя и отсутствуют жесткие конкурентные условия для приложений), так и на сервере приложений J2EE, который, как правило, и запускался в нескольких экземплярах для обеспечения развязки нескольких приложений. Оба теста показали эффективность MVM, причем без модификации основного кода — путем прозрачного использования изоляторов. Реализация MVM для J2SE остается под вопросом — эта среда не ориентирована на выполнение нескольких приложений или, по крайней мере, не в такой степени, как сервер приложений.

Все это может иметь значительные последствия для применения Java вообще. Если раньше средний пользователь характеризовал приложения Java как "медленные" и "расходующие ресурсы", то теперь эти характеристики уже не будут играть негативной роли. Особенно субъективно важным и значительно улучшенным параметром является время запуска приложения. Для администраторов должна показаться привлекательной возможность управлять многими приложениями и осуществлять аудит ресурсов из одной точки. А программисты к тому же получат выгоды от новых интерфейсов, которые еще больше приближают Java к выполнению решающей роли в мире вычислений.

Ссылки по теме:

Размещение рекламы — тел. +7 495 4119920, ICQ 232284597

Подписка на новости IT-портала CITForum.ru
(библиотека, CITKIT.ru, CitCity)

Новые публикации:

24 декабря

CITKIT.ru:

  • Новогодние поздравления
  • Сергей Кузнецов. Цикл Операционные системы: Ностальгия по будущему:

  • Алексей Федорчук. OpenSolaris 2008.11 Release

  • Сергей Голубев:

  • Евгений Чайкин aka StraNNik (Блогометки):

    17 декабря

  • С.Д.Кузнецов. Базы данных. Вводный курс

    10 декабря

    CITKIT.ru:

  • OpenSolaris 2008.11 Release

  • Альтернативные ОС: две грустные истории (С.Кузнецов)
  • Nokia N810 — доведение до ума
  • CitCity:

  • Платформа 2009: заоблачные перспективы Microsoft

    4 декабря

  • Лекция С.Д.Кузнецова Понятие модели данных. Обзор разновидностей моделей данных

    CITKIT.ru:

  • OpenSolaris 2008.11 Release. Первые впечатления

  • Linux vs FreeBSD: продолжим "Священные войны"?

  • Nokia N810 as is

  • Индульгенция для FOSS

  • Друзья СПО'2008

    26 ноября

  • Нечеткое сравнение коллекций: семантический и алгоритмический аспекты

    CitCity:

    CITKIT.ru:

  • Глава из книги А.Федорчука
    Сага о FreeBSD:
  • 19 ноября

  • Проблемы экономики производства крупных программных продуктов

  • Язык модификации данных формата XML функциональными методами

    CITKIT.ru:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:

    Заметки к книге:

  • FreeBSD: монтирование сменных устройств и механизм HAL
  • Текстовый редактор ee

    12 ноября

  • Правило пяти минут двадцать лет спустя, и как флэш-память изменяет правила (Гоц Грейф, перевод: Сергей Кузнецов)

    CITKIT.ru:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:
  • OSS в России: взгляд правоведа (В.Житомирский)

  • Новая статья из цикла С.Голубева "Железный марш":

    29 октября

  • О некоторых задачах обратной инженерии

  • Веб-сервисы и Ruby

  • Тестирование web-приложений с помощью Ruby

    CITKIT.ru:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:

  • PuppyRus Linux - беседа с разработчиком (С.Голубев)

  • Сергей Кузнецов. Заметка не про Linux

    22 октября

  • Обзор методов описания встраиваемой аппаратуры и построения инструментария кросс-разработки

    CITKIT.ru:

  • Сергей Кузнецов. Почему я равнодушен к Linux

  • Глава из книги А.Федорчука
    Сага о FreeBSD:
  • Что надо иметь
    3. Базовые познания

    CitCity:

  • Управление IT-инфраструктурой на основе продуктов Microsoft

    15 октября

  • Методы бикластеризации для анализа интернет-данных

    CitCity:

  • Разъемы на ноутбуках: что они дают и зачем их так много?
  • AMD Puma и Intel Centrino 2: кто лучше?

    CITKIT.ru:

  • Новый цикл статей С.Голубева
    Железный марш:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:

    8 октября

  • Автоматизация тестирования web-приложений, основанных на скриптовых языках
  • Опыт применения технологии Azov для тестирования библиотеки Qt3

    Обзоры журнала Computer:

  • SOA с гарантией качества
  • Пикоджоуль ватт бережет
  • ICT и всемирное развитие

    CitCity:

  • Пиррова победа корпорации Microsoft

    CITKIT.ru:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:

    Статья из архива:

  • Я живу в FreeBSD (Вадим Колонцов)

    Новые Блогометки:

  • Перекройка шаблона Blogger или N шагов к настоящему
  • Blogger. Comment style
  • Screenie или глянцевый снимок экрана

    2 октября

    CITKIT.ru:

  • Сага о FreeBSD (А. Федорчук)

    Zenwalk: пакет недели

  • Банинг — интеллектуальное развлечение (С.Голубев)

    CitCity:

    25 сентября

  • Клермонтский отчет об исследованиях в области баз данных

    CITKIT.ru:

  • Пользователям просьба не беспокоиться... (В.Попов)

  • Снова про ZFS: диск хорошо, а два лучше
  • Командная оболочка tcsh (А.Федорчук)

    Zenwalk: пакет недели

    17 сентября

  • T2C: технология автоматизированной разработки тестов базовой функциональности программных интерфейсов
  • Технология Azov автоматизации массового создания тестов работоспособности

    CITKIT.ru:

  • FreeBSD: ZFS vs UFS, и обе-две — против всех (А.Федорчук)

    Zenwalk: пакет недели

  • Дачнет — практика без теории (С.Голубев)

    10 сентября

  • За чем следить и чем управлять при работе приложений с Oracle
  • Планировщик заданий в Oracle
    (В.Пржиялковский)

    CITKIT.ru:

  • Microsoft: ответный "боян" (С.Голубев)

  • Причуды симбиоза, или снова "сделай сам" (В.Попов)

  • Файловые системы современного Linux'а: последнее тестирование
  • Zsh. Введение и обзор возможностей
    (А.Федорчук)

    Описания пакетов Zenwalk: Zsh, Thunar, Thunar-bulk-rename, Xfce4-places-plugin, Xfce4-fsguard-plugin

    Блогометки:

  • Google Chrome
  • Лончер для ASUS Eee PC 701

    3 сентября

    CITKIT.ru:

  • Заметки о ядре (А.Федорчук):

    Добавлены описания пакетов Zenwalk: Galculator, Screenshot, Gnumeric, Pidgin

    В дискуссинном клубе:

  • И еще о Википедии и Google Knol

  • Лекция для начинающего линуксоида (С.Голубев)

    26 августа

  • Транзакционная память (Пересказ: С. Кузнецов)

    CITKIT.ru:

  • Открыт новый проект Zenwalk: пакет недели

  • Статья Текстовые процессоры и их быстродействие: конец еще одной легенды?

    21 августа

    CITKIT.ru:

  • Почему школам следует использовать только свободные программы (Ричард Столлман)
  • Беседа Сергея Голубева с учителем В.В.Михайловым

  • Википедия или Гуглезнание? Приглашение к обсуждению (Алексей Федорчук)
  • Народная энциклопедия от Google (StraNNik)

  • Обзор Mandriva 2009.0 Beta 1 Thornicrofti
  • Новичок в Линукс: Оптимизируем Mandriva 2008.1

  • Книга Zenwalk. Приобщение к Linux:

    13 августа

    CitCity:

  • Мирный Atom на службе человеку. Обзор платы Intel D945GCLF с интегрированным процессором
  • Обзор процессоров Intel Atom 230 на ядре Diamondville

  • iPhone - год спустя. Скоро и в России?

    CITKIT.ru:

  • Интермедия 3.4. GRUB: установка и настройка (из книги Zenwalk. Приобщение к Linux)

    6 августа

  • СУБД с хранением данных по столбцами и по строкам: насколько они отличаются в действительности? (Пересказ: С. Кузнецов)

    CITKIT.ru:

  • Интермедия 2.2. Что неплохо знать для начала (из книги Zenwalk. Приобщение к Linux)

  • И снова про шрифты в Иксах (А.Федорчук)

  • 20 самых быстрых и простых оконных менеджеров для Linux

  • Дело о трех миллиардах (С.Голубев)

    30 июля

  • OLTP в Зазеркалье (Пересказ: С. Кузнецов)

    CitCity:

  • Будущее BI в облаках?
  • Тиражные приложения и заказная разработка. Преимущества для заказчика
  • Дискуссия со сторонниками заказной разработки

    CITKIT.ru:

  • Новые главы книги Zenwalk. Приобщение к Linux:
  • Глава 8. Пакеты: средства установки, системы управления, системы построения
  • Глава 9. Zenwalk: репозитории, пакеты, методы установки

    23 июля

    CITKIT.ru:

  • Все против всех. 64 vs 32, Intel vs AMD, tmpfs vs ext3
  • Две головы от Intel

  • Zenwalk: обзор штатных приложений (глава из книги "Zenwalk. Приобщение к Linux")

  • Нормально, Григорий...

    16 июля

    Обзоры журнала Computer:

  • Перспективы и проблемы программной инженерии в XXI веке
  • Большие хлопоты с большими объемами данных
  • Перспективы наноэлектроники

    CITKIT.ru:

  • Интермедия о лицензиях (А.Федорчук. "Zenwalk. Приобщение к Linux")

  • Есть ли будущее у KDE?

  • Linux в школе: альтернативный вариант в задачах

  • Шифр (приключения агента Никодима)

    10 июля

    CITKIT.ru:

  • Новые разделы книги А. Федорчука Zenwalk. Приобщение к Linux:
  • Интермедия вступительная. Linux или GNU/Linux? Как вас теперь называть?
  • Глава 5. Среда Xfce
  • Глава 6. Xfce: приложения и плагины

  • ZUR (Zenwalk User Repository) FAQ

    2 июля

  • Персистентность данных в объектно-ориентированных приложениях (С. Кузнецов)

    CITKIT.ru:

  • Новые разделы книги А. Федорчука Zenwalk. Приобщение к Linux:
  • Интермедия 1.2. Дорога к Zenwalk'у. Период бури и натиска
  • Интермедия 3.3. Немного о Linux'е и "железе"
  • Глава 4. Настройка: инструментами и руками
  • Интермедия 4.1. Zenpanel и конфиги: поиски корреляции

  • Интервью с Жан-Филиппом Гийоменом, создателем дистрибутива Zenwalk

  • Linux в школе: первые итоги (С. Голубев)

    25 июня

    CITKIT.ru:

  • Zenwalk. Приобщение к Linux (А. Федорчук)

  • Логика и риторика (С.Голубев)

  • Технология Tru64 AdvFS

  • Ханс Райзер предлагает отвести полицейских к телу Нины

    18 июня

  • Проекты по управлению данными в Google (Пересказ: С. Кузнецов)

    CITKIT.ru:

  • ОС и поддержка "железа": мифы и реальность (А. Федорчук)

  • Linux в школе: другие дистрибутивы

  • Пинок (С. Голубев)

    4 июня

  • Ландшафт области управления данными: аналитический обзор (С. Кузнецов)

    CITKIT.ru:

  • Linux в школе: слово заинтересованным лицам

  • SlackBuild: пакеты своими руками

  • Linux от компании Novell. Установка и обзор openSUSE Linux

    Все публикации >>>




  • IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

    Информация для рекламодателей PR-акции, размещение рекламы — тел. +7 495 4119920, ICQ 232284597 Пресс-релизы — pr@citcity.ru
    Послать комментарий
    Информация для авторов
    Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
    Copyright © 1997-2000 CIT, © 2001-2007 CIT Forum
    Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...