Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Программирование мобильных телефонов на Java 2 Micro Edition

Покупка
Артикул: 615901.01.99
Вы держите в руках второе и переработанное издание одной из популярных книг о программировании мобильных телефонов на Java 2 ME. Первое издание книги продавалось огромными тиражами по всему постсоветскому пространству. Автор книги создал уникальное издание, обучившее огромное количество начинающих программистов делать приложения для мобильных телефонов. Спустя три года после выхода первого издания, по многочисленным заявкам читателей была создана новая и переработанная версия книги. Книга содержит девять новых глав. Часть старого материала первого издания была переработана в соответствии с веяниями времени. Теперь читатель кроме программирования приложений для платформы Java 2 ME, изучит полный процесс создания мобильной игры. В течение книги будет освещен подход в формировании полноценного мобильного игрового движка, освоена работа с графикой, показаны примеры многослойных и анимированных игровых карт. Будут рассмотрены основы искусственного интеллекта, игровые столкновения, создание интерактивного меню игры, подсчет очков и жизненной энергии главного героя, сохранение данных в памяти, работа со звуком и многое другое. Итогом книги станет создание полноценной мобильной игры и знакомство с разработкой пользовательских программ на Java 2 ME. Компакт-диск содержит средства разработки мобильных приложений NetBeans и J2ME Wireless Toolkit, а также большой набор телефонных эмуляторов от компаний Nokia, BenQ-Siemens, Sony Ericsson, Motorola и Samsung.
Горнаков, С. Г. Программирование мобильных телефонов на Java 2 Micro Edition [Электронный ресурс] / С. Г. Горнаков. - 2-е изд. - Москва : ДМК Пресс, 2008. - 512 с.: ил. - ISBN 5-94074-409-5. - Текст : электронный. - URL: https://znanium.com/catalog/product/407112 (дата обращения: 26.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Горнаков С. Г.

ПРОГРАММИРОВАНИЕ

МОБИЛЬНЫХ ТЕЛЕФОНОВ
НА JAVA 2 MICRO EDITION

Москва

УДК 004.438
ББК 32.973.26018.2

Горнаков С. Г.

Г26
Программирование мобильных телефонов на Java 2 Micro Edition.  – М.:
ДМК Пресс. – 512 с.: ил.

ISBN  5940744095

Вы держите в руках второе и переработанное издание одной из популярных

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

Книга содержит девять новых глав. Часть старого материала первого издания

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

Компактдиск содержит средства разработки мобильных приложений NetBeans

и J2ME Wireless Toolkit, а также большой набор телефонных эмуляторов от компаний Nokia, BenQSiemens, Sony Ericsson, Motorola и Samsung.

УДК 004.438
ББК 32.973.26018.2

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой

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

Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность

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

© Горнаков С. Г.

ISBN 5940744095
© Оформление, ДМК Пресс

Содержание

Предисловие....................................................................... 13
Что вы должны знать .................................................................. 14
Какое программное обеспечение используется......................... 14
О чем эта книга........................................................................... 14
Содержание компактдиска ....................................................... 14
Благодарности ........................................................................... 15
Об авторе ................................................................................... 15

Часть I. Введение в Java 2 Micro Edition ............................... 16

Глава 1. Основы языка программирования Java ............... 17
1.1. Введение в программирование ........................................... 17
1.2. Объектноориентированное программирование ................ 18
1.2.1. Классы ........................................................................ 19
1.2.2. Методы ....................................................................... 20
1.3. Синтаксис и семантика языка Java 2 МЕ .............................. 20
1.3.1. Комментарии.............................................................. 22
1.3.2. Типы данных Java ....................................................... 22
1.3.3. Операторы.................................................................. 24
1.3.4. Метод main ................................................................. 27
1.3.5. Закрытые и открытые члены классов .......................... 28
1.4. Конструктор ......................................................................... 28
1.5. Объекты классов.................................................................. 29
1.6. Условные операторы ........................................................... 33
1.7. Управляющий оператор ....................................................... 34
1.8. Циклы .................................................................................. 35
1.8.1. Оператор while............................................................ 36
1.8.2. Цикл do/while .............................................................. 37
1.8.3. Цикл for....................................................................... 38
1.9. Массивы .............................................................................. 39
1.10. Наследование .................................................................... 40
1.10.1. Конструктор суперкласса........................................ 43
1.11. Интерфейсы....................................................................... 45
1.12. Пакеты ............................................................................... 46

Содержание
Содержание
Содержание
Содержание
Содержание

Глава 2. Платформа Java 2 Micro Edition .............................. 48
2.1. Конфигурация CDC .............................................................. 50
2.2. Конфигурация CLDC ............................................................ 50
2.2.1. Свойства языка Java ................................................... 52
2.2.2. Виртуальная машина .................................................. 52
2.3. Профиль .............................................................................. 52
2.4. Профиль MIDP 2.0 и конфигурация CLDC 1.1 ....................... 54
2.4.1. Пакет java.lang ............................................................. 55
2.4.2. Пакет java.util .............................................................. 57
2.4.3. Пакет java.io ................................................................ 58
2.4.4. Пакет javax.microedition.io .......................................... 59
2.4.5. Пакет javax.microedition.lcdui ...................................... 60
2.4.6. Пакет javax.microedition.lcdui.game............................. 62
2.4.7. Пакет javax.microedition.media .................................... 62
2.4.8. Пакет javax.microedition.media.control ........................ 63
2.4.9. Пакет javax.microedition.midlet .................................... 64
2.4.10. Пакет javax.microedition.pki ....................................... 64
2.4.11. Пакет javax.microedition.rms...................................... 64

Глава 3. Инструментальные средства разработки
мобильных приложений ........................................................... 67
3.1. Установка Java 2 SDK SE ...................................................... 67
3.2. Инструментарий J2ME Wireless Toolkit ................................. 71
3.2.1. Установка J2ME Wireless Toolkit .................................. 72
3.2.2. Знакомимся с J2ME Wireless Toolkit ............................ 74
3.2.3. Создание проекта в J2ME Wireless Toolkit ................... 75
3.2.4. Компиляция и запуск программы в J2ME
Wireless Toolkit ..................................................................... 77
3.2.5. Упаковка программ..................................................... 79
3.3. Инструментарий NetBeans IDE ............................................. 81
3.3.1. Установка NetBeans IDE .............................................. 82
3.3.2. Установка Mobility Pack ............................................... 85
3.3.3. Создание проекта....................................................... 85
3.3.4. Компиляция и упаковка проекта ................................. 90
3.3.5. Добавление в проект новых эмуляторов..................... 91

Глава 4. Телефонные эмуляторы ........................................... 94
4.1. Motorola ............................................................................... 95
4.2. Nokia .................................................................................... 97
4.2.1. Сайт компании Nokia .................................................. 98
4.2.2. Carbide.j...................................................................... 99

Содержание
Содержание
Содержание
Содержание
Содержание

4.3. BenQSiemens .................................................................... 101
4.4. Sony Ericsson ..................................................................... 104
4.5. Samsung ............................................................................ 104
4.6. Интеграция эмуляторов в NetBeans IDE ............................. 105

Часть II. Разработка программ ............................................. 112

Глава 5. Механизм работы приложений ......................... 113
5.1. Мидлет .............................................................................. 113
5.1.1. Модель работы мидлета ........................................... 119
5.2. Пользовательский интерфейс ........................................... 120
5.3. Переход с экрана на экран ................................................. 122
5.4. Навигация .......................................................................... 128

Глава 6. Классы пользовательского интерфейса ............ 134
6.1. Класс Form ......................................................................... 134
6.1.1. Методы класса Form ................................................. 135
6.2. Класс Item .......................................................................... 137
6.2.1. Класс ChoiceGroup ................................................... 138
6.2.2. Класс DateField ......................................................... 145
6.2.3. Класс TextField .......................................................... 148
6.2.4. Класс StringItem ........................................................ 151
6.2.5. Класс Spacer............................................................. 156
6.2.6. Класс ImageItem ....................................................... 158
6.2.7. Класс Gauge ............................................................. 162
6.3. Класс Alert.......................................................................... 165
6.3.1. Методы класса Alert .................................................. 166
6.4. Класс List ........................................................................... 169
6.4.1. Методы класса List.................................................... 170
6.5. Класс Ticker ....................................................................... 175
6.5.1. Методы класса Ticker................................................ 176
6.6. Класс Image ....................................................................... 178
6.6.1. Методы класса Image ............................................... 179
6.7. Класс Font .......................................................................... 181

Глава 7. Программирование графики ................................ 187
7.1. Класс Canvas ..................................................................... 187
7.1.1. Методы класса Canvas .............................................. 188
7.2. Класс Graphics ................................................................... 189
7.2.1. Методы класса Graphics ........................................... 189
7.3. Рисование линий ............................................................... 191
7.4. Рисование прямоугольников ............................................. 195

Содержание
Содержание
Содержание
Содержание
Содержание

