http://ITWare.com.ua/publication/821/

11 февраля 2007 г

Java-несовместимость

Рецепт мобильного кофе, или секрет java-совместимости

Мобильная платформа изнутри
На пути к универсальности… и многозадачности
Java-вирусы:мелкие шалости или реальная угроза?
«Пиво» вместо «кофе»
Еще о мобильных платформах:

Попытки сделать аппаратно независимую платформу для устройств с ограниченными ресурсами компания Sun предприняла еще в 1990 году. Их

результатом стали операционная система Green OS, язык и среда программирования Oak, а также КПК, на котором две вышеупомянутые технологии тестировались, — Star 7. Sun считала, что в скором будущем рынок мобильных устройств получит бурное развитие, поэтому место на нем

стоит занять заранее. К сожалению, компания смотрела ну очень сильно вперед, потому как Star 7, так и другие схожие проекты развития

не получили. Но, как оказалось позже, средства, потраченные на создание аппаратно независимой платформы, не пропали зря. В 1994 году началось бурное развитие Интернета, и боссы Sun решили переориентировать платформу Oak под веб-среду. Поскольку имя Oak было уже зарегистрировано другой компанией, технология получила название

Java. Начиная с этого момента и вплоть до выхода Java 2 слово «Java» ассоциировалось у нас лишь со Всемирной паутиной, но никак не с портативными устройствами. Однако выпущенная в 1999 году платформа Java 2 имеет уже три версии: Java 2 Enterprise Edition (для серверов), Java 2 Standard Edition (для ПК) и Java 2 Mobile Edition (для мобильных устройств, таких как КПК, смартфоны, телефоны). Именно платформа Java 2 Mobile Edition (J2ME) и стала популярнейшим в мире решением для мобильных приложений. В Украину мобильная Java пришла в 2001 году вместе с первыми сотовыми телефонами, поддерживающими эту платформу: Siemens SL45i, Nokia 3410, Nokia 6310i. К слову, все

три модели стали хитовыми, чем должны быть благодарны скорее обилию встроенных функций, нежели поддержке Java. Но с того момента о мобильной технологии заговорили. Теперь же поддержка J2ME есть едва ли не в каждом мобильном телефоне, в чем легко убедиться, просмотрев каталог этих устройств на hiTech CD/DVD.

Мобильная платформа изнутри

Универсальность Java достигается за счет применения на клиентской стороне (например, вашем персональном компьютере) виртуальной java-машины (Java Virtual Machine, JVM), выполняющей байт-коды приложений. Не является исключением и мобильная Java, в ней также используется JVM. Не секрет и то, что для запуска java-апплетов (для мобильной Java – мидлетов) кроме виртуальной машины на стороне клиента должны присутствовать и необходимые библиотеки классов (функций) Java, с

помощью которых виртуальная машина и интерпретирует байт-коды. В обычную настольную платформу включено множество библиотек, чего нельзя позволить в мобильном устройстве из-за ограничения ресурсов при размещении java-платформы: все классы просто не смогут уместиться в памяти телефона. Чтобы решить эту проблему, разработчики решили создать несколько спецификаций, наборов классов для «типичных» мобильных устройств. Каждая спецификация должна содержать лишь те

классы, которые требуются для функционирования Java на данном типе устройств, и ни классом больше. Чтобы определить спецификации, используют два параметра: конфигурацию и профиль. Конфигурация определяет среду выполнения Java, а если конкретней – то параметры виртуальной машины и базовые классы. Существует две конфигурации: конфигурация коммуникационных устройств с ограниченными ресурсами (Connected Limited Device Configuration, CLDC) и конфигурация коммуникационных устройств (Connected Device Configuration, CDC). Первая конфигурация используется в устройствах, оснащенных 16- или 32-битными процессорами с минимальным объемом памяти около 128 Кб — мобильные телефоны, смартфоны, некоторые КПК. Вторая конфигурация J2ME, CDC, разработана для более мощных устройств, укомплектованных 32-битными микропроцессорами и оснащенных более 2 Мб памяти. Это, в основном, КПК, коммуникаторы, иногда смартфоны. Второй параметр, определяющий спецификацию, называется профилем. Профиль расширяет конфигурацию, добавляя специфичные классы к набору основных, определенных в конфигурации. Иначе говоря, профиль реализует

