Разработка Web-приложений для iPhone с помощью Eclipse

 

Разработка Web-приложений для iPhone с помощью Eclipse

Создание Web-приложений для iPhone с использованием модуля iPhone Development и инфраструктуры iUi

Разработка Web-приложений для iPhone с помощью Eclipse

 















Источник: <a href=«www.ibm.com/developerworks/ru/library/os-eclipse-iphone/index.html» mce_href=«www.ibm.com/developerworks/ru/library/os-eclipse-iphone/index.html»>developerWorks


Уровень сложности: средний


<a href="#author" mce_href="#author">Адам Хофтон

, старший разработчик, SAS Institute, Inc.

17.10.2008



     В этой статье:

  1. <a href="#N1005F" mce_href="#N1005F">Кратко об используемом инструментарии

<a href="#N1014E" mce_href="#N1014E">Проектирование пользовательского интерфейса

<a href="#N10271" mce_href="#N10271">Разработка iDoc

<a href="#N102E0" mce_href="#N102E0">Будущее разработки для iPhone

<a href="#resources" mce_href="#resources">Ресурсы

<a href="#author" mce_href="#author">Об авторе




В статье рассказывается о создании Web-страниц для iPhone с использованием Eclipse, подключаемого модуля iPhone Development от компании Aptana и инфраструктуры iUi. В качестве примера используется iPhone-приложение для просмотра документации Javadoc. Кроме того, в статье приводятся советы по проектированию интерфейсов, а также рассуждения о будущем разработки приложений для iPhone.




Платформа iPhone компании Apple предоставляет набор интересных возможностей для разработчиков. Благодаря небольшим размерам и интерактивному сенсорному экрану iPhone и iPod Touch за достаточно короткое время стали популярными среди миллионов пользователей. Однако новаторский дизайн устройств и закрытость платформы создают новые трудности разработчикам приложений. Пока Apple не выпустит свой инструментарий для разработки Software Development Kit (SDK) в феврале 2008 г., программисты будут вынуждены создавать Web-приложения, имитирующие оригинальный интерфейс iPhone.



 

К счастью, существует набор открытых библиотек, облегчающих эту задачу. В частности, модуль iPhone Development, созданный компанией Aptana для среды Eclipse, способен генерировать проектные файлы и осуществлять предварительный просмотр приложений iPhone в специальном поворачиваемом интерфейсном окне. Кроме того, стоит обратить внимание на iUi – инфраструктуру на основе каскадных страниц стилей (CSS) и JavaScript, созданную Джо Хьюиттом (Joe Hewitt) и содержащую множество интерфейсных элементов и страниц, эмулирующих внешний вид приложений iPhone.



 

В данной статье мы будем использовать Aptana и iUi для создания простого приложения iPhone для просмотра документации Javadoc. Мы начнем с проектирования интерфейса для просмотра Javadoc, затем создадим собственный doclet – программу для генерирования страниц Javadoc из исходного кода приложений. В процессе работы мы поговорим о проблемах, связанных с созданием интерфейсов для iPhone, о том, как упомянутые открытые библиотеки позволяют упростить разработку и отладку приложений, а также о направлениях развития программирования для iPhone.



Кратко об используемом инструментарии

Для начала установите Aptana и скачайте iUi:


  1. В Eclipse версии 3.2 выберите пункт меню Help > Software Updates > Find and Install.
  2. Нажмите Search for new features to install. Появится окно со списком сайтов, с которых вы скачивали подключаемые модули, а также список стандартных модулей Eclipse.
  3. Добавьте в этот список Aptana, нажав на New Remote Site и указав следующий URL:
    http://update.aptana.com/update/3.2/

    .

  4. Выберите только что созданный сайт Aptana из списка, нажмите Next и установите полный набор функций. Закройте окно, завершив тем самым установку.
  5. Перезапустите Eclipse.
  6. Зайдите в меню Window > Open Perspective > Other и выберите Aptana в появившемся окне. В результате в панель инструментов должен добавиться новый набор иконок.
  7. Нажмите на иконку “home”. Появится список функций Aptana.
  8. В разделе Apple iPhone Development нажмите на Download and Install.
  9. Отметьте все функции и закройте окно. Будет выполнено конфигурирование специальных функций Aptana для работы с iPhone.
  10. Перезапустите Eclipse.
  11. Скачайте последнюю версию iUi (см. <a href="#resources" mce_href="#resources">Ресурсы
  12. ).


