вівторок, 16 жовтня 2007 р.

Consumer JRE - Quickstarter

Что такое Consumer JRE?


Consumer JRE состоит из нескольких важных частей. Одна из целей это как можно быстрее реализовать необходимые функции и войти в состав одного из ближайших обновлений Java 6 SE. Также необходимо чтобы изменения не влияли на API. Например можно добавить функциональность для увеличения скорости загрузки не влияя на API или функциональность которую использует приложение. Но нельзя добавить новое API для анимации в качестве обновления текущей версии.

Основные части:

  • Quickstarter. Радикально уменьшает время загрузки для приложений и апплетов.

  • Java Kernel. Уменьшает время на установку и запуск когда у пользователя не установлен JRE.

  • Deployment toolkit. Позволяет быстро определять и инсталлировать JRE.

  • Installer improvements. Улучшения в установке.

  • Graphics performance on Microsoft Windows. Позволяет осуществлять графическую акселерацию для простых и сложных 2D объектов.

  • Nimbus look and feel. Выпуск нового кросс-платформенного look and feel.

Quickstarter

Quickstarter будет наверное самой популярной частью этого набора, позволяя запускать любое Джава приложение или апплет значительно быстрее. Запуск первого апплета в браузере может занимать несколько секунд, что является одной из основных задержек в дальнейшем развитии и использовании апплетов.

Существует две возможности запуска Джава приложения: горячий и холодный старт. Горячий старт это время которое занимает запуск Джава приложения когда вы недавно его запускали на вашей системе и остались кэшированные данные. Холодный старт, с другой стороны, соответствует времени затраченному для первого запуска Джава приложения после перезагрузки системы.

Время горячей загрузки вполне нормальное в наши дни благодаря большому объему работы по улучшению производительности. Загрузка обычного приложения или апплета займет одну или две секунды, время близкое к времени загрузки стандартных веб страничек и вполне допустимое для пользователя.

Холодный старт с другой стороны занимает неоправданно большое количество времени. Необычно видеть когда загрузка апплета занимает от 5 до 10 секунд (иногда даже больше). Такая задержка может быть допустима для больших десктопных приложений, таких как IDE которые работают целый день и включаются только утром. Такое время загрузки для апплетов недопустимо и ограничивает их жизнеспособность как легковесного пользовательского контента.

Проблема находится на уровне ОС. Но это не такая уж и сложная проблема, это показатель того что платформа Джава столкнулась с базовыми физическими ограничениями на уроне ОС и железа. Файлы которые составляют полную Джава платформу большие по размеру. Например, в недавней версии Java 6 SE файл rt.jar занимает более 40 МБ. Если к этому еще добавить различные jar, нативные библиотеки, файлы ресурсов которые загружаются вне зависимости от кода приложения, то получается большой объем данных которые необходимо считать.

На уровне ОС это означает что все эти мегабайты или даже десятки мегабайт – необходимо считать с диска, что как известно очень медленная операция. Чтобы быть более точным то время поиска на диске наиболее емкое. Чтение больших файлов последовательно относительно быстрее, но поиск необходимых битов нет. Так что даже если платформе необходим только небольшой фрагмент данных в этих больших файлах для каждого приложения, этот поиск внутри файлов создает значительную дисковую активность. Неудивительно что это занимает так много времени для запуска Джава приложений т.к. платформа зависит от скорости таких медленных операций с которых необходимо начинать работу.

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

Исправление заключается в том чтобы использовать преимущества дискового кэша для того чтобы страницы памяти на диске которые платформа должна считать при загрузке уже были загружены ранее. За счет чего это может быть получено? Платформа не может магически предварительно загружать страницы прямо перед запуском. К сожаления, Виртуальная машина Джава в данный момент не имеет возможности «смотреть» в будущее чтобы определять когда пользователь будет запускать джава приложение. Но предварительную загрузку платформа может проводить немного ранее, например при загрузке Виндовз или во время авторизации. Все страницы могут оставаться горячими в дисковом кэше пока позволяет состояние памяти.

Следует заметить что такой подход не тоже самое что загрузка полной Джава машины. Такой подход будет решать некоторые проблемы но в мене эффективной манере, закрывая память в менее дружелюбный к ОС способ. Подход Quickstarter будет работать с дисковым кэшем сам по себе, позволяя ОС использовать системную память и дисковый кэш как ей удобно.

Оригинал http://java.sun.com/developer/technicalArticles/javase/consumerjre/

Немає коментарів: