Программирование мобильных телефонов на Java 2 Micro Edition
Покупка
Тематика:
Программирование на Java
Издательство:
ДМК Пресс
Год издания: 2008
Кол-во страниц: 512
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Аспирантура
ISBN: 5-94074-409-5
Артикул: 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 Москва
УДК 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, то напишем класс Телефон на абстрактном языке. Êëàññ Òåëåôîí { Ìåòîä Âêëþ÷èòü() {