Если все благополучно установилось, создайте новый проект IPhone в Eclipse (iPhone Project), назвав его iDoc, как показано на рисунке 1.





Рисунок 1. Создание нового проекта для iPhone

<img mce_src=«images/stories/iPhone/newproject-wizard.jpg» src=«images/stories/iPhone/newproject-wizard.jpg» />




Получившийся в результате проект, содержащий простое приложение для iPhone, показан на рисунке 2.





Рисунок 2. Вид проекта для iPhone в Eclipse

<img mce_src=«images/stories/iPhone/newproject-result.jpg» src=«images/stories/iPhone/newproject-result.jpg» />




Обратите внимание на подсветку синтаксиса в редакторе кода Aptana. Редактор также поддерживает такие языки как HTML, CSS и JavaScript.



Режим предварительного просмотра iPhone и сервер приложений

В нижней части окна редактора расположены закладки Source, iPhone Preview, а также по закладке на каждый браузер, установленный в вашей системе (например, Safari Preview, Firefox Preview). Выбрав закладку iPhone Preview, вы увидите, как ваше приложение будет выглядеть на экране iPhone. Изображение можно вращать, кликая за пределами браузера. Кроме того, можно скрыть навигационную панель, нажав на заголовочную панель телефона. Горизонтальный режим предварительного просмотра iPhone показан ниже на рисунке 3.





Рисунок 3. Горизонтальный режим предварительного просмотра iPhone

<img mce_src=«images/stories/iPhone/horizontalpreview.jpg» src=«images/stories/iPhone/horizontalpreview.jpg» />




Режим предварительного просмотра существенно облегчает разработку. С его помощью вы можете быстро пробовать новые интерфейсные решения, внося изменения без постоянной необходимости физического переноса приложения на телефон. Когда же придет время протестировать работу приложения на реальном iPhone, вам поможет встроенный в Aptana сервер приложений. Запустите его, нажав на кнопку Run на панели инструментов Eclipse. Пример запущенного в Eclipse сервера приложений показан на рисунке 4.





Рисунок 4. Web-страница сервера приложений Aptana с возможностью отправки URL по e-mail

<img mce_src=«images/stories/iPhone/appserver.jpg» src=«images/stories/iPhone/appserver.jpg» />




Если ваш iPhone подключен к локальной сети через WiFi-соединение, то для доступа к приложению достаточно обратиться по URL, отображенному в окне сервера. Вместо ручного набора данного URL можно просто нажать на кнопку E-mail this url и отправить его письмом в электронный почтовый ящик, доступный в iPhone. Далее откройте URL в теле письма и вы увидите ваше приложение в окне Web-браузера iPhone.



Демонстрация iUi: Web-приложение для поиска фильмов и спектаклей

Демонстрационное приложение, созданное с помощью Aptana, содержит файлы HTML и CSS для имитации интерфейса iPhone, однако их функциональность весьма ограничена. Гораздо большего можно добиться, используя инфраструктуру iUi, включающую в себя богатый набор интерфейсных элементов (виджетов) и спецэффектов на JavaScript, которые позволяют создавать интерфейсы, практически неотличимые от iPhone.



 

Скачайте дистрибутив iUi (файл iui-0.13.tar), распакуйте архив и скопируйте все файлы в проект iDoc в Eclipse. Проект, содержащий файлы iUi, показан на рисунке 5.





Рисунок 5. Проект iDoc, включающий в себя инфраструктуру iUi и примеры к ней

<img mce_src=«images/stories/iPhone/iUi.jpg» src=«images/stories/iPhone/iUi.jpg» />




Демонстрационные Web-приложения, входящие в поставку iUi, находятся в папке samples, показанной на рисунке 5. В их числе музыкальный браузер, программа для поиска фильмов и спектаклей, а также сайт наподобие Digg. Все эти приложения можно увидеть в режиме предварительного просмотра в Eclipse. Например, страница поиска театрального Web-приложения (samples/theaters/index.html) показана на рисунке 6.





Рисунок 6. Пример использования iUi: Web-приложение для поиска фильмов

<img mce_src=«images/stories/iPhone/theaterapp.jpg» src=«images/stories/iPhone/theaterapp.jpg» />




Обратите внимание, насколько точно виджеты iUi имитируют родной интерфейс iPhone, позволяя быстро создавать Web-приложения для данного устройства.















