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.
- General productivity features: Sun ONE Studio has a powerful project manager and object browser based on mounted file systems. You can easily access any object or build target in a project. Sun ONE Studio also features a powerful Java source code editor and debugger. In addition, Sun ONE Studio integrates nicely with third-party productivity tools such as Ant, CVS, and JUnit. Advanced architectural design, refactoring, testing, and UML support for Sun ONE Studio are available from third-party NetBeans add-on modules.
- Third-party SDK integration: Sun ONE Studio comes with J2MEWTK only, but since it supports the UEI, you can integrate more SDKs with just a few mouse clicks. Sun ONE Studio does not support non-MIDP J2ME platforms, such as PersonalJava.
- Post-compilation tools: Sun ONE Studio does not include a built-in Java code optimizer or obfuscator.
- OTA deployment support. Manifest and jad files generate automatically in Sun ONE Studio. Since the IDE contains a built-in Tomcat application server, the deployable files can copy directly to the OTA preconfigured server, a unique and convenient feature. Application deployment can also be done remotely via FTP. Sun ONE Studio does not integrate OTA JAM clients.
- End-to-end mobile application development: Sun ONE Studio Enterprise for Java with the mobile module provides an excellent platform for end-to-end mobile application development. It even has a kSOAP (Simple Object Access Protocol) plug-in for automatically generating Web services clients for mobile applications. As I mentioned, even the free Community Edition has strong support for non-EJB backend application development. More advanced enterprise features are also available from third-party plug-ins, such as Agea's Wireless Enterprise Suite for Forte, designed to support end-to-end mobile applications in Sun ONE Studio.
- Documentation and tutorials: Sun ONE Studio comes with good documentation and tutorials. The documentation is available online and included electronically in its distribution CD. Sun ONE developer Websites offer free articles and tips.
- J2ME GUI builders: Sun ONE Studio lacks a visual GUI builder.
Metrowerks CodeWarrior Wireless Studio 7
Metrowerks CodeWarrior Wireless Studio 7 Professional Edition comes with two installation CDs and two guidebooks. One guidebook shows you how to get started with Wireless Studio; the other is a general CodeWarrior IDE manual, which is not Java specific.
CodeWarrior does not have a free or evaluation edition. The Professional Edition I reviewed costs 99 if you buy online. However, the company does have discounted software for noncommercial academic users (19 per license). CodeWarrior Wireless Studio 7 only runs on Windows platforms.
Installation was smooth. CodeWarrior includes everything from basic Java 2 SDKs to all kinds of third-party emulators and compilers on the CD. So you don't need to pause the installer and download required software from the Web. After installation, CodeWarrior also automatically checks its online SDK update center to ensure all your third-party SDKs are up to date.
CodeWarrior Wireless Studio's third-party partnerships really impressed me. The installation package is bundled with useful products, such as iBus Mobile mobile messaging systems and PointBase micro SQL databases. Wireless Studio Enterprise Edition (produced together with Agea, currently only available to corporate customers) also integrates with Agea's mobile business acceleration suite. Users can access those packages directly from the IDE, which saves time in downloading those products from their individual Websites and configuring them to work with development tools. The bundling also helps promote these third-party products among wireless developers. So this is indeed a three-win situation. I hope more IDE vendors follow suit.
- General productivity features: CodeWarrior has a fine set of standard IDE productivity features, including source editing, building, and debugging. Since CodeWarrior debugger supports remote debugging over the TCP/IP network, it is well suited for wireless application on-device debugging, an important feature. CodeWarrior does not have architectural-design and development-process automation features. I do not particularly like CodeWarrior's project manager. By default, it does not display source files according to their Java package hierarchies. Though this design lets you group source files arbitrarily across package boundaries, I do not find this feature useful. I prefer to have classes organized in packages and displayed accordingly.
- Third-party SDK integration: CodeWarrior supports many third-party MIDP SDKs out of the box, including J2MEWTK, Motorola, Sony-Ericsson, Siemens, Sprint PCS, and Nokia SDKs. CodeWarrior supports UEI for future SDK integrations. CodeWarrior is the only IDE in this review that supports PersonalJava application development as well as MIDP. In addition to Sun's PersonalJava reference implementation and emulators, CodeWarrior supports Insignia Jeode and Sharp Zaurus SDKs, resulting in an IDE capable of developing high-end mobile applications. CodeWarrior designers were thoughtful in making the JVM/runtime switching process especially easy for developers: you can switch the entire runtime context (JVM and libraries) with one mouse click.
- Post-compilation tools: CodeWarrior provides its own proprietary tools for obfuscation, code reduction, and optimization. Those tools are built into the IDE and can be easily configured.
- OTA deployment support: CodeWarrior supports automatic generation of manifest files conforming to OTA specifications. It has an FTP client for deployment but does not provide built-in OTA servers or OTA client JAMs.
- End-to-end mobile application development: The Professional Edition I reviewed does not directly support server-side application development. However, the bundled PointBase and iBus Mobile products enable you to develop sophisticated high-end wireless applications utilizing local databases and messaging services. So, although you cannot develop server components in CodeWarrior, it provides tools to implement some server functionalities on high-end wireless devices and middleware. CodeWarrior's Enterprise Edition (produced together with Agea, currently only available to corporate customers) may support end-to-end applications from a single IDE environment.
- Documentation and tutorials: CodeWarrior offers training services through the online CodeWarrior University, which has free online courses taught by well-known industry experts. The CodeWarrior University Website currently features Eric Giguere's 50-week MIDP introductory course. In-depth CodeWarrior Wireless Studio tutorials and articles, however, are hard to find on the Internet. Overall, compared with JBuilder and Sun ONE Studio, I found CodeWarrior documentation weak.
- J2ME GUI builders: CodeWarrior provides visual GUI builders for both MIDP LCD (liquid crystal display) GUI components and PersonalJava AWT (Abstract Windowing Toolkit) components. Those builders are conveniently accessible from multiple wizards.
jVise from S5 Systems
The jVise IDE is based on the open source Eclipse project. Eclipse itself only provides a core set of IDE functionalities in a runtime engine. However, the design philosophy behind Eclipse is to leverage the open source community efforts. Vendors or individual developers can add additional features and extend the Eclipse IDE through plug-ins. The plug-in specifications and standards are completely open. Since Eclipse source code is covered under the IBM Public License, vendors can bundle and distribute value-added plug-ins with the entire core IDE in their product CD or download.
S5 Systems develops J2ME/MIDP compilers, libraries, and runtime environments as Eclipse plug-in modules. Those modules enable Eclipse to compile J2ME source code and execute J2ME applications. J2ME-compatible Eclipse plug-ins are only a small part of jVise. Its real value comes from S5 Systems' proprietary J2ME obfuscation, code reduction, J2ME application verification, and Java Post Processor tools that are built into jVise.
Please note that jVise software is still in alpha stage, so comparing jVise directly with the other commercially available IDEs reviewed in this article would prove unfair. S5 Systems offers a free download of jVise's alpha version for evaluation and testing purposes.
Although Eclipse itself runs on many platforms, jVise's proprietary J2ME optimization software only runs on Windows. The jVise download package contains the entire Eclipse core, S5 Systems add-on modules, several bundled wireless SDKs, and documentation.
- General productivity features: The Eclipse core powers jVise's general productivity features. Eclipse provides basic editing, building, and debugging support. However, since J2ME debugging requires the IDE to interact with a J2ME-compatible JVM, Eclipse's standard debugger does not work in jVise alpha. jVise will have J2ME debugging support before its final release. Eclipse integrates seamlessly with third-party open source tools such as CVS, Ant, and JUnit. Though jVise's Eclipse core does not support architecture design, and visualization, individual plug-ins are available for those tasks.
- Third-party SDK integration: jVise comes integrated with J2MEWTK, Nokia, Sprint PCS, Siemens, and Motorola SDKs. You can integrate any UEI-compatible third-party SDK with jVise. The IDE is configured for MIDP, but does not support PersonalJava.
- Post-compilation tools: As I mentioned, J2ME code obfuscation, size reduction, J2ME application verification, and post processor tools are jVise's most important features. Comparison numbers on S5 Systems' Website show that jVise can generally perform about 10 to 20 percent better than major competitors, which represents real value in the J2ME space, where computing resources are extremely limited. jVise's J2ME application verification validates J2ME applications against devices. It identifies resources an application uses and matches those resources with those available on devices. Thus, it can generate a list of compatible devices for any given J2ME application. The J2ME post processor (currently in development) will process existing applications for deployment to specific devices (e.g., change images' color depth) to make maximum use of device recourses.
- OTA deployment support: jVise generates manifest files and jad files automatically for deployment. It supports deployment to remote or local servers via FTP or copying, but you must configure the server to support the correct OTA meta types. jVise does not integrate client-side OTA-compatible JAMs to verify and test deployed applications.
- End-to-end mobile application development: jVise develops and optimizes wireless client-side software. The Eclipse core shipped within jVise does not support server-side application development. However, you can add numerous enterprise-oriented Eclipse plug-ins to the IDE. Currently, jVise does not include any enterprise-specific libraries or APIs. In the future, jVise will include Reqwireless and wSOAP (Wingfoot SOAP) API libraries in the IDE for enterprise mobile application development.
- Documentation and tutorials: jVise has built an online help system into the IDE. However, the documentation and tutorial proves inadequate, when compared with other vendors.
- J2ME GUI builders: jVise does not provide a visual GUI builder.
In summary, JBuilder Enterprise has the most powerful set of features. But it is by far the most expensive. Sun ONE Studio Community Edition plus mobile module is the best free IDE. Sun ONE Studio Enterprise for Java offers an adequate compromise between useful enterprise features and reasonable price. CodeWarrior is the only IDE that supports PersonalJava for high-end PDA devices. This IDE also provides strong mobile middleware development support. S5 Systems' jVise specializes in mobile application optimization and source code protection.
Each of the four IDEs reviewed in this article provides reasonable J2ME application development support. If you are already comfortable with a particular IDE's standard or enterprise version, you don't need to switch to another.
Learn more about this topic
- JBuilder 7 (all editions)
- JBuilder documentation and tutorials
- Sun ONE Studio 4 (all editions)
- Sun ONE Studio 4 installation guides, documentation, and tutorials
- Sun ONE Studio developer resources (many good articles, tutorials, sample code, and tips)
- CodeWarrior Wireless Studio 7
- CodeWarrior University
- S5 Systems' jVise
- The Eclipse project
- Sun J2ME Wireless ToolKit
- PersonalJava specification, runtime, and emulators
- Forum Nokia is Nokia's developer portal, where Java SDKs for various Nokia devices are available
- Reqwireless J2ME libraries
- For more articles on J2ME and wireless development, browse the Micro Java section of JavaWorld's Topical Index
- More Wireless Java articles
- Michael Yuan also authored the following JavaWorld articles
- "Build Database-Powered Mobile Applications on the Java Platform" (January 2002)
- "Track Wireless Sessions with J2ME/MIDP" (April 2002)
- "Java Tip 126Prepare Cross-Server Database Access Methods with JDBC" (April 2002)
- For more articles on IDEs, browse the Development Tools section of JavaWorld's Topical Index
- Browse JavaWorld's Product Reviews index page
- Chat about devices galore in JavaWorld's Device Programming discussion
- Sign up for JavaWorld's free weekly Micro Java email newsletter
- You'll find a wealth of IT-related articles from our sister publications at IDG.net