7.5. Рисование дуг .................................................................... 198
7.6. Вывод текста ..................................................................... 201
7.7. Механизм создания игрового цикла .................................. 203
7.8. Перемещение квадрата ..................................................... 204
7.9. Циклическое передвижение объекта по экрану ................. 208
7.10. Столкновение .................................................................. 211
7.11. Перемещение объекта с помощью клавиш ...................... 215

Часть III. Пишем свою первую игру ..................................... 220

Глава 8. Игровые классы.................................................. 221
8.1. Класс GameCanvas............................................................. 222
8.2. Класс Layer ........................................................................ 223
8.3. Класс TiledLayer ................................................................. 224
8.4. Класс LayerManager ........................................................... 225
8.5. Класс Sprite........................................................................ 226
8.6. Создание фонового изображения ..................................... 228
8.7. Обработка событий с клавиш телефона............................. 233
8.8. Анимация в игровом процессе .......................................... 239
8.9. Столкновение объектов ..................................................... 244
8.10. Игра «Метеоритный дождь» ............................................. 252
8.10.1. Идея игры............................................................. 253
8.10.2. Графика ............................................................... 253
8.10.3. Исходные коды ..................................................... 254

Глава 9. Формируем каркас игры ........................................ 255
9.1. Механизм работы мобильных игр ...................................... 255
9.1.1. Вход в игру ............................................................... 256
9.1.2. Инициализация игры ................................................ 256
9.1.3. Игровой цикл............................................................ 256
9.1.4. Обработка ввода пользователя ................................ 257
9.1.5. Игровая логика ......................................................... 257
9.1.6. Синхронизация времени .......................................... 258
9.1.7. Вывод графики на экран........................................... 258
9.1.8. Пауза в игре ............................................................. 258
9.1.9. Выход из игры .......................................................... 258
9.2. Как работают шаблоны ...................................................... 258
9.2.1. Запуск игры и информационная заставка ................ 259
9.2.2. Вступительный ролик ............................................... 259
9.2.3. Меню ........................................................................ 259
9.2.4. Загрузка и запуск игры ............................................. 260

Содержание
Содержание
Содержание
Содержание
Содержание

9.3. Структура классов игры «Метеоритный дождь» ................. 260
9.4. Как устроен каркас игровых классов? ................................ 261
9.5. Класс GameMidlet .............................................................. 262
9.6. Класс Splash ...................................................................... 267
9.7. Класс Loading ..................................................................... 271
9.8. Класс MainGameCanvas ..................................................... 275
9.8.1. Глобальные переменные .......................................... 278
9.8.2. Конструктор класса MainGameCanvas ...................... 279
9.8.3. Метод createGame() ................................................. 280
9.8.4. Установка объектов и обновление состояния игры .. 281
9.8.5. Выводим графику на экран телефона....................... 282
9.8.6. Обработка клавиш выбора ....................................... 283
9.8.7. Игровой цикл............................................................ 285

Глава 10. Добавляем в игру меню ....................................... 293
10.1. Идея реализации игрового меню ..................................... 293
10.2. Класс Menu ...................................................................... 294
10.3. Планируем запуск меню................................................... 303

Глава 11. Создание игровых карт ........................................ 307
11.1. Игровая карта .................................................................. 307
11.1.1. Техника компоновки карт ...................................... 307
11.2. Многослойные карты ....................................................... 309
11.3. Инструменты создания игровых карт ............................... 309
11.3.1. Создаем карту....................................................... 310
11.4. Класс Background ............................................................ 313
11.5. Загружаем в игру карту .................................................... 316
11.6. Работа с памятью телефона ............................................. 323
11.6.1. Запись данных в память ........................................ 324
11.6.2. Чтение данных ...................................................... 325

Глава 12. Создание и перемещение корабля
 по экрану .......................................................................... 327
12.1. Класс Sprite ...................................................................... 327
12.1.1. Конструкторы класса Sprite ................................... 328
12.1.2. Методы класса Sprite ............................................ 329
12.1.3. Константы класса Sprite ........................................ 329
12.2. Класс Ship ........................................................................ 329
12.2.1. Создаем корабль .................................................. 330
12.2.2. Исходный код класса Ship.java .............................. 331
12.2.3. Создание объекта класса Ship .............................. 338

Содержание
Содержание
Содержание
Содержание
Содержание

12.3. Проект Demo .................................................................... 345
12.3.1. Класс Background.java........................................... 346
12.3.2. Класс Ship.java ...................................................... 348
12.3.3. Класс MainGameCanvas.java.................................. 350
12.3.4. Класс GameMidlet.java ........................................... 354

