搭建开发平台Eclipse

1   初识Eclipse、EclipseME 

Eclipse是一个开发源代码的、基于java的可扩展开发平台。Eclipse相关的许可证是大多数基于Common Public License (CPL),CPL是一个为Open Source Initiative (OSI)所认可的许可证。由于Eclipse Foundation的建立,Eclipse的许可证将逐渐趋向于使用Eclipse Public License (EPL),EPL是一个与CPL相类似的许可证,正在进行OSI的认证工作。 作为当今最流行的java开发IDE之一,java社群使用Eclipse以及基于Eclipse技术而来的IBM Websphere的开发者已经超过了半数。

Eclipse本身只是一个框架和一组响应的服务,并不能够开发什么程序。在Eclipse中几乎每样东西都是插件,实际上正是运行在eclipse平台上的种种插件提供我们开发程序的各种功能。同时各个领域的开发人员通过开发插件,可以构建与Eclipse环境无缝集成的工具。eclipse的发行版本都已经带有最基本的插件,方便了开发人员。举个例子:IBM Websphere Studio,是IBM的一套java IDE,其本质上就是Eclipse框架加上IBM开发的多种服务插件构成的。

你可以在http://www.eclipse.org/downloads/index.php 下载到Eclipse的解压安装文件、语言包以及许多实用工具插件。本文写作的时候最新版本是Eclipse SDK 3.1 M5a。不过,在这里我们提醒大家,Eclipse并不是版本越新越好,新版本往往有一些难以解释的bug,而且一些插件提供商可能还没有来得及提供与之配套的版本。本文将采用Eclipse-SDK-M3.0.1 为大家演示。

既然Eclipse在java开发中如此重要,那么我们能否使用Eclipse开发手机应用程序呢?是的,这个答案就是EclipseME。

EclipseME作为Eclipse一个插件,致力于帮助开发者开发J2ME应用程序。EclipseME并不为开发者提供无线设备模拟器,而将各手机厂商的实用模拟器紧密连接到Eclipse开发环境中,为开发者提供一种无缝统一的集成开发环境。

EclipseME为我们提供了如下的具体功能:

        Multiple wireless toolkit support

        Wireless toolkit preferences

        Platform component and definition support

        Create new J2ME Midlet Suite Project

        Create new MIDlet

        Java Application Descriptor (JAD) editor

        Automatic incremental preverification

        Eclipse launch support for Emulator

        MIDlet debugging support

        JAR and obfuscated JAR packaging

        Over the air deployment testing server

        Export Antenna build files

        Automated MIDlet signing

你可以在http://www.eclipseme.org/上得到免费下载的EclipseME,本文写作时的最新版本是0.9,同样出于稳定的考虑,我们在这里选用eclipseme.feature_0.5.5_site.zip来为大家演示。eclipseme的作者很勤奋,更新频繁,读者可以等待即将推出的1.0这个稳定版本。

除了Eclipse与EclipseME之外,你还需要java运行环境和一些手机模拟器来完成整个搭建工作。

2  搭建Eclipse移动开发环境

搭建EclipseME下的安装平台需要三个步骤。

2.1 Eclipse的安装与汉化

搭建Eclipse的第一个步骤就是要安装JDK,本文写作时,JDK的最新版本是5.0,但是用JDK5.0 + Eclipse开发手机程序有很多问题。所以目前的J2ME开发者基本上还是采用的JDK1.4.2,安装很简单,这里就不赘述了。

Eclipse的安装过程更加简单,事实上,这仅仅是一个解压缩的过程。将你下载的Eclipse SDK压缩包eclipse-SDK-M3.0.1拷贝到你的目标目录下,我们这里以D盘根目录为例,然后解压到当前文件夹。

先不要急着运行你的Eclipse环境,把Eclipse语言包NLpack-eclipse-SDK-3.0拷贝到相同路径(D盘)下解压缩,再运行,Eclipse将首先完成第一次启动配置,包括相应的汉化工作。接下来指定你的工作空间就可以了。

欢迎界面之后,就是Eclipse漂亮的工作界面!

2.2 安装EclipseME插件

在Eclipse中选择“帮助 / 软件更新 / 查找并更新”,在弹出对话框中选择“搜索要安装的新功能部件”,在“新建已归档站点”的弹出框中,指定EclipseME压缩文件eclipseme.feature_0.5.5_site.zip。

点击确定后可以看到Eclipse已经搜索到了相应的插件。

选中EclipseME的复选框,接受协议,忽略功能部件验证,最后重新启动控制台,EclipseME插件就已经顺利的安装好了。

中间会有一个步骤需要确认EclipseME没有数字签名。我们引用作者的话说明这是为什么:

“At present the EclipseME package is not digitally signed. (Maintaining the keys required to digitally sign JAR files costs $400+/year. If anyone is interested in funding EclipseME to this extent, we’ll be happy to sign the JAR files.)”

为了验证EclipseME确实已经安装上了,我们在工作台重启之后,打开“窗口 / 首选项”中,我们可以看到一个J2ME选项,这时,Eclipse移动开发的第一步,我们已经成功的迈出了!

注意:安装好EclipseME之后,我们要对原有的Eclipse配置做一点小小的改动。由于移动开发时我们需要首先启动手机模拟器,那么在Debug模式的Eclipse默认设置不等到模拟器启动就会失败。

3 加载厂商模拟器

EclipseME为我们提供了一个集成开发环境,但仅仅这些是不够的,我们还需要集成一种或多种手机模拟器来进行程序测试工作。目前,各大手机厂商都拥有多种型号的手机模拟器,Sun也提供了一种通用模拟器。这里我们采用Sun WTK和Nokia Developer’s Suite 两种工具包来为大家演示。

