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

В смарт-телефонах технологии Java либо играют роль посредника между операционной системой и аппаратным обеспечением, либо работают параллельно с операционной системой на отдельной микросхеме.

Эксперты предполагают, что в ближайшие годы язык Java, который уже поддерживается многими производителями, будет все шире использоваться в мобильных устройствах. Ник Джонс, ведущий аналитик компании Gartner, уверен, что Java станет фактическим стандартом на сотовые телефоны среднего и старшего класса. Согласно его прогнозам, к 2006 году, по крайней мере, 80% мобильных телефонов будут поддерживать Java, хотя в некоторых из них могут использоваться и другие технологии, в частности, ОС Pocket PC.

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

Java внедряется в карманные устройства

Работа над карманными устройствами, рассчитанными на использование Java, началась несколько лет назад, но окончательное формирование платформы Java 2 Platform Mobile Edition (J2ME) и поддержка со стороны производителей устройств и провайдеров услуг сотовой связи, как считает Эрик Чу, менеджер группы продуктов для отраслевого маркетинга корпорации Sun Microsystems, стала главной причиной значительного роста интереса, проявляемого к этой технологии.

Степень распространенности

Корейская компания LG Telecom первой стала использовать телефоны с поддержкой Java в сентябре 2000 года. С того момента, по словам представителя Sun Мари Доминго, пользователи получили 18-20 млн. сотовых телефонов, поддерживающих Java.

В настоящее время телефоны с Java предлагают такие операторы, как Nextel в США, NTT DoCoMo в Японии и British Telecom в Англии. Бен Ванг, менеджер по развитию систем компании Sprint, уверен, что в ближайшее время 80% новых телефонов, которые продает компания, будут поддерживать Java. Одна только Nokia планирует в 2003 году выпустить 100 млн. телефонов с Java. Полтора десятка производителей сотовых телефонов либо уже продают, либо планируют выпустить на рынок модели телефонных аппаратов, ориентированных на работу с Java; всего таких моделей предложено более 50.

Сильные стороны Java-телефонов

По словам Чу, одним из основных преимуществ, которые Java сулит сотовым телефонам, является поддержка сетей коммутации пакетов, построенных на основе TCP/IP. С помощью TCP/IP проще создавать приложения, которые напрямую взаимодействуют с телефоном, а не применяют для этого промежуточную технологию — такую, например, как WAP (wireless application protocol). Кроме того, как подчеркнул Чу, Java, в отличие от WAP, поддерживает изображения и цвет, а, кроме того, среда Java обеспечивает надежную защиту, поскольку включает в себя известный механизм «песочницы», ограничивающей доступ загружаемого кода к остальной части системы.

Более того, способность Java работать с самыми разными платформами крайне важна для рынка сотовых телефонов, для которого характерна исключительная фрагментированность. Эта особенность позволяет на телефонах с Java запускать приложения и службы, написанные для других мобильных платформ, и дает производителям программного обеспечения возможность экономить время и деньги, создавая единую Java-версию приложения для работы на разных платформах. Телефоны и серверы, рассчитанные на использование Java, могут напрямую взаимодействовать друг с другом.

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

Реализация Java в карманных устройствах

Sun Microsystems

Sun вместе с группой своих партнеров разработала платформу J2ME для того, чтобы Java можно было использовать на небольших устройствах. J2ME включает в себя некоторые базовые команды Java и API, но работает на небольших устройствах, поскольку требует меньше ресурсов, чем Java 2 Platform Standard Edition (J2SE) или Enterprise Edition (J2EE), (рис. 1), и имеет только те функции, которые необходимы устройствам, где устанавливается J2ME. Например, графика и функции доступа к базе данных в J2ME более ограничены, чем в J2SE и J2EE.

J2ME, как правило, включает в себя подсоединенную ограниченную конфигурацию устройств, которая реализуется на операционных системах и служит в качестве интерфейса между ОС и Java-приложениями. CLDC обычно использует виртуальную K-машину (KVM), упрощенную, менее функциональную версию виртуальной машины Java (JVM) для небольших устройств. Так называемый профайл мобильных информационных устройств (MIDP) размещается на CLDC и предоставляет набор API, который определяет, как мобильные телефоны будут взаимодействовать с приложениями.

Другие производители

Помимо Sun решения на базе Java для карманных устройств создают и другие производители. Hewlett-Packard выпускает MicroChaiVM, версию JVM, которая, в отличие от использования решения от Sun, не требует лицензионных выплат и не предусматривает ограничения в применении. Ряд производителей, в том числе Sony Ericsson, планируют выпускать телефоны на базе MicroChaiVM.

