Best tools for mobile application development
A comparative review of four J2ME IDEs
By Michael Juntao Yuan, JavaWorld.com, 10/18/02
A new technology's successful adoption often depends on its development tools. Good tools help new developers more easily
get started and make experienced developers more productive. For instance, the success of Microsoft's programming environment
is closely associated with the success of its Visual Studio tools.
The J2ME (Java 2 Platform, Micro Edition) technology is still relatively new. Strong development tools, especially IDEs, will
greatly help J2ME's adoption among wireless application developers. In this article, I review four J2ME IDE products:
- Borland JBuilder 7 Enterprise with MobileSet 3
- Sun Microsystems' Sun ONE (Open Network Environment) Studio 4 Mobile Edition
- Metrowerks CodeWarrior Wireless Studio 7
- S5 Systems' jVise (based on IBM Eclipse technology)
Landscape of J2ME development tools
Different wireless devices have different limitations in terms of memory size, screen size, input methods, and computing speed.
Also, vendors' J2ME implementations might contain vendor-specific add-on APIs that leverage special underlying hardware/OS
features.
The diversified device market naturally results in diversified development tools. Each device vendor has its own SDK, device
emulators, and performance analysis tools. Some SDKs even come with their own build project-management and source-code editing
tools. One example is Sun's J2ME Wireless ToolKit (J2MEWTK). J2MEWTK contains a reference implementation of J2ME/MIDP (Mobile
Information Device Profile) and has multiple device emulators that run on Unix/Linux and Windows platforms. J2MEWTK also has
performance profile tools and real memory usage monitors. All those tools can be administrated from a central control panel
called kToolBar. kToolBar can also build and package ready-to-deploy JAR/Jad programs from development directories. However,
mastering all these tools and testing applications on all emulators can prove tedious.
A J2ME IDE eases development by integrating device vendor SDKs with other tools. Developers can then have a unified IDE interface
for all supported SDKs. IDEs also improve developer productivity and the quality of deliverable applications.
Who should use an IDE?
I do not recommend IDEs to novice developers. Such developers must learn several different things at once: the Java language,
J2ME APIs and packages, the IDE itself. An IDE's convenience features can easily obscure what's really happening under the
hood. You might end up developing a set of skills tied to a specific IDE. IDEs can help, however, if you already know what
you are doing. They can automate many tedious processes for an experienced developer.
J2ME IDE buyer's guide
I evaluated this article's J2ME IDEs according to the following aspects:
- General productivity features: I evaluated those features beneficial to all Java development projects, not those specific to J2ME. Those features include
editor, project-manager, debugger, architecture-designer, and documentation tools, plus tools for advanced programming techniques
(refactoring, unit testing, and so on).
- Third-party SDK integration: Support for multiple SDKs is a core feature for any J2ME IDE. But IDE vendors have difficulties tracking and integrating
support for each individual SDK. The Unified Emulator Interface (UEI) specification standardizes the programming interface
between SDKs and IDEs. UEI-compatible SDKs and IDEs are guaranteed to work with each other. In my evaluation, I discuss what
SDKs the IDEs support out of the box, whether the IDEs support UEI, and how difficult it is to switch between SDKs in a project.
- Post-compilation tools: J2ME applications are mobile applications that require a high level of security and performance. Code obfuscation can prevent
people from reverse-engineering your class files and reduce code size. Special optimization techniques are available from
IDE vendors and their partners. J2ME applications can also be post processed and optimized for deployment devices based on
the resources available for specific device types. These post-processing, obfuscation, and optimization tools fall into this
post-compilation category.
- Over-the-air (OTA) deployment support: J2ME applications are often deployed over public wireless networks. J2ME OTA specifications standardize the process for discovering,
downloading, authenticating, authorizing, verifying, and executing a mobile Java application. OTA specifications require properly
formatted meta files on the server side and Java Application Manager (JAM) on the mobile device side. The server also requires
special configurations to support OTA meta types. The OTA process can become quite complex with the upcoming release of MIDP
2.0. An IDE should help generate those meta files automatically. A good IDE should also integrate OTA-compliant JAM clients
to test the deployment within the IDE.
- End-to-end mobile application development: J2ME devices are not powerful enough to process or store large amounts of information by themselves; J2ME applications are
often thick clients for some backend enterprise application servers. Thus, a first-rate IDE should allow developers to build
entire end-to-end projects. That minimizes learning costs and project coordination efforts.
- Documentation and tutorials: Java mobile application development is a sophisticated process involving many aspects of software engineering. IDEs provide
tools to automate many tasks; however, due to the development process's intrinsic complexity, novice programmers often find
it hard to use those features correctly. Tutorials and detailed case studies prove essential for an IDE's efficient adoption.
- J2ME GUI (graphical user interface) builders: Some IDEs have RAD (rapid application development) tools that allow developers to construct mobile user interfaces visually.
Those tools appeal to developers from the desktop world—those familiar with J2SE (Java 2 Platform, Standard Edition) RAD tools.
However, use J2ME visual GUI builders with caution: because wireless devices differ in screen sizes, the same UI design might
appear differently on various devices. For example, a Palm PDA can display four command buttons in a row. But a cell phone
might ask you to choose from a list of four commands when you click a Menu button. So what you see on the GUI builder might
not be what you eventually get on a particular device.
JBuilder 7 Enterprise with MobileSet 3
Borland JBuilder is a renowned Java IDE with three editions: Personal, Standard (SE), and Enterprise. All JBuilder editions
can run on multiple platforms including Windows, Linux, Solaris, and Mac OS X. To support J2ME development on JBuilder, you
must install an add-on module called MobileSet. Currently MobileSet only runs on Windows, but support for more platforms is
planned.
JBuilder Personal is available free of charge from Borland's Website. JBuilder SE costs 99 (September 2002), and the Enterprise
edition costs ,999. You can download 30-day free trial licenses for both the Standard and Enterprise editions. Although free,
the Personal edition offers little value. It lacks some basic productivity features. For example, you cannot even manage your
source code through package hierarchies, which makes developing large projects with many classes difficult.
In contrast, JBuilder 7 Enterprise offers a rich set of tools that support Java application (especially J2EE (Java 2 Platform,
Enterprise Edition) applications) design, development, testing, and deployment. It is bundled with Borland's own J2EE application
server, Borland InterBase SQL database, and a trial edition of the company's Optimizeit Suite, a Java optimization tool. The
shrink-wrapped software comes with three tutorial documentation books. Not only do those books provide JBuilder usage case
studies, they also serve as good resources for learning general Java application development.
To develop J2ME applications on top of any JBuilder 7 edition, you must install MobileSet, a free download from Borland's
Website. After running the installer, MobileSet adds new wizards, compile/runtime environments, and menu items to your existing
JBuilder installation. The following review focuses on JBuilder 7 Enterprise.
- General productivity features: JBuilder 7 Enterprise offers top-notch Java productivity features. It has a powerful editor, compiler, and debugger. More
advanced features include multiple JVM and runtime support, UML (Unified Modeling Language) visualization tools, tools for
designing application logic (for example, visual EJB (Enterprise JavaBean) designers), integrated unit-testing support, refactoring
tools, and javadoc tools. For enterprise applications, JBuilder supports automatic generation of Web and enterprise archives
(WAR/EAR) and deployment on all leading application servers. Using JBuilder, you can also easily integrate powerful third-party
tools, such as CVS (Concurrent Versioning System) for source code management and Ant for custom builds, into your project.
- Third-party SDK integration: The only J2ME platform JBuilder supports is MIDP. JBuilder MobileSet supports J2MEWTK, Nokia, Siemens, and Sprint PCS SDKs.
But the MobileSet download itself only contains J2MEWTK to get you started; you must download other SDKs separately. Since
JBuilder supports UEI, I expect it will support most future SDKs. The tool allows you to switch among multiple JVMs and runtime
environments in a project, which simplifies multiple platform development.
- Post-compilation tools: JBuilder MobileSet has built-in support for class file obfuscation through RetroGuard 1.1. The bundled Optimizeit Suite further
optimizes application size and performance.
- OTA deployment support: With JBuilder Enterprise, I could easily generate jar manifest files and jad files for my MIDP project. Projects can deploy
onto a properly configured remote server through JBuilder's built-in FTP client. However, JBuilder does not configure the
server for you. You can test deployed applications using OTA-compatible client-side JAMs integrated in JBuilder.
- End-to-end mobile application development: JBuilder 7 Enterprise has excellent capabilities for developing J2EE backend application servers. You can develop end-to-end
applications entirely within JBuilder.
- Documentation and tutorials: The three books that come with JBuilder 7 Enterprise are all freely available in both HTML and PDF versions from the Borland
Website. Borland also has downloadable MobileSet tutorial books and many other fine documentations. JBuilder's documentation
support is excellent.
- J2ME GUI builders: The MobileSet comes with a MIDP GUI builder; producing GUI code with JBuilder proves to be quite easy.
Sun ONE Studio 4 Mobile Edition
Formerly known as Forte for Java, Sun ONE Studio uses NetBeans technology to integrate external modules into the IDE. Sun
ONE Studio comes with three editions: Community, Mobile, and Enterprise for Java. The Community and Mobile editions are free;
Enterprise for Java costs ,995 and has sophisticated J2EE development and deployment features. You can obtain a 60-day free
trial license for Enterprise for Java from Sun's Website.
Sun ONE Studio is distributed online and on a CD. The CD contains all editions of Sun ONE Studio 4 on all supported platforms
as well as J2SE and J2EE. Installation is easy.
Though Mobile Edition comes preconfigured with J2ME support, it has only limited IDE features. You can easily add J2ME development
capabilities to the Community and Enterprise for Java editions by installing a J2ME wireless module. This module conforms
to the NetBeans spec and can be installed with any Sun ONE Studio edition. The J2ME wireless module provides J2ME-specific
templates, wizards, menu items, and compiler and emulator integration, and comes bundled with the J2MEWTK.
One of Sun ONE Studio's strengths is its modular design. Third parties can easily provide components and integrate with the
IDE. Examples of such modules include UML modeling, refactoring, and unit testing.
The Sun ONE Studio's free editions impressed me. Sun ONE Mobile Edition or Community Edition plus the wireless module are
the only free J2ME IDEs I recommend. They provide all-important IDE features for large and complex projects. Community Edition
even provides basic server-side application development features; you can develop servlet and database applications with this
edition. Sun ONE Studio is the only IDE in this article that has J2ME support for non-Windows platforms. The comments below
are based on my experience with Sun ONE Studio 4 Enterprise for Java plus the wireless module. But most apply to the free
Community Edition as well.
Resources
- JBuilder 7 (all editions)
http://www.borland.com/jbuilder/
- JBuilder documentation and tutorials
http://info.borland.com/techpubs/jbuilder/
- Sun ONE Studio 4 (all editions)
http://wwws.sun.com/software/sundev/jde/index.html
- Sun ONE Studio 4 installation guides, documentation, and tutorials
http://wwws.sun.com/software/sundev/jde/documentation/index.html
- Sun ONE Studio developer resources (many good articles, tutorials, sample code, and tips)
http://forte.sun.com/ffj/index.html
- CodeWarrior Wireless Studio 7
http://www.metrowerks.com/MW/Develop/Wireless/Wireless_Studio/Default.htm
- CodeWarrior University
http://www.codewarrioru.com/
- S5 Systems' jVise
http://www.s5systems.com/index.shtml?jVise
- The Eclipse project
http://www.eclipse.org/
- Sun J2ME Wireless ToolKit
http://java.sun.com/products/j2mewtoolkit/
- PersonalJava specification, runtime, and emulators
http://java.sun.com/products/personaljava/
- Forum Nokia is Nokia's developer portal, where Java SDKs for various Nokia devices are available
http://www.forum.nokia.com/main.html
- Reqwireless J2ME libraries
http://www.reqwireless.com/
- For more articles on J2ME and wireless development, browse the Micro Java section of JavaWorld's Topical Index
http://www.javaworld.com/channel_content/jw-micro-index.shtml
- More Wireless Java articles
http://www.javaworld.com/columns/jw-wireless-index.shtml
- Michael Yuan also authored the following JavaWorld articles
-
- For more articles on IDEs, browse the Development Tools section of JavaWorld's Topical Index
http://www.javaworld.com/channel_content/jw-tools-index.shtml
- Browse JavaWorld's Product Reviews index page
http://www.javaworld.com/news-reviews/jw-nr-product-reviews.shtml
- Chat about devices galore in JavaWorld's Device Programming discussion
http://forums.devworld.com/webx?230@@.ee6b808!skip=249
- Sign up for JavaWorld's free weekly Micro Java email newsletter
http://www.javaworld.com/subscribe
- You'll find a wealth of IT-related articles from our sister publications at IDG.net