Глава 13. Основы искусственного интеллекта ................. 357
13.1. Структура классов в демонстрационных примерах.......... 358
13.1.1. Класс GameMidlet .................................................. 358
13.1.2. Класс Splash.......................................................... 360
13.1.3. Класс Loading ........................................................ 361
13.1.4. Класс Background ................................................. 362
13.1.5. Класс Ship ............................................................. 365
13.1.6. Класс Boll .............................................................. 365
13.1.7. Класс MainGameCanvas......................................... 366
13.2. Движение в заданном направлении ................................. 370
13.3. Движение объекта за целью ............................................ 371
13.4. Движение объекта от цели ............................................... 372
13.5. Движение в случайном направлении ............................... 374
13.6. Шаблоны.......................................................................... 377
13.7. Шаблоны с обработкой событий...................................... 380
13.8. Модель простой системы смены состояний .................... 382
13.9. Распределенная логика смены состояний объекта .......... 385

Глава 14. Движение спрайтов в пространстве ................. 389
14.1. Метеориты ....................................................................... 389
14.1.1. Класс Meteorite ..................................................... 390
14.1.2. Движение метеоритов .......................................... 391
14.2. Реализуем стрельбу корабля ........................................... 394
14.2.1. Класс Shot ............................................................. 395
14.2.2. Класс Ship ............................................................. 395
14.2.3. Движение пуль ...................................................... 397

Глава 15. Игровые столкновения ......................................... 406
15.1. Пишем код для обработки игровых столкновений ........... 406
15.1.1. Столкновения корабля с метеоритом.................... 407
15.1.2. Столкновение пуль и метеоритов .......................... 408
15.2. Рисуем на экране взрывы ................................................ 409
15.3. Добавляем в игру подсчет набранных очков .................... 412
15.4. Механизм подсчета жизненной энергии корабля ............ 413
15.5. Графическое представление жизненной энергии
корабля на экране телефона .................................................... 415

Содержание
Содержание
Содержание
Содержание
Содержание

Глава 16. Звуковые эффекты ............................................... 427
16.1. Пакет javax.microedition.media.......................................... 428
16.1.1. Интерфейс Control ................................................ 428
16.1.2. Интерфейс Controllable ......................................... 428
16.1.3 Интерфейс Player ................................................... 428
16.1.4. Интерфейс PlayerListener ...................................... 429
16.1.5. Класс Manager ...................................................... 430
16.2. Пакет javax.microedition.media.control ............................... 430
16.2.1. Интерфейс ToneControl ......................................... 430
16.2.2. Интерфейс VolumeControl ..................................... 431
16.3. Воспроизведение звуковых файлов................................. 431
16.4. Воспроизведение тональных звуков ................................ 432
16.5. Добавляем звук в игру ..................................................... 438

Приложение 1. Обзор компактдиска ................................. 444

Приложение 2. Справочник по Java 2 Micro Edition ......... 445
2.1. Пакет java.lang .................................................................... 445
2.1.1. Интерфейс Runnable................................................. 445
2.1.2. Класс Boolean ........................................................... 445
2.1.3. Класс Byte................................................................. 446
2.1.4. Класс Character......................................................... 446
2.1.5. Класс Class ............................................................... 447
2.1.6. Класс Integer ............................................................. 447
2.1.7. Класс Long ................................................................ 448
2.1.8. Класс Math ................................................................ 449
2.1.9. Класс Object ............................................................. 449
2.1.10. Класс Runtime ......................................................... 450
2.1.11. Класс Short ............................................................. 450
2.1.12. Класс String ............................................................ 451
2.1.13. Класс StringBuffer ................................................... 453
2.1.14. Класс System .......................................................... 454
2.1.15. Класс Thread ........................................................... 457
2.1.16. Класс Throwable ...................................................... 455
2.1.17. Исключения ............................................................ 457
2.1.18. Ошибки ................................................................... 456
2.2. Пакет java.util ...................................................................... 457
2.2.1. Интерфейс Enumeration ............................................ 457
2.2.2. Класс Calendar .......................................................... 457
2.2.3. Класс Date ................................................................ 458
2.2.4. Класс Hashtable ........................................................ 458

10
10
10
10
Содержание
Содержание
Содержание
Содержание
Содержание