<a class=«fbox» href="#index" mce_href="#index">В начало



















Проектирование пользовательского интерфейса

В качестве упражнения мы создадим программу для просмотра документации Javadoc на iPhone под названием iDoc. Насыщенный дизайн HTML-файлов Javadoc, генерируемых стандартной утилитой от Sun Microsystems, отлично смотрится на экране настольного компьютера, но с ним трудно работать на маленьком экране iPhone. iDoc, наоборот, генерирует файлы Javadoc, специально рассчитанные на iPhone. Они идеально подходят для просмотра программных интерфейсов API в метро или для обсуждения с напарником, выступающим в роли наблюдателя и помогающим вам в решении какой-либо проблемы.



Рекомендации по созданию удобных для восприятия интерфейсов iPhone

Перед тем как начать проектирование интерфейса для iDoc, необходимо отчетливо осознать, чем именно процесс разработки для iPhone отличается от создания обыкновенных Web-приложений. Рисунок 7, позаимствованный со страницы центра разработки для Apple iPhone (см. <a href="#resources" mce_href="#resources">Ресурсы

), замечательно резюмирует эту разницу: “палец – это не мышь”. В частности, нельзя рассчитывать на столь же точное наведение курсора, как в настольных приложениях. Но при этом сама модель взаимодействия между пользователем и приложениям существенно расширяется за счет новых действий типа постукивания, легкого нажатия и т.д. Кроме того, нельзя забывать, что iPhone часто используется в путешествиях, в условиях, когда пользователя могут отвлекать посторонние вещи, поэтому особенно важно, чтобы приложения предоставляли простой, быстрый и интуитивно понятный доступ к данным.



Рисунок 7. Палец — это не мышь

<img mce_src=«images/stories/iPhone/fingermouse.jpg» src=«images/stories/iPhone/fingermouse.jpg» />




В руководстве Apple по созданию интерфейсов для iPhone (см. <a href="#resources" mce_href="#resources">Ресурсы

) определяются три типа Web-документов для iPhone:

Совместимые с Safari на iPhone

Любые корректно отображаемые Web-страницы, даже если некоторые их части требуют наличия неподдерживаемых модулей, например Adobe Flash, или апплетов Java™.





Оптимизированные для Safari на iPhone

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





Приложения iPhone

Web-страницы, эмулирующие собственный интерфейс iPhone и, по возможности, интегрируемые с сервисами iPhone, в частности, телефоном, электронной почтой или Google Maps.


Стандартные страницы Javadoc попадают под первую категорию – “совместимые с Safari на iPhone”. Они корректно отображаются, но требуют множества нажатий и постукиваний для поиска нужной информации. В отличие от них, создавая iDoc, мы ставим целью создавать документы из третьей категории. Несмотря на то, что iDoc не будет интегрироваться с другими сервисами iPhone, его интерфейс будет соответствовать всем требованиям, предъявляемым приложениям iPhone.



Интерфейс iDoc

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



Навигация на уровне пакетов

В просмотр включаются только пакеты верхнего уровня.



Навигация на уровне классов

В просмотр включаются классы, интерфейсы, исключения и ошибки в пакетах.



Детализированная навигация на уровне классов

В просмотр включаются поля, конструкторы и методы классов.



Итоговая страница

Содержит комментарии, сигнатуры и параметры методов.


Некоторые данные, содержащиеся в стандартных файлах Javadoc, не включены в файлы iDoc в целях упрощения восприятия. В частности, не показываются комментарии к объявлениям пакетов, потому что они часто не несут полезной информации (например, “пакет acme.client содержит клиентский код”) или вообще отсутствуют. Таким образом, было решено от них отказаться, упростив тем самым интерфейс iDoc.



 

На всех трех уровнях навигации используются edge-to-edge (растянутые на весь экран) списки. Подобные списки знакомы тем, кто работал с родными приложениями iPhone, например для просмотра контактов, электронных писем или музыки. Edge-to-edge-списки показывают данные в виде строк, имеющих 44 пиксела в высоту, что удобно, если приходится прокручивать большие объемы данных. В руководстве по созданию интерфейсов для iPhone приведены рекомендуемые параметры для создания edge-to-edge-списков, такие как название и размер шрифта, расстояния между границами строк и т.д. Эти параметры поддерживаются в iUi с помощью CSS и JavaScript, благодаря чему можно создавать простые HTML-списки, которые затем выглядят как компоненты iPhone.



 