конфигурацию более полно для конкретного устройства. Профиль определяет пользовательский интерфейс, средства обработки событий, взаимодействие пользователя и приложения. Профилей существует много, но для мобильных телефонов используется Mobile Information Device Profile (MIDP). К слову, первыми мобильными телефонами с поддержкой этого профиля стали Motorola i80s и i50sx, выпущенные еще в 2001 году.

MIDP – не правда ли, знакомая аббревиатура? Да, именно ее при изучении

характеристик телефона пользователь видит в графе «версия Java». И именно она стала камнем преткновения на пути мобильной javaуниверсальности. В более ранних моделях использовалась версия 1.0, но распространения она не получила, и ей на смену почти сразу пришла версия 2.0. Вторая версия приобрела улучшенный пользовательский интерфейс, возможности для организации связи и более сильную систему безопасности. Именно система безопасности Java не

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

простаивать, что, конечно же, никому нена руку. Но к счастью, в Java есть механизм, позволяющий расширять набор стандартных классов за счет классов, написанных производителем. Этой возможностью и воспользовались разработчики: классы стали писать чуть ли не под каждый аппарат отдельно. Соответственно, приложения также стали писать под каждую конкретную модель. Да, с одной стороны, возможности телефона стали реализовываться полностью, приложения получаются яркими и функциональными, но с другой – появились «простыни» с аббревиатурами моделей телефонов в придачу к контенту. И читать их придется, отэтого никуда не денешься: какие приложения твой аппарат будет поддерживать, а какие – нет, при покупке телефона узнать не удастся. Но вряд ли стоит огорчаться, потому как самые популярные

приложения имеют версии, адаптированные почти для каждой модели всех

основных производителей.

На пути к универсальности… и многозадачности

Конечно же, ни пользователей, ни разработчиков существующая ситуация

особо не устраивает. Поэтому с 2005 года ведутся разработки MIDP 3.0, с появлением которого Java должна получить принципиально новые возможности и действительно стать универсальной. Однако разработка новой версии MIDP сделает мобильную платформу Java не только более универсальной, но и позволит в полной мере реализовать потенциал даже самых современных и производительных мобильных телефонов и других портативных гаджетов (об этом, в частности, можно судить из свежих спецификаций нового стандарта). Универсальность и расширение мультимедийных возможностей платформы (например, поддержка экранов с высоким разрешением или одновременно двух дисплеев мобильных телефонов) — это далеко не все преимущества, которые сулит пользователям выход в свет MIDP 3.0. Среди заявленных нововведений — возможность выполнения одновременно нескольких java-мидлетов (чем вам не претензия на многозадачность?), в том числе в фоновом режиме (в частности, приложений без пользовательского интерфейса), а также механизмы взаимодействия между отдельными мидлетами. При всем при этом в целом новая платформа должна стать более защищенной (благодаря

специальным технологиям контроля над работой запущенных приложений) и совместимой с MIDP 2.0. Мобильные телефоны становятся все более умными, стирая грань между собственно телефонами и более «интеллектуальными» аппаратами. Расширение функциональности неизбежно создало проблемы совместимости программ и различных моделей аппаратов, однако уже следующий виток эволюции мобильных платформ обещает решение и этой непростой задачи. Дата выхода MIDP 3.0 пока что не названа (судя по информации официального сайта Java Community Process, это произойдет не ранее чем через год), но, как

считают специалисты, данная спецификация позволит отправить в урну буклеты с аббревиатурами моделей и с облегчением сказать о мобильной Java: «Написано единожды — работает везде».