2.2.5. Класс Random ........................................................... 459
2.2.6. Класс Stack ............................................................... 460
2.2.7. Класс Timer ............................................................... 460
2.2.8. Класс TimerTask ........................................................ 461
2.2.9. Класс TimeZone ........................................................ 461
2.2.10. Класс Vector ............................................................ 461
2.2.11. Исключения ............................................................ 463
2.3. Пакет java.io........................................................................ 463
2.3.1. Интерфейс DataInput ................................................ 463
2.3.2. Интерфейс DataOutput .............................................. 463
2.3.3. Класс ByteArrayInputStream ...................................... 464
2.3.4. Класс ByteArrayOutputStream .................................... 465
2.3.5. Класс DataInputStream .............................................. 465
2.3.6. Класс DataOutputStream............................................ 466
2.3.7. Класс InputStream ..................................................... 467
2.3.8. Класс InputStreamReader .......................................... 468
2.3.9. Класс OutputStream .................................................. 468
2.3.10. Класс OutputStreamWriter ........................................ 468
2.3.11. Класс PrintStream .................................................... 469
2.3.12. Класс Reader........................................................... 470
2.3.13. Класс Writer ............................................................. 470
2.3.14. Исключения ............................................................ 471
2.4. Пакет javax.microedition.io .................................................. 471
2.4.1. Интерфейс CommConnection.................................... 471
2.4.2. Интерфейс Connection.............................................. 471
2.4.3. Интерфейс ContentConnection.................................. 471
2.4.4. Интерфейс Datagram ................................................ 472
2.4.5. Интерфейс DatagramConnection ............................... 472
2.4.6. Интерфейс HttpConnection ....................................... 472
2.4.7. Интерфейс HttpsConnection...................................... 474
2.4.8. Интерфейс InputConnection ...................................... 474
2.4.9. Интерфейс OutputConnection.................................... 474
2.4.10. Интерфейс SecureConnection ................................. 474
2.4.11. Интерфейс SecurityInfo ........................................... 474
2.4.12. Интерфейс ServerSocketConnection........................ 475
2.4.13. Интерфейс SocketConnection ................................. 475
2.4.14. Интерфейс StreamConnection ................................. 475
2.4.15. Интерфейс StreamConnectionNotifier ...................... 475
2.4.16. Интерфейс UDPDatagramConnection ...................... 475
2.4.17. Класс Connector...................................................... 476

11
11
11
11
Содержание
Содержание
Содержание
Содержание
Содержание

2.4.18. Класс PushRegistry.................................................. 476
2.4.19. Исключение ............................................................ 476
2.5. Пакет javax.microedition.lcdui.............................................. 477
2.5.1. Интерфейс Choice .................................................... 477
2.5.2. Интерфейс CommandListener ................................... 478
2.5.3. Интерфейс ItemCommandListener ............................. 478
2.5.4. Интерфейс ItemStateListener .................................... 478
2.5.5. Класс Alert ................................................................ 478
2.5.6. Класс AlertType ......................................................... 479
2.5.7. Класс Canvas ............................................................ 479
2.5.8. Класс ChoiceGroup.................................................... 481
2.5.9. Класс Command ........................................................ 482
2.5.10. Класс CustomItem ................................................... 482
2.5.11. Класс DateField ....................................................... 484
2.5.12. Класс Display........................................................... 484
2.5.13. Класс Displayable .................................................... 485
2.5.14. Класс Font ............................................................... 486
2.5.15. Класс Form.............................................................. 487
2.5.16. Класс Gauge............................................................ 487
2.5.17. Класс Graphics ........................................................ 488
2.5.18. Класс Image ............................................................ 490
2.5.19. Класс ImageItem...................................................... 491
2.5.20. Класс Item ............................................................... 491
2.5.21. Класс List ................................................................ 493
2.5.22. Класс Screen ........................................................... 494
2.5.23. Класс Spacer ........................................................... 494
2.5.24. Класс StringItem ...................................................... 494
2.5.25. Класс TextBox .......................................................... 495
2.5.26. Класс TextField ........................................................ 495
2.5.27. Класс Ticker ............................................................ 497
2.6. Пакет javax.microedition.lcdui.game .................................... 497
2.6.1. Класс GameCanvas ................................................... 497
2.6.2. Класс Layer ............................................................... 498
2.6.3. Класс LayerManager .................................................. 498
2.6.4. Класс Sprite .............................................................. 498
2.6.5. Класс TiledLayer ........................................................ 499
2.7. Пакет javax.microedition.media............................................ 500
2.7.1. Интерфейс Control .................................................... 500
2.7.2. Интерфейс Controllable ............................................. 500
2.7.3. Интерфейс Player ..................................................... 501

12
12
12
12
Содержание
Содержание
Содержание
Содержание
Содержание