В листинге 1 показан код страницы, содержащей заголовок, а также ссылки для навигации по пакетам java.applet и java.rmi.





Листинг 1. Документ HTML, содержащий заголовок и два верхних уровня навигации

        
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>iDoc</title>
<meta name="viewport" content="width=320; initial-scale=1.0; 
   maximum-scale=1.0;
   user-scalable=0;"/>
<style type="text/css" media="screen">@import 
   "iui/iui.css";</style>
<style type="text/css" media="screen">@import 
   "iDoc.css";</style>
<script type="application/x-javascript" 
   src="iui/iui.js"></script>
</head>

<body onclick="console.log('Hello', event.target);">
   <div class="toolbar">
     <h1 id="pageTitle"></h1>
     <a id="backButton" class="button" 
        href="#"></a>
   </div>
  <ul id="home" title="Packages" selected="true">
      <li><a href="#java.applet">java.applet</a></li>
      <!-- more packages...-->
      <li><a href="#java.rmi">java.rmi</a></li>
  </ul>
  <ul id="java.applet" title="java.applet">
      <li class="group">Interfaces</li>
      <li><a href="java.applet.AppletContext.html">
         AppletContext</a></li>
      <li><a href="java.applet.AppletStub.html">
         AppletStub</a></li>
      <li><a href="java.applet.AudioClip.html">
         AudioClip</a></li>
      <li class="group">Classes</li>
      <li><a href="java.applet.Applet.html">Applet
         </a></li>
      <li><a href="java.applet.Applet.AccessibleApplet.html">
         AccessibleApplet</a></li>
  </ul>
  <ul id="java.rmi" title="java.rmi">
      <li class="group">Interfaces</li>
      <li><a href="java.rmi.Remote.html">
         Remote</a></li>
      <li class="group">Classes</li>
      <li><a href="java.rmi.MarshalledObject.html">
         MarshalledObject</a></li>
      <li><a href="java.rmi.Naming.html">
         Naming</a></li>
      <li><a href="java.rmi.RMISecurityManager.html">
         RMISecurityManager</a></li>
      <li class="group">Exceptions</li>
      <li><a href="java.rmi.AccessException.html">
         AccessException</a></li>
      <li><a href="java.rmi.AlreadyBoundException.html">
         AlreadyBoundException</a></li>
      <li><a href="java.rmi.ConnectException.html">
         ConnectException</a></li>
      <li><a href="java.rmi.ConnectIOException.html">
         ConnectIOException</a></li>
      <li><a href="java.rmi.MarshalException.html">
         MarshalException</a></li>
      <li><a href="java.rmi.NoSuchObjectException.html">
         NoSuchObjectException</a></li>
      <li><a href="java.rmi.NotBoundException.html">
         NotBoundException</a></li>
      <li><a href="java.rmi.RemoteException.html">
         RemoteException</a></li>
      <li><a href="java.rmi.RMISecurityException.html">
         RMISecurityException</a></li>
      <li><a href="java.rmi.ServerError.html">
         ServerError</a></li>
      <li><a href="java.rmi.ServerException.html">
         ServerException</a></li>
      <li><a href="java.rmi.ServerRuntimeException.html">
         ServerRuntimeException</a></li>
      <li><a href="java.rmi.StubNotFoundException.html">
         StubNotFoundException</a></li>
      <li><a href="java.rmi.UnexpectedException.html">
         UnexpectedException</a></li>
      <li><a href="java.rmi.UnknownHostException.html">
         UnknownHostException</a></li>
      <li><a href="java.rmi.UnmarshalException.html">
         UnmarshalException</a></li>
  </ul>










Пример навигации уровня пакетов показан на рисунке 8. В примере используется один edge-to-edge-список для выбора пакета верхнего уровня.





Рисунок 8. Интерфейс Javadoc неотличим от родного приложения для iPhone

<img mce_src=«images/stories/iPhone/packages.jpg» src=«images/stories/iPhone/packages.jpg» />




Пример показа содержимого пакета java.rmi в режиме предварительного просмотра iPhone приведен на рисунке 9.





Рисунок 9. Показ интерфейсов, классов и исключений из пакета java.rmi

<img mce_src=«images/stories/iPhone/javarmi.jpg» src=«images/stories/iPhone/javarmi.jpg» />




