<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 用Eclipse開(kāi)發(fā)iPhone Web 應用程序

用Eclipse開(kāi)發(fā)iPhone Web 應用程序

作者:Adam Houghton , 高級軟件開(kāi)發(fā)人員 時(shí)間:2008-08-22 來(lái)源:21IC 中國電子網(wǎng) 收藏

  清單 4. 輸出詳細信息頁(yè)面的 Doclet 代碼
               
  private void printDetail(PrintStream p, ProgramElementDoc doc,

本文引用地址:http://dyxdggzs.com/article/87266.htm

    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() 將處理類(lèi)描述、字段、構造函數和方法的輸出。后兩種類(lèi)型是 ExecutableMemberDoc 的子類(lèi),因此打印關(guān)于其參數和已拋出異常的附加信息。

  Aptana 的 Preview 模式將幫助調試輸出文件。在每次迭代后,您可以快速單擊該查找已設計界面中的不一致性。但是,使用 Preview 模式可以掩蓋性能問(wèn)題:現代計算機的運行速度比 的 620-MHz ARM 處理器快三至五倍。此外,用戶(hù)經(jīng)常通過(guò)速度慢的蜂窩網(wǎng)絡(luò )下載頁(yè)面,因此必須用實(shí)際 運行您的。

  性能問(wèn)題

  當我在 iPhone 中測試查看 iDoc 時(shí),我發(fā)現輸出一個(gè)大型 HTML 文件將導致跳幀和性能下降。要解決此問(wèn)題,創(chuàng )建一個(gè)用于導航包名/類(lèi)名的主文件,然后為帶有注釋和方法細節的每個(gè)類(lèi)創(chuàng )建獨立文件(參見(jiàn)清單 5)。雖然此過(guò)程將生成大量文件,但是各個(gè)文件大小都非常小,并且運行得十分流暢。

  清單 5. Doclet 代碼將迭代每個(gè)包,然后為每個(gè)類(lèi)創(chuàng )建文件
               
  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

  在經(jīng)過(guò)該性能增強之后,就能運行 iDoc 了。為 OpenJDK 中的 51 個(gè) java.* 和 javax.* 包(表示 1,304 個(gè)類(lèi))生成 Javadoc,然后把所有內容上傳到 服務(wù)器中。這包括超過(guò) 16 MB 的文件,但是主要導航頁(yè)面只有 112 KB,并且每個(gè)單獨類(lèi)的詳細信息頁(yè)面平均為 13 KB。即使在使用 EDGE 網(wǎng)絡(luò )時(shí),應用程序也能夠快速響應。如果您已經(jīng)擁有了 iPhone,請訪(fǎng)問(wèn) iDoc 站點(diǎn)(請參閱 參考資料)并嘗試使用,也可以下載 iDoc 來(lái)為您自己的代碼庫生成特定于 iPhone 的 Javadoc。圖 11 顯示了最終的應用程序。


圖 11. 用于 iPhone 的全部 51 個(gè)包的 Javadoc
 

  可能對 iDoc 進(jìn)行的擴展包括支持顯示 Java 5 泛型,以及更智能地捕捉 Javadoc 注釋內的標記來(lái)實(shí)現頁(yè)面之間的鏈接。如果您有興趣添加 iDoc 的功能,則可以下載完整的源代碼.

  iPhone 開(kāi)發(fā)的前景

  2007 年 10 月,Steve Jobs 宣稱(chēng) Apple 將于 2008 年 2 月發(fā)布 iPhone 。詳細信息很少,因為這是在 2007 年 12 月編寫(xiě)的,但是 將允許您在不需要使用 Safari 的情況下創(chuàng )建能夠在 iPhone 上本機運行的應用程序。給定 iPhone 底層架構之后,開(kāi)發(fā)平臺很可能是類(lèi)似于 Mac OS X 的 Cocoa 和 Objective-C。Apple 主管人員的最新評論暗示第三方應用程序將需要接受某種類(lèi)型的認證過(guò)程。

  通過(guò)在本機運行,需要高級動(dòng)畫(huà)、圖形和網(wǎng)絡(luò )訪(fǎng)問(wèn)的應用程序將從中獲益。不過(guò),即使在發(fā)布了 之后,iPhone 的 開(kāi)發(fā)仍會(huì )是一個(gè)吸引人的主題。 應用程序很容易創(chuàng )建和部署。諸如 Aptana 和 iUi 之類(lèi)的工具簡(jiǎn)化了開(kāi)發(fā),并且能夠快速創(chuàng )建 Web 應用程序。正如 iDoc 所展示的,沒(méi)有必要等待 SDK 的發(fā)布:使用現有的工具,您可以創(chuàng )建具有本機界面外觀(guān)的全功能 iPhone Web 應用程序。


上一頁(yè) 1 2 3 4 下一頁(yè)

關(guān)鍵詞: iPhone Web 應用程序 SDK Eclipse

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>