2.7.4. Интерфейс PlayerListener ......................................... 501
2.7.5. Класс Manager .......................................................... 502
2.7.6. Исключения .............................................................. 502
2.8. Пакет javax.microedition.media.control................................. 502
2.8.1. Интерфейс ToneControl ............................................ 502
2.8.2. Интерфейс VolumeControl ......................................... 503
2.9. Пакет javax.microedition.midlet............................................ 503
2.9.1. Класс MIDlet.............................................................. 503
2.9.2. Исключение .............................................................. 504
2.10. Пакет javax.microedition.pki .............................................. 504
2.10.1. Интерфейс Certificate.............................................. 504
2.10.2. Исключение ............................................................ 504
2.11. Пакет javax.microedition.rms ............................................. 504
2.11.1. Интерфейс RecordComparator ................................ 504
2.11.2. Интерфейс RecordEnumeration ............................... 505
2.11.3. Интерфейс RecordFilter........................................... 505
2.11.4. Интерфейс RecordListener ...................................... 505
2.11.5. Класс RecordStore................................................... 506

Алфавитный указатель ........................................................... 508

Предисловие

Кто бы мог подумать пятьшесть лет назад, что с помощью мобильного телефона
можно будет делать фотографии, играть в игры, смотреть видео, слушать музыку,
получать электронную почту, просматривать интернетстраницы, читать книги,
создавать и редактировать документы Word и Excel…
Сейчас мобильный телефон – это нечто большее, чем просто телефон. Может
быть, мы этого еще и не осознали, но телефон постепенно превращается в мобильный персональный компьютер, небольшого размера, но с огромными возможностями. Телефон становится все больше и больше коммуникационным центром,
в котором сосредоточено множество функций персонального компьютера, и при
этом телефон легко вмещается в карман!
Что послужило такому развитию мобильной индустрии? По всей видимости,
в этом есть большие заслуги платформы Java 2 ME, поскольку загрузка дополнительных программ на телефон автоматически расширяет его возможности. Производители телефонов не в силах предусмотреть, создать или установить все необходимые пользователю программы. Поэтому мобильные устройства с возможностью
установки дополнительных программ всегда будут пользоваться наибольшим
спросом у покупателей.
По некоторым данным, среднестатистический покупатель меняет свой телефон раз в полгода или год и стремится приобрести телефон выше классом. Телефоны с поддержкой платформы Java 2 ME дают возможность пользователю устанавливать мобильные Javaпрограммы и игры, улучшая тем самым потенциал
самого телефона. Сейчас на рынке более 98% телефонов поддерживают платформу Java 2 ME MIDP 2.0, и даже корпорация Microsoft в операционной системе
Windows Mobile 5.0 реализовала полноценную поддержку Java 2 ME (CLDC 1.1/
MIDP 2.0), чего не было ранее.
Стремительное развитие технологий мобильных устройств обязано подразумевать определенный эталон в данном направлении. Немалое количество сторонних разработчиков при строгой стандартизации заинтересованы в развитии рынка программного обеспечения телефонов. Поэтому рынок мобильных устройств
по своим масштабам считается наиболее перспективным, а платформа Java 2 МЕ
является стандартом в создании программ для телефонов.
Язык программирования Java 2 ME сам по себе не сложен, а обилие готовых
библиотек позволяет писать Javaприложения за короткий промежуток времени.
И что самое главное, наборы инструментальных средств программирования, поставляемые компанией Sun Microsystems и производителями телефонов, абсолютно
бесплатны! Множество энтузиастов со всего мира в кратчайшие сроки создают как
платные, так и бесплатные программы и игры на Java 2 ME. Задача этой книги –

14
14
14
14
Предисловие
Предисловие
Предисловие
Предисловие
Предисловие

дать исчерпывающую информацию по созданию программ и игр для мобильных
телефонов с поддержкой платформы Java 2 ME.
Что вы должны знать

Если вы новичок в программировании и не знакомы ни с одним языком программирования, то в первой главе содержится полная информация непосредственно по языку программирования Java. Изучив эту главу, вы сможете приступить к прочтению книги. Те читатели, которые уже знакомы с основами Java,
могут сразу приступать к прочтению второй главы.
Все главы книги написаны в доступной форме и рассчитаны на широкий круг
читателей. Множество примеров с подробными комментариями призваны улучшить понимание общей концепции платформы Java 2 ME.
Какое программное обеспечение
используется