Итоговая страница с детальной информацией будет показываться с помощью еще одного стандартного виджета iPhone – списка, содержащего прямоугольные блоки с закругленными углами (rounded-rectangle-список). Подобные списки удобно использовать для группирования информации; например, они часто встречаются во всевозможных конфигурационных панелях. В iDoc такой виджет будет применяться для отделения сигнатур методов от списка параметров и исключений. В iUi версии 0.13 прямоугольно-закругленные списки поддерживаются только в формах ввода, а их использование для отображения статичного текста приводит к появлению некорректно отформатированных блоков. Поэтому нам придется расширить стандартную CSS, добавив в нее описания из файла iDoc.css (листинг 2), в частности, элемент

textRow

для вывода обычных текстовых строк внутри списка с прямоугольно-закругленными блоками.





Листинг 2. Элемент

textRow

, добавленный в CSS для корректного отображения статического текста

        
/* Добавление нового строкового стиля в iUi для отображения блоков текста */
.textRow  {
    position: relative;
    border-bottom: 1px solid #999999;
    -webkit-border-radius: 0;
    text-align: right;
}

.textRow > p {
    text-align: left;
    margin: 5px 8px 5px 10px;
    padding: 0px 0px 0px 0px;
}


fieldset > .textRow:last-child {
    border-bottom: none !important;
}










В листинге 3 показано содержимое страницы, описывающей один из конструкторов класса

java.math.BigDecimal

.





Листинг 3. HTML-код итоговой страницы с использованием стилей

textRow


        
<div id="java.math.BigDecimal(long,java.math.MathContext)" title="BigDecimal"
        class="panel">
    <fieldset>
        <div class="textRow"><p><b>
           public BigDecimal(long, MathContext)</b></p></div>
        <div class="textRow"><p>Translates a 
           <code>long</code> into a
        <code>BigDecimal</code>, with rounding according to the context settings.
        The scale of the <code>BigDecimal</code>, before any rounding, is zero.
      </p></div>
    </fieldset>
    <h2>Parameters</h2>
    <fieldset>
        <div class="textRow"><p><b>long val
           </b>: <code>long</code> value to be converted
         to <code>BigDecimal</code>.</p></div>
        <div class="textRow"><p><b>MathContext mc
           </b>: the context to use.</p></div>
    </fieldset>
    <h2>Throws</h2>
    <fieldset>
        <div class="textRow"><p><b>ArithmeticException
           </b>: if the result is inexact but
    the rounding mode is <code>UNNECESSARY</code>.</p></div>
    </fieldset>
</div>










Текст, находящийся внутри тега

<fieldset>

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

<div>

со стилем

textRow

. Заголовки (элементы

<h2>

) будут выведены в качестве названий групп непосредственно над списками внутри прямоугольников. Внешний вид страницы показан на рисунке 10.





Рисунок 10. Страница с детальной информацией о конструкторе класса java.math.BigDecimal

<img mce_src=«images/stories/iPhone/bigdecimal.jpg» src=«images/stories/iPhone/bigdecimal.jpg» />




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















<a class=«fbox» href="#index" mce_href="#index">В начало



















Разработка iDoc

Теперь, после того как мы спроектировали интерфейс, пора заняться созданием самого генератора HTML-страниц. Для этого мы создадим простой doclet, который можно будет использовать со стандартной утилитой

javadoc

от Sun. В наших примерах используются пакеты java.*, но iDoc сможет генерировать документацию для любых файлов с исходным кодом. Например, можно сгенерировать Javadoc для исходного кода OpenJDK (см. <a href="#resources" mce_href="#resources">Ресурсы

) благодаря тому что данная библиотека общедоступна и выпущена под лицензией GPL V2 (GNU Public License).

 

Весь процесс генерирования Javadoc в iDoc заключается в итерировании по списку пакетов и классов и вызове методов для вывода статического HTML в вышеописанном формате. Методы для вывода текста на итоговую страницу приведены в листинге 4.





Листинг 4. Код doclet'a для генерирования детальных HTML-страниц

        
private void printDetail(PrintStream p, ProgramElementDoc doc, 
    String id, String name) {
    divHeader(p, id, name, "panel");
    textHeader(p, null);
    textRow(p, getSignature(doc));
    textRow(p, getCommentText(doc.commentText()));
    textFooter(p);
    if (doc instanceof ExecutableMemberDoc) {
        printMethodDetail(p, (ExecutableMemberDoc) doc);
    }
    divFooter(p);
}