Java-вирусы:мелкие шалости или реальная угроза?

Стойкость к вирусам java-технология показала за годы своего активного использования на ПК —было обнаружено всего несколько javа-вредителей, да и те серьезной угрозы не несли. Примерно то же можно было сказать до недавнего времени о мобильной Java: если вирусы на смартфонах с Symbian и Windows Mobile просто процветают, то о вирусах для мобильной java-платформы не было слышно до начала 2006 года. 28 февраля на своем официальном сайте «Лаборатория Касперского» (www.kaspersky.ru) сообщила об обнаружении первой вредоносной программы для мобильных телефонов, способных исполнять java-приложения (J2ME). Потенциально заражению этой троянской программой, получившей по классификации вирусных аналитиков компании название Trojan-SMS.J2ME.RedBrowser.a, подвержены не только смартфоны, но и все телефоны, поддерживающие платформу Java (MIDP 2.0). RedBrowser.a маскируется под программу, позволяющую посещать WAP-сайты без необходимости настройки WAP-подключения. По словам авторов программы, подобная возможность реализована при помощи отправки и приема бесплатных SMS сообщений. На самом же деле троянец рассылает

SMS на некоторые платные мобильные сервисы. За каждое подобное сообщение со счета пользователя снимается $5–6. Но украинским пользова

телям пока беспокоиться не стоит. RedBrowser.a ориентирован лишь на абонентов крупнейших российских мобильных операторов – МТС, «Билайн»,

«Мегафон», и в Украину он пока не дошел. Аналогичным образом действует и другой, появившийся в середине прошлого года троянец

Trojan-SMS.J2ME.Wesber.a. Вредоносная программа отправляет сразу пять коротких сообщений на покупку дорогого мобильного контента.

К счастью, избавиться от подобной мобильной заразы не составляет большого труда — троянские программы легко деинсталлировать,

используя стандартные функции мобильного телефона.

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

«Пиво» вместо «кофе»

Javaплатформа далеко не безупречна, что, конечно же, предполагает наличие конкурентов. Самым сильным из них является платформа BREW (примечательно, что обычно это слово ассоциируется именно с пивом, но в неформальном переводе может означать различные напитки, в том числе и кофе) компании Qualcomm. Она получила широкое распространение в американских CDMA-сетях, но в скором будущем планируется нашествие

BREW и в Европу. BREW – это специализированная платформа для выполнения приложений, которая во многом напоминает виртуальную java-машину, за исключением того, что cреда BREW четко ориентирована на мобильные телефоны. Тот факт, что BREW более «остро заточена» под конкретные устройства (данная платформа также поддерживается и на аппаратном уровне), позволяет создавать яркие, насыщенные приложения. Еще одной фирменной чертой BREW является BREW Distribution System (cистема распределения BREW), которая позволяет операторам мобильной связи контролировать использование BREW-приложений в своих сетях. BDS разрешает мониторить все вопросы распространения сервисов и биллинга, что, в свою очередь, позволяет разработчикам получать причитающуюся им долю платы за загрузку приложений абонентами сети. Но прежде чем приложение станет доступным для закачки, оно должно быть сертифицировано компанией Qualcomm. И подачу приложения на

сертификацию разработчику придется оплатить. Плата за 100 «тестированных на сертификацию» приложений составляет $400. Но, к слову, для разработчиков BREW-приложений эти $400 не останутся единственными стартовыми вложениями. За необходимые для разработки

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

на украинском рынке мобильных приложений.

Еще о мобильных платформах:

Java Technology — http://java.sun.com

Java Community Process — www.jcp.org Бесплатные java-игры и программы — www.java.com

Бесплатные игры для мобильных телефонов — www.midlet-review.com

Бесплатное ПО под Java, Symbian, Palm и PocketPC — www.getjar.com

История платформы Java — http://ei.cs.vt.edu/book/chap1/java_hist.html

Qualcomm BREW — www.qualcomm.com/brew