// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= 创建、调试 Mobile 嵌入式应用程序并进行性能分析
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: 创建、调试 Mobile 嵌入式应用程序并进行性能分析 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, 创建、调试 Mobile 嵌入式应用程序并进行性能分析

Sungmoon Cho、Alyona Stashkova

Mobile 嵌入式应用程序应用于小型嵌入式设备，例如，工业测量设备、自动贩卖机、安全系统、调制解调器、家用电子设备，以及具有简易显示器（或没有显示器）和某种有限网络连接的类似设备。本示例演示如何使用 Oracle Java Micro Edition Embedded 平台在 NetBeans IDE 中开发新 Java ME 嵌入式项目，该平台包括对 link:http://jcp.org/en/jsr/detail?id=228[+JSR 228+] 信息模块配置文件 - 下一代 API (IMP-NG) 的支持。本示例还将介绍如何使用 Oracle Java ME Embedded 的 NetBeans 支持调试您自己的 IMlet 并对其进行性能分析。



image::images/netbeans-stamp-80-74-73.png[title="此页上的内容适用于 NetBeans IDE 7.3 及更高版本"]


*要学完本教程，您需要具备以下软件和资源：*

|===
|软件或资源 |要求的版本 

|link:https://netbeans.org/downloads/index.html[+带有 Java ME 的 NetBeans IDE+] |版本 7.3 及更高版本 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java 开发工具包+] (JDK) |版本 6、7 或 8 

|link:http://www.oracle.com/technetwork/java/javame/javamobile/download/sdk/index.html[+Java ME SDK+] |版本 3.2 及更高版本 
|===

*重要提示：*本教程仅在与 Win32 兼容的平台上运行。


== 安装 Oracle Java ME Embedded

要在 Windows 平台上设置带有 Oracle Java ME Embedded 软件的 NetBeans IDE，您需要：

* 安装 Oracle Java ME SDK
* 在 NetBeans IDE 中激活 Java ME 功能
* 在 NetBeans IDE 中安装 Oracle Java ME Embedded 平台

*安装 Oracle Java ME SDK：*

1. 访问 link:http://www.oracle.com/technetwork/java/javame/javamobile/download/sdk/index.html[+Java ME SDK download+]（Java ME SDK 下载）页。
2. 单击 "Accept License Agreement"（接受许可协议）选项。
3. 下载 Oracle Java ME SDK 安装文件（例如 oracle-jmesdk-3-4-rr-win32-bin.exe）并将其保存到计算机上的任意位置。
4. 双击此安装文件以运行安装程序，并按照说明操作。
安装完成后，Windows 系统托盘中会显示 "Java (TM) ME Platform SDK Device Manager"（Java (TM) ME Platform SDK 设备管理器）图标 (image::images/icon.png[])。

*激活 Java ME 功能：*

1. 从 IDE 主工具栏中选择 "Tools"（工具）> "Plugins"（插件）。
2. 在 "Plugins"（插件）对话框中，单击 "Installed"（已安装）标签，并在可用功能列表中选择 "Java ME"。

[.feature]
--
image::images/plugins-small.png[role="left", link="images/plugins.png"]
--

3. 单击 "Activate"（激活）。
4. 在 "Installer"（安装程序）对话框的 "Welcome"（欢迎使用）面板上，单击 "Activate"（激活）。

[.feature]
--
image::images/installer-small.png[role="left", link="images/installer.png"]
--

5. 在成功完成激活过程后，单击 "Finish"（完成）。
6. 单击 "Close"（关闭）以关闭 "Plugins"（插件）对话框。

*安装 Oracle Java ME Embedded 平台：*

1. 选择 "Tools"（工具）> "Java Platforms"（Java 平台）。
此时将显示 "Java Platform Manager"（Java 平台管理器）对话框。

[.feature]
--
image::images/jpmanager-small.png[role="left", link="images/jpmanager.png"]
--