private void printMethodDetail(PrintStream p, ExecutableMemberDoc field) {
    if (field.parameters().length > 0) {
        textHeader(p, "Parameters");
        for (int i=0; i<field.paramTags().length; i++) {
            textRow(p, "<b>" + field.parameters()[i].typeName() + " "
                    + field.paramTags()[i].parameterName()
                    + "</b>: "
            + getCommentText(field.paramTags()[i].parameterComment()));
        }
        textFooter(p);
    }
    if (field.throwsTags().length > 0) {
        textHeader(p, "Throws");
        for (int i=0; i<field.throwsTags().length; i++) {
            textRow(p, "<b>" +  field.throwsTags()[i].exceptionName()
                    + "</b>: "
            + getCommentText(field.throwsTags()[i].exceptionComment()));
        }
        textFooter(p);
    }
}










Код организован таким образом, что за генерирование документации для классов, полей, конструкторов и методов отвечает метод

printDetail()

. При этом конструкторы и методы представлены в виде объектов классов-наследников

ExecutableMemberDoc

, поэтому для них дополнительно выводится информация о параметрах и исключениях.



Проблемы с производительностью



Сжатие GZIP

Одним из простых, но эффективных способов улучшить производительность iDoc является GZIP-сжатие трафика Web-сервером. Большинство современных Web-серверов поддерживают возможность сжатия страниц перед их отправкой клиентам, в частности, браузеру Safari для iPhone. Safari способен автоматически распаковывать входящий трафик, поэтому все что нужно – это включить режим сжатия на стороне Web-сервера, после чего пользователи iPhone смогут скачивать страницы значительно быстрее.


















Режим предварительного просмотра приложений iPhone в Aptana упрощает отладку генерируемых файлов. Все расхождения выводимых файлов и ранее спроектированного интерфейса можно обнаружить после каждой итерации. Однако при использовании этого режима можно не заметить потенциальные проблемы с производительностью, потому что современные компьютеры работают в 3–5 раз быстрее, чем iPhone, в котором установлен процессор ARM с частотой 620 МГц. Кроме того, пользователи часто загружают данные через медленный мобильный интернет. Поэтому важно запускать приложение на реальном iPhone.


Тестируя iDoc на iPhone, я заметил, что генерирование одного большого HTML-файла приводит к странным визуальным эффектам и снижает производительность. Для решения этой проблемы можно создать один главный файл для навигации по названиям пакетов и именам классов и отдельные файлы, содержащие комментарии и детальную информацию о методах каждого класса (листинг 5). В результате получится большое количество файлов, но все они будут небольшого размера, что положительно скажется на производительности.


 





Листинг 5. Doclet перебирает все пакеты, создавая отдельные файлы документации для каждого класса

        
out = new FileOutputStream(index);
p = new PrintStream(out);
printHeader(p);

PackageDoc[] packages = root.specifiedPackages();
Arrays.sort(packages);

printPackages(p, packages);

for (int i=0; i<packages.length; i++) {
    printPackageDetail(p, packages[i]);
}
for (int i=0; i<packages.length; i++) {
    ClassDoc[] classes = packages[i].allClasses();
    Arrays.sort(classes);
    for (int j=0; j<classes.length; j++) {
        // Creating a separate file for each class.
        PrintStream p2 = new PrintStream(new FileOutputStream(getFilename(classes[j])));
        printClassDetail(p2, classes[j]);
        p2.close();
    }
}
printFooter(p);
p.close();











iDoc в действии

Увеличив таким образом производительность, можно переходить к проверке iDoc в действии. Для этого сгенерируем Javadoc для 51 пакета java.* и javax.* в OpenJDK, содержащих 1,304 класса, а затем загрузим получившиеся HTML-страницы на Web-сервер. Все вместе файлы занимают более 16 MБ, но из них только 112 КБ приходится на главную страницу и в среднем по 13 КБ на страницы, содержащие информацию по каждому классу. Приложение демонстрирует хорошее время отклика даже при работе через EDGE-сети. Если у вас есть iPhone, зайдите на сайт iDoc <a href="#resources" mce_href="#resources">Ресурсы

) и попробуйте его в работе. Кроме того, вы можете скачать iDoc и сгенерировать оптимизированный для iPhone Javadoc для ваших собственных классов. Внешний вид iDoc показан на рисунке 11.



