Основополагающим принципом, фундаментом всех Java-технологий корпорации Sun, является известное «Write Once Work Anywere». Бурно вытекающие из него технологии предлагают платформу построения приложений для огромного спектра вычислительных устройств.

 

Интересным историческим фактом, возможно, окажется то, что своим появлением на свет Java обязан вовсе не глобальной сети, хотя дебют именно в этой области принес Java настоящую популярность. Прежде всего, к поиску общего подхода к управлению устройствами, совершенно разнородными и по своей сути, и по аппаратному решению подтолкнули исследования «интеллектуатизации» бытовых устройств, таких как, например, игровые приставки, устройства дистанционного управления. Проблема усложнялась также малыми объемами памяти, которыми эти устройства обладают. Видимо сложность задачи обязывала к поиску такого красивого решения, каковым является все семейство Java-технологий и сам язык программирования. Задача Sun заключается в выработке спецификаций и так называемой Reference platform, т. е. эталонного кода среды исполнения и библиотек. И сейчас на развитие именно этой ветви технологий, применяемых в миниатюрных, переносных и бытовых устройствах, корпорация тратит колоссальные средства и усилия.

 

На сегодня специфицирована платформа Java 2 Micro Edition, предоставляющая базовый инструментарий в этой области программирования.

 

Версия платформы, называемая PersonalJava (иногда Java Applet Environment), адаптирована для подключаемых к сети передачи данных и оснащенных графическим экраном потребительских устройств. Ими могут быть «интеллектуальные» сотовые телефоны, персональные цифровые секретари, телевизоры нового поколения, веб-телефоны, игровые приставки и т. п.

 

PersonalJava Application Environment (PJEA) — наиболее зрелая платформа этого семейства. Первая версия спецификации вышла в сентябре, а «эталонная реализация» — в декабре 1997 г. PersonalJava и была почти сразу благосклонно принята сообществом разработчиков.

 

В основу PJEA были заложены две идеи: во-первых, предоставление инструмента, с помощью которого на Java можно было бы разрабатывать программы, максимально переносимые между устройствами описанного типа; во-вторых, сократить потребление ресурсов памяти виртуальной машиной и системными библиотеками. Реализация первой идеи гарантирует, что встраиваемые приложения не придется создавать с нуля — можно будет собирать их из многократно используемых компонентов, на производителей которых придется основная тяжесть всей разработки. Такой подход экономит средства и время сборщиков приложений (в основном — поставщиков оборудования и конкретных решений). Осуществление второй идеи дает надежду, что устройство не окажется слишком дорогим, ведь цена памяти до сих пор существенно влияет на конечную стоимость продукта и в итоге на его конкурентоспособность.

 

Для «облегчения» системы Sun оптимизировала исходные тексты эталонной реализации и проанализировала в новом контексте полезность некоторых библиотек JDK (Java Development Kit). В результате множество стандартного инструментария разделено на подмножества, характеризующиеся важностью в данном случае. Многие методы и классы, необходимость которых на потребительских платформах сомнительна, были исключены. Однако в PersonalJava были добавлены некоторые новые компоненты, специфичные для подобных систем. В результате «оконная» библиотека Abstract Window Toolkit (AWT) была оптимизирована для работы с маленькими дисплеями; в API введена поддержка сенсорных экранов, джойстика, пультов дистанционного управления; отдельно выпущены коммерческие модули для отображения HTML (например, встраиваемый браузер Sun HotJava). В PJAE появились классы для работы с таймером и интерфейсы KeyboardInputPreferred, ActionInputPreferred, PositionalInputPreferred, NoInputPreferred, определяющие тип предпочтительного устройства ввода: клавиатура, кнопочная панель, позиционно-чувствительная панель или его отсутствие.

 

 

Появилось понятие Minimum PJAE — среда, откуда удалены все необязательные компоненты, но где должны поддерживаться все PAJE-специфические компоненты. В итоге структура API получилась довольно сложной. И Sun была вынуждена выпустить специальный инструмент JavaCheck, проверяющий соответствие создаваемого пользователем приложения требованиям спецификации PersonalJava, а также специальную среду эмуляции, позволяющую исполнять PersonalJava-приложения в тестовом режиме на ПК или рабочей станции.

 

В некоторых случаях, однако, ставка на Java оказывается неприемлемой. Так, объем кода JVM и библиотек PersonalJava все еще значителен, а сама технология тяготеет к 32-разрядной архитектуре и, стало быть, не подходит для применения на 4, 8 или 16-разрядных устройствах. Помимо этого, JVM опирается на операционную систему с возможностями управления потоками, памятью, периферийными устройствами и взаимодействия с сетями, что накладывает на операционную среду серьезные ограничения.

 