2. 单击 "Add Platform"（添加平台）。
3. 在 "Add Java Platform"（添加 Java 平台）向导的 "Select Platform Type"（选择平台类型）中，选择 "Java ME CLDC Platform Emulator"（Java ME CLDC 平台仿真器）并单击 "Next"（下一步）。
IDE 随即会显示 "Choose directory to search for platforms"（选择要在其中搜索平台的目录）对话框。
4. 选择要在其中安装 Java ME SDK 平台的目录（例如， ``C:\Java_ME_Platform_SDK_3.2`` ），然后单击 "Open"（打开）。
5. 在 "Add Java Platform"（添加 Java 平台）向导的 "Platform Folders"（平台文件夹）面板中，确保选择上一步骤中的所选平台，然后单击 "Next"（下一步）。
6. 在 IDE 检测到平台之后，请立即在 "Add Java Platform"（添加 Java 平台）向导的 "Detected Platforms"（已检测到平台）面板中单击 "Finish"（完成）。

[.feature]
--
image::images/jpdetected-small.png[role="left", link="images/jpdetected.png"]
--

现在将在 Netbeans IDE 中注册 Oracle Java ME 平台。

[.feature]
--
image::images/jpregistered-small.png[role="left", link="images/jpregistered.png"]
--

7. 在 "Java Platform Manager"（Java 平台管理器）对话框中，单击 "Close"（关闭）。

现在您已设置 NetBeans IDE，可以进行 Mobile 开发了。


== 创建嵌入式项目

创建新项目是使用 NetBeans IDE 开发新 Java ME Embedded 应用程序的首要步骤。

1. 选择 "File"（文件）> "New Project"（新建项目）。
此时将显示 "New Project"（新建项目）对话框。
2. 选择 "Java ME" 类别，然后选择 "Embedded Application"（嵌入式应用程序）项目。单击 "Next"（下一步）。
3. 在 "New Embedded Application"（新建嵌入式应用程序）向导的 "Name and Location"（名称和位置）面板中，指定  ``EmbeddedApp``  作为项目名称。

[.feature]
--
image::images/newappname-small.png[role="left", link="images/newappname.png"]
--

4. 保持选中 "Create Default Package and IMlet Class"（创建默认包和 IMlet 类）选项，然后单击 "Next"（下一步）。
5. 确保选择 "CLDC Oracle Java(TM) Platform Micro Edition SDK" 作为仿真器平台，并选择 "IMPNGPhone1" 作为设备。
6. 单击 "Finish"（完成）。
此时将在标准 IDE 项目中创建一个具有 IMLet 的 IMP-NG 应用程序。

image::images/prjcreated.png[]

<<top,返回页首>>


== 运行应用程序

要验证应用程序是否正常运行，请修改应用程序源代码，如下所示：

1. 在 "Projects"（项目）窗口中，双击  ``IMlet.java``  文件并选择 "Edit"（编辑）。
IDE 随即会在源代码编辑器中打开  ``IMlet.java``  文件。
2. 滚动查看源代码并查找  ``StartApp``  方法。
3. 在  ``StartApp``  方法的主体中插入以下用粗体显示的行：

[source,java]
----

 public void startApp() {
      *System.out.println("Hello, world!");*
 }
----
4. 从 IDE 主菜单中选择 "File"（文件）> "Save"（保存）以保存所做的编辑。

现在您已创建应用程序，您可以按照下述方法在 IDE 中运行该应用程序：

1. 右键单击  ``EmbeddedApp``  项目节点，然后选择 "Clean and Build"（清理并构建）。
"Output"（输出）窗口将显示 BUILD SUCCESSFUL 语句。

*注：*如果 "Output"（输出）窗口不可见，请从 IDE 主菜单中选择 "Window"（窗口）> "Output"（输出）> "Output"（输出）。

2. 从 IDE 菜单栏中，选择 "Run"（运行）> "Run Project"（运行项目）。
IMPNGPhone1 仿真器随即启动并显示 EmbeddedApp 应用程序正在运行。

[.feature]
--
image::images/emulator-small.png[role="left", link="images/emulator.png"]
--

*注：*《link:http://docs.oracle.com/javame/config/cldc/rel/3.2/get-started-win/title.htm[+面向 Windows 32 平台的 Oracle Java ME Embedded 入门指南+]》中提供了有关 Java ME Embedded Emulator 的详细信息。

在 "Output"（输出）窗口中，您应当可以看到程序输出 `Hello, world!`

[.feature]
--
image::images/output-small.png[role="left", link="images/output.png"]
--