Вся работа по созданию программ для мобильных телефонов происходит на
компьютере, и наличие мобильного телефона совсем не требуется. В качестве операционной системы используется Windows. Большинство программного обеспечения, находящегося на компактдиске, ориентировано именно на эту операционную систему.
Компактдиск, идущий в комплекте с этой книгой, имеет просто потрясающий набор инструментальных средств для создания приложений на Java 2 ME.
На компактдиске вы найдете две бесплатные интегрированные среды программирования от компании Sun Microsystems, а также множество бесплатных инструментальных средств от таких известных компаний производителей телефонов,
как BenQSiemens, Nokia, Sony Ericsson, Motorola и Samsung.
О чем эта книга

Цель этой книги – научить вас создавать программы и игры на Java 2 ME
MIDP 2.0. Книга предназначена как для самостоятельного изучения языка Java,
так и для создания программ и игр для мобильных телефонов. Подробно рассматриваются все имеющиеся пакеты библиотек Java 2 ME, разбираются классы, методы и интерфейсы, раскрывается механизм работы программ на Java 2 ME. Прочтение всей книги лучше осуществлять в хронологическом порядке, главу за
главой. В приложении 2 содержится справочник, дающий исчерпывающую информацию по всем интерфейсам, классам, методам и константам платформы Java 2
Micro Edition.
Содержание компактдиска

Компактдиск содержит исходные коды программ и игр из книги. Кроме этого,
представлены две бесплатные среды программирования приложений для мобильных

15
15
15
15
Об авторе
Об авторе
Об авторе
Об авторе
Об авторе

телефонов компании Sun Microsystems, а также большое количество телефонных
эмуляторов от компаний Nokia, BenQSiemens, Sony Ericsson, Motorola, Samsung.
Благодарности

Прежде всего хочется поблагодарить свою жену Светлану за помощь при создании рисунков к этой книге, игре и обложке. Спасибо, дорогая, без тебя было бы
сложно все это нарисовать! За сборку компактдиска необходимо поблагодарить генерального директора издательства «ДМКПресс» Дмитрия Алексеевича Мовчана.
Об авторе

Горнаков Станислав Геннадьевич – профессиональный программист в области создания мобильных и компьютерных игр. Автор книг: «Symbian OS. Программирование мобильных телефонов на С++», «Программирование мобильных
телефонов на Java 2 ME», «Самоучитель работы на КПК, коммуникаторе и смартфоне под управлением Windows Mobile», «Инструментальные средства программирования и отладки шейдеров в DirectX и OpenGL», «DirectX 9. Уроки программирования на С++», «Разработка компьютерных игр под Windows
в XNA Game Studio Express» и «Разработка компьютерных  игр для приставки Xbox
360 в XNA Game Studio Express».
Посетите интернетстраницу автора книги по адресу: www.gornakov.ru

Часть I
ВВЕДЕНИЕ В JAVA 2 MICRO EDITION

Глава 1. Основы языка программирования Java
Глава 2. Платформа Java 2 ME
Глава 3. Инструментальные средства разработки
мобильных приложений
Глава 4. Телефонные эмуляторы

Глава 1. Основы языка
программирования Java

Эта обзорная глава не претендует на роль полного руководства по языку программирования Java (Ява), но данного материала вам будет вполне достаточно для
дальнейшего изучения книги. Предлагаемая в этом разделе информация к рассмотрению содержит основы языка Java и ориентирована на неподготовленного
читателя. Я уверен, что после изучения этой главы вы сможете писать и читать
исходные коды, встречающиеся в книге. Но нужно иметь в виду, что обучение
языку Java будет происходить в соответствии с контекстом книги, а именно всей
той части языка, которая необходима для программирования мобильных устройств. Такие «продвинутые» темы, как аплеты, библиотеки AWT, Swing,
Graphic, в этой главе мы рассматривать не будем. В Java 2 Micro Edition все перечисленные (и не только) компоненты просто не используются.
1.1. Введение в программирование

Программирование – это написание исходного кода программы на одном из
языков программирования. Существует множество различных языков программирования, благодаря которым создаются всевозможные программы, решающие
определенный круг задач. Язык программирования – это набор зарезервированных слов, с помощью которых пишется исходный код программы. Компьютерные
системы не в силах (пока) понимать человеческий язык и уж тем более человеческую
логику (особенно женскую), поэтому все программы пишутся на языках программирования, которые впоследствии переводятся на язык компьютера или в машинный
код. Системы, переводящие исходный код программы в машинный код, очень сложные, и их, как правило, создают не один десяток месяцев и не один десяток программистов. Такие системы называются интегрированными средами программирования приложений, или инструментальными средствами.
Система программирования представляет собой огромную продуманную визуальную среду, где можно писать исходный код программы, переводить его в машинный код, тестировать, отлаживать и многое другое. Дополнительно существуют
программы, позволяющие производить вышеперечисленные действия при помощи
командной строки. Язык Java предоставляет такую возможность, но в книге данная
проблематика не освещается.
Вы, наверное, не раз слышали термин «программа написана под Windows или
под Linux, Unix». Дело в том, что среды программирования при переводе языка
программирования в машинный код могут быть двух видов – это компиляторы