Бесспорно, что программы для PersonalJava работают медленнее написанных на «родном» для конкретной платформы языке и для нормального функционирования могут потребовать слишком большого объема RAM.

 

Для решения части описанных проблем придуманы достаточно эффективные способы. Имеются инструменты, позволяющие проанализировать эффективность использования библиотек платформы. Такие приложения либо сканируют исходный текст программ и строят список использованных классов, либо следят за исполнением кода в специальной тестовой среде. Первый (статический) метод менее точен, нежели второй (динамический), так как может пропустить классы, загружаемые в ходе исполнения Java-программы. Обычно для достижения наилучших результатов одновременно используют оба подхода.

 

Но даже при применении подобных средств разработчик может столкнуться с проблемой перерасхода памяти. Дело в том что JVM (Java Virtual Mashine) откладывает загрузку классов программы на самый последний момент. Это плохо подходит для систем с малым объемом ROM, так как при этом JVM обязана разложить класс на компоненты, проверить его целостность, связать компоненты с другими классами и преобразовать байт-код в специальный «быстрый» внутренний формат, пригодный для интерпретации. Эта технология гарантирует, что JVM не станет работать с «враждебным кодом», и обеспечивает возможность загрузки новых классов по команде из самой программы, но приводит к недопустимому для встраиваемых устройств расходованию ресурсов CPU и RAM.

 

Некоторые производители для преодоления данного недостатка предлагают специальные инструменты, условно называемые Romizers. Они генерируют из обычных Java-библиотек пригодные для размещения в ROM образы классов во внутреннем формате JVM.

 

Полученные в результате тексты транслируются «родным» компилятором и линкуются с ее системными библиотеками, образуя единый образ (image) ROM. Заметим, что при этом устраняется множество дублирующих констант, ненужных полей данных, избыточных таблиц имен классов, снижается использование стека, и т. п. Преобразованные программы, код которых JVM может исполнять напрямую из постоянной памяти, называются ROMlet. В документации (PersonalJava 1.1 Application Environment Memory Usage Technical Note) указано, что объем RAM, занятый под внутренние структуры данных JVM, при таком преобразовании может уменьшаться в 25–30 раз, а объем кода самой программы — на 30%. Кроме того, такой подход делает исполнение программы более гладким и позволяет совместно применять в одном проекте Java, С и С++. Но он приводит к «разбуханию» кода и не избавляет от JVM — она все равно нужна для сборки мусора и поддержки многопоточности. Кроме того, теряются все преимущества Java.

 

Можно ускорить работу программ и иным способом— перепроектировать устройство с применением микросхемы picoJava, предназначенной для быстрой обработки байт-кода Java. Но этот путь далеко не всегда желателен, хотя и сохраняет все преимущества Java в максимальной степени.

2004.04.14
19.03.2009
В IV квартале 2008 г. украинский рынок серверов по сравнению с аналогичным периодом прошлого года сократился в денежном выражении на 34% – до $30 млн (в ценах для конечных пользователей), а за весь календарный год – более чем на 5%, до 132 млн долл.


12.03.2009
4 марта в Киеве компания Telco провела конференцию "Инновационные телекоммуникации", посвященную новым эффективным телекоммуникационным технологиям для решения задач современного бизнеса.


05.03.2009
25 февраля в Киеве компания IBM, при информационной поддержке "1С" и Canonical, провела конференцию "Как сохранить деньги в условиях кризиса?"


26.02.2009
18-19 февраля в Киеве прошел юбилейный съезд ИТ-директоров Украины. Участниками данного мероприятия стали ИТ-директора, ИТ-менеджеры, поставщики ИТ-решений из Киева, Николаева, Днепропетровска, Чернигова и других городов Украины...


19.02.2009
10 февраля в Киеве состоялась пресс-конференция, посвященная итогам деятельности компании "DiaWest – Комп’ютерний світ" в 2008 году.


12.02.2009
С 5 февраля 2009 г. в Киеве начали работу учебные курсы по использованию услуг "электронного предприятия/ учреждения" на базе сети информационно-маркетинговых центров (ИМЦ).


04.02.2009
29 января 2009 года в редакции еженедельника "Computer World/Украина" состоялось награждение победителей акции "Оформи подписку – получи приз!".


29.01.2009
22 января в Киеве компания "МУК" и представительство компании Cisco в Украине провели семинар для партнеров "Обзор продуктов и решений Cisco Small Business"

 

 
 
Copyright © 1997-2008 ИД "Комиздат".