Компания SavaJe разработала операционную систему SavaJe OS, которая поддерживает приложения Java в мобильной среде за счет оптимизации библиотек J2SE для массовых моделей процессоров мобильных устройств. Меттью Катино, один из основателей SavaJe и вице-президент по маркетингу, отметил, что приложения Java, как правило, тратят 80-90% своего времени на работу библиотек. Таким образом, как объяснил Катино, оптимизация библиотек позволит приложениям работать в 10-20 раз быстрее.

Компания Zeosoft разработала ZeoSphere Developer, который позволяет создавать мобильные приложения, поддерживающие Enterprise Java Beans — созданную корпорацией Sun архитектуру программных компонентов на базе Java. Это может упростить разработку сложных корпоративных приложений, которые взаимодействуют друг с другом и работают на серверах (с помощью J2EE), ПК (с помощью J2SE) и мобильных устройствах (с помощью J2ME).

Инструментальные средства разработки программ

Разработчики приложений могут применять уже существующие инструментальные средства для создания программ на Java для карманных устройств за счет ограничения кода своих библиотек и API, поддерживаемых J2ME. Однако, как отметил Джекоб Кристфорт, директор по технологии подразделения Oracle Mobile Division, J2ME включает в себя только ограниченное число библиотек разработки.

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

Стремясь решить эти проблемы, некоторые производители выпустили или планируют выпустить пакеты инструментальных средств или дополнения к таким пакетам, чтобы разработчикам было проще удовлетворять требования корпоративных приложений. К такого рода средствам относятся Sun Forte for Java Programming Tools, инструментальный пакет Oracle 9i Application Server Wireless и Sprint PCS Wireless Toolkit.

По мнению Джонса, из-за недостатков J2ME корпоративные приложения будут, скорее всего, создаваться на основе более ресурсоемкой среды J2SE по мере того, как мощность мобильных устройств будет расти.

Джон Монтгомери, менеджер по продуктам группы Microsoft .Net Development Group, считает, что инструментальные средства Java слишком примитивны и сложны для большинства разработчиков.

«Карманный» Java для серверов

Еще один подход, ориентированный на Java, позволяет связать карманные устройства с Java-приложениями и службами на серверах. AT&T Wireless, BEA Systems, IBM, Nokia, NTT DoCoMo, Sun и ряд других компаний создали Open Mobile Architecture на базе Java для связи сотовых телефонов и серверов. Этот проект расширяет среду J2EE, предназначенную, главным образом, для серверов, таким образом, что она поддерживает стандарты, которые мобильные устройства могут использовать для информации из Internet. К этим стандартам относятся XHTML (отображение Web-страниц на мобильных устройствах), SyncML (синхронизация данных между мобильными устройствами и другими машинами), WAP 2.0 (доступ к информационному наполнению и службам Internet) и служба мультимедийных сообщений (передача сообщений на карманные устройства).

Аппаратные и программные реализации

Технология Java может быть реализована на программном или на аппаратном уровне на любой специализированной плате-ускорителе Java или в ядре центрального процессора.

Программные реализации, как правило, менее эффективны, поскольку системы должны преобразовывать каждую команду Java во внутренние команды, которые способен выполнять центральный процессор. Автономные аппаратные микросхемы более производительны, но требуют установки дополнительных компонентов в устройство и увеличивают затраты. Ядро Java объединяет отдельные элементы обоих подходов.

Программный подход

При программном подходе центральный процессор устройства выполняет код Java. Дэвид Роджерс, менеджер по маркетингу группы Intel PCA Components Group, сообщил, что его компания разрабатывает методы ускорения программного процесса, приостанавливающегося, когда центральный процессор переключается с команды, которую он может ускорить, на команды, для которых этого сделать нельзя.

Аналитик Маркус Леви из компании Micro-Design Resources, занимающейся исследованиями отрасли полупроводниковых устройств, не согласен с этой точкой зрения. «Люди тратят много сил на совершенствование программных решений. Для кого-то такой вариант подходит, но если вы действительно хотите получить наиболее эффективную реализацию, вам нужен аппаратный подход», — считает он.

Аппаратная реализация Java

Такие компании, как ARC Cores, ARM, Aurora VLSI, Digital Communications Technologies, inSilicon и Zucotto Wireless создают аппаратное обеспечение для работы Java либо в виде сопроцессорных ядер Java для интеграции в центральный процессор, либо в виде автономных микросхем Java.

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