Рисунок 11. Готовая документация Javadoc для 51 пакета на экране iPhone

<img mce_src=«images/stories/iPhone/finalapp.jpg» src=«images/stories/iPhone/finalapp.jpg» />




В дальнейшем можно усовершенствовать iDoc, добавив поддержку параметризованных типов в Java 5 или распознавание тегов в комментариях Javadoc для создания ссылок между страницами. Если вы решите расширить функциональность iDoc, то полный исходный код приложения можно загрузить по ссылке, приведенной в разделе <a href="#resources" mce_href="#resources">Ресурсы

.













<a class=«fbox» href="#index" mce_href="#index">В начало



















Будущее разработки для iPhone

В октябре 2007 г. Стив Джобс (Steve Jobs) анонсировал выпуск iPhone SDK на февраль 2008 г. На время написания данной статьи (декабрь 2007 г.) еще не было достаточно информации на эту тему, но SDK должен позволять создавать приложения для запуска на iPhone без Safari. Учитывая архитектуру iPhone, логично предположить, что, как и в случае с Mac OS X, в качестве платформы для разработки будет выступать Cocoa или Objective-C. Недавние высказывания руководства Apple также указывают на то, что сторонние приложения должны будут проходить определенную процедуру сертификации перед запуском на iPhone.



 

Исполнение непосредственно на платформе iPhone является плюсом для приложений, интенсивно использующих графику, анимацию или требующих доступ к сетевым ресурсам. Однако даже после выхода SDK разработка Web-приложений для iPhone не потеряет своей популярности благодаря простоте их создания и установки. Такие средства как Aptana и iUi облегчают и существенно сокращают время создания Web-приложений. Поэтому, как видно на примере iDoc, зачастую совершенно необязательно ждать выхода SDK: используя современные технологии, можно создавать Web-приложения для iPhone, интерфейс которых практически не отличается от оригинального.







Ресурсы

Научиться

  • Оригинал статьи: "Develop iPhone web applications with Eclipse" (Адам Хофтон (Adam Houghton), developerWorks, январь 2008 г.). (EN)

     
  • Ознакомьтесь с программой для разработчиков iPhone – разделом центра разработчиков Apple, посвященного созданию Web-приложений для iPhone. (EN)

     
  • OpenJDK – это открытый комплект разработчика приложений на Java, выпущенный компанией Sun Microsystems. (EN)

     
  • Просмотрите результат работы iDoc — Javadoc для OpenJDK — на экране вашего iPhone. (EN)

     
  • Ознакомьтесь со "списком рекомендуемых для прочтения материалов по Eclipse". (EN)

     
  • Просмотрите все материалы по Eclipse на сайте developerWorks.

     
  • Если у вас нет опыта использования Eclipse, прочитайте статью "Начало работы с платформой Eclipse" для знакомства с историей и архитектурой платформы. Вы также узнаете, как можно расширить возможности Eclipse с помощью подключаемых модулей.

     
  • Развивайте свои навыки работы с Eclipse, читая материалы о проекте Eclipse на сайте IBM developerWorks. (EN)

     
  • В разделе подкастов на сайте developerWorks можно прослушать интервью и обсуждения, представляющие интерес для разработчиков. (EN)

     
  • Чтобы быть в курсе последних новостей, посещайте раздел технических мероприятий и Web-трансляций на сайте IBM developerWorks. (EN)

     
  • Следите за развитием и узнавайте об открытых технологиях и возможностях продуктов IBM, просматривая бесплатные демонстрации On demand на сайте developerWorks. (EN)

     
  • Узнавайте о предстоящих конференциях, демонстрациях, Web-трансляциях и других мероприятиях по всему миру, представляющих интерес для разработчиков открытого программного обеспечения IBM.(EN)

     
  • В разделе Open Source сайта developerWorks приведено множество практических инструкций, инструментов и новостей, которые помогут вам применять технологии с открытым исходным кодом в своих проектах и использовать их совместно с продуктами IBM.

     



Получить продукты и технологии



Обсудить





Об авторе





 

Разработка Web-приложений для iPhone с помощью Eclipse

Адам Хофтон (Adam Houghton) является старшим разработчиком в лаборатории прогрессивных вычислений (Advanced Computing Lab) компании SAS Institute, Inc. В сферу его интересов входят все аспекты программирования на Java.