3.1 加载Sun WTK v2.2

WTK(Wireless toolkit)是Sun为无线开发者提供的一个无线开发实用包。它拥有多个手机模拟器,我们在这里将WTK绑定到EclipseME,这将大大提高开发者的工作效率。

当然,我们得先安装WTK。安装过程也很简单,系统会自动检测到当前JDK所在路径,并引用该JDK。

下面我将WTK绑定到EclipseME。

找到路径“窗口 / 首选项/ J2ME / Platform Component”,右键单击对话框右侧的wireless toolkit,我们可以添加当前系统已有的模拟器。在单击“浏览”按钮之后,我们选定WTK的安装目录。

EclipseME会自动分析出当前模拟器类型,并显示出来。

确认之后,我们发现Platform Component一栏上添加了关于WTK的许多配置信息,此时,WTK已经被我们集成到EclipseME上了。

3.2 加载Nokia Developer’s Suite 2.2

Nokia拥有多种型号的手机的模拟器,为了统一管理,它推出了用于集中管理这些模拟器的管理软件Developer’s Suite。Developer’s Suite本身是一个可以独立运行的工具包,就像WTK一样。不同的是Developer’s Suite不需要EclipseME就可以和Eclpise集成。为了统一开发环境,这里主要介绍的是如何用EclipseME加载它所提供的模拟器。Developer’s Suite功能较多甚至包含了地图编辑器和短信服务器,关于他们的详细内容,请参考Nokia开发者论坛。

首先,从Nokia论坛上下载安装文件,如果你的电脑中有旧版本的Developer’s Suite,需要首先卸载旧版本。Nokia的开发包是提供给Nokia论坛的开发者使用的。所以,在接受安装协议之后,你需要提供你在Nokia论坛的用户名和安装序列号。

第一次安装没有序列号也不用担心,输入一栏中什么都不用填直接忽略过去,Developer’s Suite会让你选择一种代理联网模式(如果没有用代理服务器上网就选择no proxy),然后要求你输入你在Nokia论坛的用户名和密码进行注册。注册成功之后,用户名对应的序列号就会被发送到你的邮箱中,查收一下,就可以继续了!(有的时候Nokia发送序列号的行为会很慢,没办法,只有等等了J)

当我们完成认证之后,会发现Developer’s Suite 2.2提供了多种安装方式,包括独立安装或者直接与Eclipse集成。

如果选择了与Eclipse集成,那我们就要提供当前Eclipse的安装目录。
无论是否是集成安装,在重启系统之后,我们都要以与添加Sun WTK相同的方法,在“首选项 / J2ME / Platform Components”中选中Developer’s Suite的安装目录,确定之后可以看到,Wireless Toolkits中除了WTK,Nokia Developer Suit也被列在其中了!

现在,我们终于可以用Eclipse开发第一个J2ME程序了!

4   使用Eclipse进行无线开发

4.1 创建工程

在完成了环境搭建后,我们就可以在Eclipse中用我们所熟悉的方式开发无线应用程序。下面让我们完成一个经典Hello World程序。这里,我们选择使用Sun WTK 2.2作为模拟器。

在Eclipse工作台上的新建选项中,选择J2ME Midlet Suite,首先创建一个MIDP Suit。

在下一步中,我们可以看到有多种模拟器设备可供选择,选定“J2ME Wireless Toolkit 2.2 MIDP 2.0 Platform”后,继续下一步,直至完成。

此时,在包资源管理器中,Hello World套件项目已经被建立起来,我们注意到,Eclipse为我们自动绑定了J2ME library运行库,并创建了jad等配置文件。

4.2 创建MIDlet文件

完成项目创建后,让我来创建一个MIDlet类文件,它是整个套件的入口文件。也是Hello World的关键类。

选择J2ME Midlet之后,我们可以看到系统自动继承了MIDlet超类,请确保三个默认方法复选框被选中,输入类名,完成创建。

打开刚刚创建的Hello World,我们发现Eclipse已经自动帮我们生成了程序主体,继承方法以及一些注释。

如此之多的重复工作已经被Eclipse完成,以至于我们只需要在相应的方法中填写自己的实现过程就可以了。

首先在Hello World代码中导入界面类import javax.microedition.lcdui.*;

然后,我们仅仅需要用以下代码覆盖原先的构造函数:

public HelloWorld() {
    super();
    // TODO 自动生成构造函数存根
    Form form = new Form("Hello World");
    form.append("Welcome to J2ME World!");
    Display.getDisplay(this).setCurrent(form);
}

如此简单的几步,第一个J2ME就完成了!

4.3 执行MIDlet

在Hello World项目上单击右键,选择“运行…”,

在弹出对话框中,在Wireless Toolkit Emulator中新建一个配置,指定刚刚Hello World为入口文件,应用设置,最后运行。

可以看到,Eclipse自动启动了WTK的模拟器,显示出了Hello World的欢迎界面!

12.4.4 打包与混淆

打包,就是为套件生成jar文件,用来发布项目。右键单击目标项目,可以在J2ME选项中选定Create Package,生成jar包。

混淆,就是为了保护版权,增加别人反编译阅读源代码的难度;同时可以减少jar包的体积。在J2ME选项中也能够找到创建混淆包的选项。但首先,需要指定当前系统中混淆器的安装位置。

我们这里采用了开源免费的Proguard3.0.1作为混淆器。在“首选项 / J2ME / packaging / obfuscation”中,通过浏览指定Proguard3.0.1的安装(解压)路径。

应用保存设置之后,就可以成功的创建混淆包了。