Микросхемы разных компаний выполняют различные подмножества команд Java. Например, процессор Jazelle компании ARM, показанный на рис. 2, выполняет около 68,2% всех возможных команд Java, а процессор DeCaf компании Aurora — 95% всех команд. Поддержка более широкого диапазона команд Java обеспечивает большую функциональность, но делает процессор дороже и предполагает более высокий уровень потребления энергии.

Рис. 2. Процессор ARM926EJ-S компании ARM включает в себя разработанную ею же технологию Jazelle, реализованную на процессорном Java-ядре ARM9EJ-S. Кроме того, процессор содержит интерфейсы ETM (embedded trace macrocell), TCM (tightly coupled memory) и AHB (advanced high-performance bus)

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

Согласно прогнозам Леви, ядра Java станут более популярны, чем автономные процессоры Java. Главное ограничение такого подхода заключается в том, что разработчики должны для создания своих продуктов использовать элементную базу, называемую «системами на плате» (system-on-chip, SoC). Размещение множества функций на микросхеме дороже обходится при разработке, но избавление от дополнительных микросхем снижает стоимость готового устройства. Автономные микросхемы Java менее дорогие в проектировании, но увеличивают стоимость устройства.

Трудности и проблемы

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

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

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

Монтгомери более категоричен: «Среда J2ME — это интересный набор инженерных компромиссов, но я бы сказал, ошибочных компромиссов. Она слишком велика для самых маленьких устройств, но слишком мала, чтобы предложить функции, необходимые для самых интеллектуальных устройств».

Производительность

Джонс считает, что мобильный вариант Java может, в некоторых случаях, работать довольно медленно, поскольку KVM не отличается особой скоростью. Однако, по его словам, в будущем KVM должна стать быстрее, в частности по мере того, как телефоны с памятью большей емкости смогут использовать JIT-компиляторы, которые увеличивают производительность (Just-in-Time — «точно вовремя»).

«Буквально через пять лет, — уверен он, — производительность перестанет быть проблемой».

Еще одна трудность, по словам Леви, заключается в отсутствии стандартов для объективного измерения производительности на разных платформах. В связи с этим Леви организовал группу по Java-процессорам в консорциуме Embedded Microprocessor Benchmark Consortium. Эта группа, как предполагается, в ближайшее время выпустит свой первый тест производительности.

Нехватка приложений

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

Увеличение числа посредников, которые могли бы сертифицировать и продавать программное обеспечение Java, предназначенное для мобильных устройств, могло бы решить эту проблему.

Карманные устройства и будущее Java

Джонс считает, что технологии Java нашли широкое применение на серверных платформах, поскольку Java-приложения можно легко переустановить в том случае, если организация приобрела новые серверы. Однако, как он отметил, на клиентах Java применяется значительно реже, поскольку многие создатели корпоративных приложений используют Visual Basic для работы в корпоративной среде, поскольку она, как правило, базируется на решениях Microsoft. Таким образом, борьба на рынке мобильных платформ имеет для Sun приоритетное значение.

Однако реализация Java-инициатив, предпринятых Sun в отношении мобильных телефонов, проходит в условиях серьезной конкуренции. С ее продуктами, в частности, соперничают разработки для беспроводных технологий корпорации Microsoft, операционная система Symbian, Linux и двоичная среда времени исполнения для беспроводных устройств (binary real-time environment for wireless — BREW), создаваемая компанией Qualcomm.

«Сейчас на этом рынке время анархии, и он пока абсолютно не консолидирован», — объяснил Джонс.

По его словам, J2ME будет привлекать внимание все большего числа разработчиков приложений по мере того, как будет расти ее функциональность и сниматься ограничения. Опрос, проведенный исследовательской компанией Evans Data, показал, что разработчики беспроводных систем, которые используют Java, планируют в 2003 году применять эту технологию более активно, чем в прошлом.

Кроме того, язык Java станет более приемлемым для смарт-телефонов по мере увеличения ресурсов этих устройств и при условии, что производители будут создавать более качественные API для цветных экранов, более высокого качества звука, надежной защиты интеллектуальной собственности и функций обнаружения местонахождения владельца. Однако, по его словам, эти дополнительные функции позволят производителям предлагать свои собственные реализации Java, что может способствовать фрагментации среды разработки приложений.

Ванг также отметил, что первоначально Java для мобильных систем будет ориентирована на игры, мультимедиа и воспроизведение различных мелодий звонков. Со временем, по его словам, Java станет фактическим стандартом для смарт-телефонов.

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

Джордж Лоутон (glawton@glawton.com) — независимый журналист, специализирующийся на проблематике информационных технологий.


George Lawton, Moving Java to Mobile Phones. IEEE Computer, June 2002. IEEE Computer Society, 2002. All rights reserved. Reprinted with permission.