3. 在仿真器中，选择  ``Embedded App (running)``  并单击右侧的 "Suspend"（挂起）。
此时将暂停应用程序。
4. 单击 "Resume"（恢复）。
此时将恢复运行应用程序。
5. 要停止应用程序并关闭仿真器，请单击 "Stop"（停止）并从仿真器菜单中选择 "Application"（应用程序）> "Exit"（退出）。
此运行进程随即在 IDE 中终止。

<<top,返回页首>>


== 调试应用程序

调试嵌入式项目与调试一般 Java 项目类似。

右键单击相应项目，然后选择“调试”以启动调试会话。此时将打开仿真器，并且程序执行过程会在设置的任意断点处停止。

<<top,返回页首>>


== 对应用程序进行性能分析

使用常见性能分析任务（例如，标准 CPU 或内存性能分析）构建可靠的 Mobile 嵌入式应用程序。

在对应用程序进行性能分析之前，您需要按如下方式安装 Java ME SDK Tools 插件：

1. 在 NetBeans IDE 中，选择 "Tools"（工具）> "Plugins"（插件）。
2. 在插件管理器中，选择 "Available Plugins"（可用插件）标签。
3. 在 "Available Plugins"（可用插件）标签中，滚动查找 "Java ME SDK Tools" 插件，并选择该插件以便安装。

[.feature]
--
image::images/available-plugins-small.png[role="left", link="images/available-plugins.png"]
--

4. 单击 "Install"（安装）。
5. 在 "Installer"（安装程序）对话框的欢迎页，单击 "Next"（下一步）。
6. 在 "License Agreement"（许可证协议）页上，阅读与该插件相关的许可证协议。如果您同意所有许可证协议条款，请单击适当的选项，然后单击 "Install"（安装）。
7. 安装过程完成后，保持选中 "Restart IDE now"（立即重新启动 IDE）选项并单击 "Finish"（完成）。

在重新启动 NetBeans IDE 之后，您即可开始使用 IDE 对您的 Mobile 嵌入式应用程序进行性能分析。

1. 在 IDE 的 "Projects"（项目）标签中，选择 `EmbeddedApp` 项目名称。
2. 从主菜单中选择 "Profile"（分析）> "Profile Project"（分析项目）以便启动性能分析会话。

*注：*当首次对项目进行性能分析时，系统会提示您集成分析器。

[.feature]
--
image::images/enable-small.png[role="left", link="images/enable.png"]
--

3. （适用于首次对项目进行性能分析）在 "Enable Profiling"（启用性能分析）对话框中，单击 "Yes"（是）执行集成。
4. 在 "Profile"（分析）对话框中，选择 "CPU Profiler"（CPU 分析器），并选择性地选中 "Profile System Classes"（分析系统类）。
5. 单击 "Run"（运行）。
此时将打开仿真器，并显示正在运行的 `EmbeddedApp` 应用程序。
6. 与应用程序交互。
7. 退出应用程序或关闭仿真器。
IDE 会在 `cpu:_时间_`窗口中显示分析数据。

[.feature]
--
image::images/cpu-small.png[role="left", link="images/cpu.png"]
--

*注：*要保存在仿真会话中收集的数据以供将来参考，您可以执行以下任一操作：

* 通过单击 "Export to"（导出至）按钮 (image::images/export.png[]) 将数据导出到 `nps` 文件
* 通过单击 "Save Current View to Image"（将当前视图另存为图像）按钮 (image::images/image.png[]) 将快照保存到 `png` 文件
link:/about/contact_form.html?to=6&subject=Creating,%20Debugging,%20and%20Profiling%20an%20Embedded%20Application[+发送有关此教程的反馈意见+]


<<top,返回页首>>


== 另请参见

* link:imp-ng-screencast.html[+演示：NetBeans IDE 中的 IMP-NG 配置文件支持+]
* link:http://www.oracle.com/technetwork/java/javame/javamobile/training/jmesdk/index.html[+Java Mobile - 开始学习+]
* link:http://www.oracle.com/technetwork/java/embedded/resources/me-embeddocs/index.html[+Oracle Java ME Embedded 客户端文档+]
* link:https://blogs.oracle.com/javamesdk/[+Java ME SDK 团队博客+]
* _使用 NetBeans IDE 开发应用程序_中的link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG1552[+开发 Java ME 应用程序+]

<<top,返回页首>>