18
18
18
18
Основы языка программирования Java
Основы языка программирования Java
Основы языка программирования Java
Основы языка программирования Java
Основы языка программирования Java

и интерпретаторы. Компиляция или интерпретация программы задает способ
дальнейшего выполнения программы на устройстве. Программы, написанные на
языке Java, всегда работают на основе интерпретации, тогда как программы, написанные на С/С++, – компиляции. В чем разница этих двух способов?
Компилятор после написания исходного кода в момент компиляции читает
сразу весь исходный код программы и переводит в машинный код. После чего
программа существует как одно целое и может выполняться только в той операционной системе, в которой она была написана. Поэтому программы, написанные под Windows, не могут функционировать в среде Linux, и наоборот.
Интерпретатор осуществляет пошаговое или построчное выполнение программы каждый раз, когда она выполняется. Во время интерпретации создается не выполняемый код, а виртуальный, который впоследствии выполняется виртуальной Javaмашиной. Поэтому на любой платформе – Windows или Linux –
Javaпрограммы могут одинаково выполняться при наличии в системе виртуальной Javaмашины, которая еще носит название Системы времени выполнения. Поскольку все телефоны сейчас оснащаются виртуальной Javaмашиной, то и возможность запуска Javaпрограммы на мобильном устройстве не вызовет
проблем. Грубо говоря, производители мобильных устройств нашли способы
(или разработали технологии), которые позволяют встраивать в телефоны виртуальную Javaмашину, а значит, и запускать Javaпрограммы на телефонах.
Итак, от вас сейчас требуется только изучение синтаксиса языка Java, для
того чтобы писать и понимать исходные коды программ, написанные на этом
языке. Этим мы и займемся в данной главе. В следующей главе вы узнаете больше
о спецификациях языка Java 2 Micro Edition, или требованиях, на базе которых
пишутся программы для телефонов. Затем мы освоим работу с одной из сред
программирования и пакетами разработчика и далее перейдем к самому процессу программирования. А пока займемся языком Java и его объектноориентированной направленностью.

1.2. Объектноориентированное
программирование

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

19
19
19
19
ООП
ООП
ООП
ООП
ООП

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

1.2.1. Классы

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

20
20
20
20
Основы языка программирования Java
Основы языка программирования Java
Основы языка программирования Java
Основы языка программирования Java
Основы языка программирования Java

1.2.2. Методы

Когда приводился пример воспроизведения звукового файла, то было упомянуто о даче команды или сообщения, на основе которого и выполнялись определенные действия. Задача по выполнению действий решается с помощью методов,
которые имеет каждый объект. Методы – это набор команд, с помощью которых
можно производить те или иные действия с объектом.
Каждый объект имеет свое назначение и призван решать определенный круг задач с помощью методов. Какой толк был бы, например, в объекте Клавиатура, если
нельзя было бы нажимать на клавиши, получая при этом возможность отдавать команды? Объект Клавиатура имеет некое количество клавиш, с помощью которых
пользователь приобретает контроль над устройством ввода и может отдавать необходимые команды. Обработка таких команд в целом происходит с помощью методов.
Например, вы нажимаете клавишу Esc для отмены какихлибо действий и тем
самым даете команду методу, закрепленному за этой клавишей, который на программном уровне решает эту задачу. Сразу же возникает вопрос о количестве методов объекта Клавиатура, но здесь может быть различная реализация – как от
определения методов для каждой из клавиш (что, вообщето, неразумно), так и до
создания одного метода, который будет следить за общим состоянием клавиатуры. То есть этот метод следит за тем, была ли нажата клавиша, а потом в зависимости от того, какая из клавиш задействована, решает, что ему делать.
Итак, мы видим, что каждый из объектов может иметь в своем распоряжении
набор методов для решения различных задач. А поскольку каждый объект является объектом определенного класса, то получается, что класс содержит набор методов, которыми и пользуются различные объекты одного класса. В языке Java все
созданные вами методы должны принадлежать или являться частью какогото
конкретного класса.

1.3. Синтаксис и семантика языка Java 2 МЕ

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

Êëàññ Òåëåôîí
{
Ìåòîä Âêëþ÷èòü()
{