Читать «Создание игр для мобильных телефонов» онлайн - страница 28

Майкл Моррисон

Почему вы должны думать об этих спецификациях и API? Спецификации CLDC и MIDP очень важны, поскольку они явно определяют, какие классы и API можно использовать для создания мидлет. Мобильные устройства – это гибкие машины, не имеющие такой роскоши, как мегабайты памяти. По этой причине Sun пришлось найти способ создать базовый набор функций, выполняемых без потери производительности устройства. Решением стала разбивка конфигурации на более детализированные профили. CLDC API описывает базовые классы и интерфейсы, необходимые сетевым устройствам, в то время как MIDP API описывают интерфейсы и классы, необходимые мобильным информационным устройствам, например, сотовым телефонам. На рис. 3.1 показаны взаимосвязи между мидлетом, CLDC API и MIDP API.

Рис. 3.1. Чтобы выполнять большинство функций, мидлет должен делать вызовы CLDC API и MIDP API

Помните, что хотя CLDC API и MIDP API были тщательно подобраны с учетом необходимости компромисса между производительностью и необходимым размером памяти и ограничениями мобильных устройств, их в определенных случаях недостаточно.

Это означает, что в ряде случаев вам придется более тщательно прорабатывать мидлет игры, поскольку в вашем распоряжении нет широкого набора API, такого как в случае обычного программирования.

CDLC API

Большинство классов, включенных в CDLC API, происходят непосредственно из стандартного J2SE API. Эти классы и интерфейсы практически идентичны тем, которые вы, вероятно, использовали при обычном программировании на Java. Эта часть CLDC API находится в пакете со знакомыми из J2SE именами java.lang и java.util. Кроме классов и интерфейсов, заимствованных у J2SE, есть ряд особых классов CLDC API. Эти интерфейсы, главным образом, предназначены для работы с сетями, это касается той части J2SE API, которую практически очень сложно изменить в соответствии с потребностями сетевых устройств.

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

► набор пакетов, которые служат как подмножество J2SE API;

► набор основных сетевых интерфейсов.

Большая часть классов и интерфейсов, входящих в состав CLDC API, напрямую наследованы от J2SE API. J2ME требует, чтобы классы и интерфейсы, наследованные от J2SE, были неизменными. Это означает, что все методы и поля этих классов совпадают с методами и полями таких классов J2SE, что заметно облегчает обучение программированию в J2ME, а также делает код переносимым между J2SE и J2ME.

Но CLDC уходит в сторону от J2SE API в вопросах, касающихся работы в сети, и формирует сетевую оболочку, известную как Generic Connection Framework (GCF, Настраиваемая сетевая оболочка). GСF предназначен для определения общей архитектуры сети, поддерживающей сетевой ввод/вывод. Это весьма гибкая, а следовательно, расширяемая архитектура. Оболочка GCF разрабатывалась как функциональное подмножество сетевых классов J2SE, поэтому возможности GCF доступны в J2SE. GCF состоит из набора интерфейсов соединений, а также класса Connector, используемого для установления различных соединений. Класс Connector и интерфейсы соединений находятся в пакете javax.microedition.io. В главе 14 вы подробнее познакомитесь с программированием сетевых мобильных игр.

MIDP API

Профиль устройства выходит на первый план, когда отступает конфигурация и наступает черед более детального описания функций конкретного типа устройства. В случае Mobile Information Device Profile (MIDP) тип устройства – это беспроводное мобильное устройство, например, мобильный телефон или пейджер. Следовательно, MIDP должен взять CLDC API и надстроить необходимые классы и интерфейсы, позволяющие написание собираемых мидлетов, например, игровых.

MIDP API можно разделить на две части, подобно CLDC API:

► два класса, непосредственно наследованных от J2SE API;

► ряд пакетов, которые включают классы и интерфейсы, уникальные для разработки MIDP.

Подобно CLDC API, MIDP API также наследует от J2SE API. Неудивительно, что большая часть MIDP API – это новые классы и интерфейсы, специально разработанные для программирования мидлетов. Хотя эти классы и интерфейсы могут выполнять те же функции, что и некоторые классы и интерфейсы J2SE API, в целом они уникальны для MIDP API, а следовательно, тщательно проработаны для решения специфичных для мидлетов задач. Эта часть MIDP API разделена на несколько пакетов, каждый из которых следует за именем javax.microedition:

► javax.microedition.midlet;

► javax.microedition.lcdui;

► javax.microedition.lcdui.game;

► javax.microedition.media;

► javax.microedition.media.control;

► javax.microedition.io;

► javax.microedition.pki;

► javax.microedition.rms.

Пакет javax.microedition.midlet – это центральный пакет в MIDP API, он включает в себя единственный класс MIDlet. Класс MIDlet содержит основные функции, необходимые для MIDP-приложения (мидлета), которые могут выполняться на мобильном устройстве. По мере прочтения книги и построения более сложных мидлетов вы более подробно познакомитесь с этим классом.

Пакеты javax.microedition.lcdui и javax.microedition.lcdui.game включают классы и интерфейсы, которые поддерживают GUI-компоненты, специально предназначенные для маленьких экранов мобильных устройств. Кроме того, в этих пакетах содержатся классы и интерфейсы, специально разработанные для создания мобильных игр. Уникальные возможности, такие как, например, анимация спрайтов и управление слоями, делают эти пакеты чрезвычайно ценными для программирования мобильных игр. Чуть позже в этой главе вы начнете свое знакомство с некоторыми из этих классов и пакетов, а при дальнейшем прочтении книги будете углублять свои знания.