The FAQ has moved!
Please update your bookmarks with the new location:
http://blog.vikdavid.com/2004/12/java_on_pocketp.html
Why the move? I've moved the FAQ to my blog because people can post public comments there. Thanks!
What JVMs are available for PocketPC devices?
This is probably the most popular question and biggest barrier for Java on PocketPC. The answer is simple: use IBM's J9 JVM or NSICOM's CrEme JVM. There are several other JVMs on the market, but they all suffer from these problems: not supported anymore (Sun's PersonalJava), not fully Java compatible (SuperWaba), not fully Java compatible (EWE), on sale to OEMs only (Esmertec JBed, formerly Insignia Jeode), or out of date (Insignia Jeode).The pricing options for IBM's J9 JVM are very good at $5.99/each and discounts for bulk. If you are an individual developer, this is for you. NSICOM's Creme JVM has a free trial download, plus they sell a developer license of 40 units for $1000, and also offer discounts for bulk.
IBM J9 can be purchased from Handango for $5.99, and NSICOM Creme can be purchased directly from NSICOM.
Is there a free PocketPC JVM?
A reader of this FAQ alerted me to the Mysaifu JVM which seems to be free. This was first released on April 16, 2005 so it's very new, and I haven't tried it out yet. Benjamin Brown made an effort to ask Sun about a free PocketPC JVM [Read Java Forum thread here, and related Slashdot article here]. There is a rumor that Sun has a project code named "Captain America" which is a free PocketPC JVM, but cannot release it because the market-demand to support such a product is not there. With all that said, the IBM J9 JVM is only $6/unit, which is not a bad price. :-)More information on PocketPC JVM's:
- Mikko Kontio's Java on PocketPC devices for InformIT Magazine (Oct 22, 2004) [link]
- Stan Berka's JAVA for PocketPC PDA's (Oct 2004) [link]
- Dan Fitton, Rod Montrose's summary of Java Support on Pocket PC's [link]
- Rick Grehan's Deliver Big Functionality on Small Devices (summer 2002) [link]
What books are available for Java on PocketPC?
There are a LOT of books that claim to cover J2ME. However, they usually cover only cLdc/Midlets and not CDC/PocketPC. Here are a couple that I found useful:

- Java Development on PDAs: Building Applications for Pocket PC and Palm Devices by Daryl Wilding-McBride.
- Enterprise J2ME by Michael Juntao Yuan. This one has both CDC and cLdc coverage and broadly covers both topics with several code examples.
What blogs are relevant for Java on PocketPC?
There are no specific blogs dedicated to this topic, but there are some general J2ME related blogs:
Is there an IDE for Java on PocketPC development?
There are several IDEs that claim to be J2ME-aware. But my experience is that they only include functionality for Midlets, or J2ME/cLdc. Not for J2ME/CDC. However, the good news is that since J2ME/CDC APIs are so close to regular desktop Java (J2SE) APIs, you can get away with using your regular Java IDE!
Where can I get more information on the IBM J9 JVM?
IBM uses a couple of different marketing names for this product. "J9" is the name of the actual JVM, although I've seen it referred to as "IBM WebSphere Everyplace Micro Environment". IBM also sells an Eclipse-based IDE called "WebSphere Studio Device Developer" (WSDD) for around $600 that includes IBM J9.IBM's Ottawa Software Lab makes IBM WebSphere Everyplace Micro Environment (aka J9 JVM). You can purchase it directly from Handango for $5.99 per unit.
Where can I get more information on the NSICOM Creme JVM?
NSIcom makes the CrEme JVM for PocketPC devices. There is a trial download available on the NSICOM website. The DHTML navigation on their site doesn't work with Firefox 1.0 Preview Release, so use IE or something.
Related article: Dec 2001 Rick Grehan's Get CrEmed for JavaPro Magazine, published Dec 2001; Summary: "CrEme, a descendant of the Java Software Coprocessor from NSIcom, is a Java virtual machine for Windows CE devices that has some clever plumbing".
What happened to the "free" Jeode JVM that came with iPAQs?
Insignia ran into financial trouble and sold Jeode to a Swiss company called Esmertec. Esmertec already had an OEM-only JVM product called JBed. You can buy Esmertec Jeode for $49.99 for Dell AXIM or PocketPC 2002 devices. I have not used this product after Esmertec bought it, but be careful, the sale page seems to mention "PersonalJava" compatibility, which is the older pre-J2ME/CDC spec. It's also much more expensive than either J9 or Creme.
What User Interface API should I use?
If you were writing a regular desktop Java application, your options would be AWT, Swing or SWT. Theoretically, you have the same options available for Java on PocketPC. I've personally used AWT and know that it works well. If you're thinking about Swing, I'm not sure it's available by default on IBM J9 and NSICOM Creme. Even if it is, keep in mind that Swing may be less performant than AWT or SWT since it does not use native widgets. On PC's, this may not be an issue anymore, but since PocketPC's are less powerful devices it's worth taking into consideration. Read Stan Berka's note [link] and Pat O'Neil's note [link].The newer SWT API sounds promising. Check out Christophe Cornu's A Small Cup of SWT (Sep 19, 2003) and Glen Smith's First PocketPC SWT App (Nov 2004). Also the official SWT site is here [link].
What SQL databases are available?
This is one of CDC's strength's over cLdc/Midlets. You can use a regular SQL database and program to the JDBC API you're already familiar with.Here is a list of options:- PointBase - $$ commercial, pure Java, designed from the ground up for high-performance, small footprint, mobile devices.
- Oracle Lite - $$ commercial, native binary for PocketPC.
- Sybase SQL Anywhere (ASA) and Native Ultralite for Java - $$ commercial, native binary for PocketPC and ative Ultralite for Java.
- IBM Cloudscape aka Apache Derby - free/open-source, pure Java. I haven't used this on PocketPC, but it is pure Java with a small footprint, so it should work with J9 or Creme on PocketPC.
- Microsoft SQL Server CE - I believe this is free if you own a SQL Server license, and I'm not sure if there is a good JDBC driver (not the JDBC-ODBC bridge) for the SQL CE edition.
Can I run Java Applets on PocketPC?
Yes, I know Esmertec Jeoede JVM comes with a plug-in for Pocket Internet Explorer to view Java Applets on PocketPC. It's stored in \Windows\iepluginvm.exe. There is a sample HTML with an applet under: Windows\iexplore.exe \windows\lib\Quasar.html
What is the difference between cLdc/Midlets and CDC/PP?
CDC/PP stands for Connected Device Configuration with Personal Profile. cLdc/Midlets stand for Connected LIMITED Device Configuration with Midlets. In a nutshell CDC/PP has a lot more APIs and is geared toward more powerful mobile devices. Russell Beattie explains the difference in his blog here and here.Links to external articles
Eric Giguere's Personal Basis Profile vs. Personal Profile: What's the Difference?
Sun's Programmer's Guide, J2ME Personal Profile v1.0 [PDF]
Sun's archives of J2ME-CDC-Interest Mailing List
-->