The (Java) MIDlet Bible
(Note that this Bible does NOT discuss Java applets or applications. For more info on running applets under Windows Mobile, see the Web Browsing Bible; for application-related info, see my generic Java articles.)
You may have already heard at least of Java games (more precisely, MIDlets) running on almost all current â€œdumbâ€ phones. These games are all the rage today, especially with teenagers, which also means there are thousands of sometimes really high-quality games for ordinary phones, all written using the portable Java language, ready to be played on (almost) any kind of mobile phone. Just an example: in THIS HowardForums thread, the topic starter post lists some (but not all!) games available for the Samsung QVGA 240x320 phones (d600, d900, e900 etc â€“ not only Windows Mobile ones!). Quite an impressive list, isnâ€™t it? And itâ€™s just the tip of the iceberg â€“ there are a lot more games, all waiting for you to purchase, download and run!
No, donâ€™t think MIDlets are only for gamers and are absolutely useless otherwise. You can make a good use of them in the enterprise too. There are several solutions already for, for example, mobile payment, reservations etc. done using a MIDlet as opposed to the Web, which is, in a lot of cases, is much harder to access / operate on a small-screen device. Controlling for example your bank transfers via SMS can also be less intuitive and/or require a lot more work / data entry than using a GUI to do this. Other, known enterprise-related MIDlets are Jupiter, which is basically a financial data streaming program (also see THIS) and Betfair (also see THIS). Should you be interested in these â€œMIDlets in the Enterpriseâ€ questions, I really recommend Michael Juntao Yuanâ€™s excellent book â€œEnterprise J2ME: Developing Mobile Java Applicationsâ€ â€“ Iâ€™ve learnt a LOT from it. Highly recommended!
1.1 Microsoft and third party MIDlet manager developers
Unfortunately, Microsoft doesnâ€™t support Java (and its, in this Bible discussed subset, MIDlets) at all. The sole reason for this is the fact that Java is a direct competitor to the .NET (Compact) Framework, and is (also) supported by almost all major competitors of Microsoft; in the telco area, most importantly, Nokia and Sony-Ericsson (S-E), the two major players in producing â€œconsumerâ€, â€œentertainmentâ€, â€œnot-strictly-enterpriseâ€ handsets.
This, unfortunately, means that, under Windows Mobile, MIDlets are not as widely supported as on competing mobile platforms; most importantly, Symbian. Nokia, S-E and the rest have spent a lot of $$$ on implementing really usable and top-notch MIDlet runner environments (MIDlet managers or KVMâ€™s) in the last few years. Microsoft didnâ€™t do the same, only third-party developers, who, because they considered Windows Mobile not to be a gaming platform, didnâ€™t pay much attention to implementing a very good MIDlet manager on the platform (back then, there were far fewer enterprise / productivity MIDlets than today). Just an example: while the mid-2003 Nokia N-Gage certainly lacked at the MIDlet department (very few current games run on it and if they run â€“ for example, the River Storm chopper simulator -, they are almost unplayably slow, as opposed to current Nokia handsets like the N95), the year 2005 Nokia 6680 already had almost flawless MIDlet support. For example, it even supports Bluetooth, which still (as of late 2007) hasnâ€™t made it to the Windows Mobile MIDlet managers, â€œthanksâ€ for the third-party, uninterested, unmotivated software developersâ€™ neglecting the platform.
1.2 Is it worth it for gaming?
The lack of Microsoftâ€™s commitment to the decent support of MIDlets, unfortunately, means Windows Mobile users are, generally, in a far direr situation than owners of phones from manufacturers involved in developing Java further and spending a lot of $$$ on making their Java support as good as possible. A perfect example of this is, as has already been stated, Nokia. Nokiaâ€™s latest, gaming-enabled, top-of-the-line smartphones (most importantly, the PowerVR 3D-accelerated N95 (-3 / 8GB ), the N93(i) (the jBenchmark page is HERE) and E90; the complete list of current phones, based on their 3D benchmark results, can be found HERE) run truly three-dimensional (and, therefore, hardware accelerated) MIDlets considerably faster and FAR better than anything on Windows Mobile. S-E, with its 3D accelerated, touchscreen Symbian UIQ 3 models like the W950, the P990 and the M600, shouldnâ€™t be forgotten either.
1.2.1 3D support
Currently, I donâ€™t know of any Windows Mobile devices with 3D hardware accelerated Java (MIDlet) graphics. The Aplix folks (developers of Jblend) told me their KVM does support the underlying 3D hardware accelerator. Unfortunately, the (very few) models available outside Japan that it comes with preinstalled do not have 3D acceleration and the (comparatively old) Jblend version available for installing on any device donâ€™t show any kind of 3D acceleration support (Iâ€™ve tested this on my 3D accelerated, 2700G-based Dell Axim x51v). Therefore, Iâ€™m not really sure it will indeed work with, say, future GoForce 5500 (currently, the O2 XDA Flame and the Toshi G900 has the CPU (neither of them come with Jblend)) and/or the new Qualcomm 7200 chipset, which is to be found in several last-generation HTC and just-announced I-Mate handsets. I donâ€™t think theyâ€™ll come with Jblend (why would HTC change their MIDlet manager OEM again, only about a year after switching to Esmertec from the dying TAO?) either. Letâ€™s hope for the best (for example, Esmertecâ€™s (re-)introducing M3G support with support for hardware acceleration into Jbed), though.
The situation, now that â€“ unlike with the 2700G and the GoForce 5500 â€“ the Qualcomm MSM7200 chipset will be a de facto standard in many current- and most next-generation WM phones, will surely change in the future. Iâ€™m, however, pretty much sure you wonâ€™t see a 3D accelerated MIDlet manager any time soon under Windows Mobile. Again, software developers still consider Windows Mobile a non-gaming platform not really deserving 3D MIDlet acceleration.
What does this all mean? If youâ€™ve got used to the quality of game MIDlets on your favorite Nokia N93(i)/N95/E90 or Sony-Ericsson handsets, youâ€™ll be pretty much disappointed; particularly if you want to run 3D and/or Bluetooth (multiplayer)-based games.
1.2.2 Bluetooth support
Yes, the lack of Bluetooth is another major problem with all current Windows Mobile MIDlet managers. Donâ€™t think of only multiplayer games â€“ there are other uses of Bluetooth used from MIDlets; an example of them is Blooover (a great Bluetooth Sniffer), data exchange over Bluetooth and so on. You can find more information on the latter for example HERE.
Note that, as opposed to what the 4pda.ru folks stated, few games refuse to deploy / run because of the lack of the Bluetooth support. (See the main games compatibility chart for more info on these titles.)
1.2.3 Sound issues
There will be other problems too if you plan to play the HUGE library of MIDlet games available today. The most important of them is the bad sound emulation, which is quite big a problem with some MIDlet managers severely affecting the gaming experience. Actually, currently, itâ€™s only Esmertecâ€™s Jbed that didnâ€™t have any problems playing back ALL the midi music Iâ€™ve thrown it at (and, of course, that of Nokia on Symbian); all the other (Windows Mobile) MIDlet managers had a much worse sound. In many cases, the music they produced was very hard to even recognize â€“ in a way, they sounded like for example an SNES emulator running on a not-fast-enough Windows Mobile or Symbian phone.
1.2.4 Control issues
Furthermore, youâ€™ll surely be faced control problems. Depending on the MIDlet manager you use AND the game youâ€™re trying to run, you will face sometimes severe control problems. Either the two softkeys wonâ€™t work (not even on Pocket PCâ€™s, where you can also try to use the stylus to â€œpressâ€ them) or the D-pad / Action button, or both. Note that there are some solutions to this problem (particularly if you have a Smartphone (or an, in this regard, similar Pocket PC phone like the Asus A525) with a hardware phonepad). Iâ€™ve elaborated on these questions in a separate article HERE (cross-posted to PPCT, AximSite, XDA-Developers - 1, XDA-Developers - 2, XDA-Developers - 3, FirstLoox, BrightHand, HowardForums, SPT, MoDaCo, PocketGamer.org, PocketGaming.de).
1.2.5 Screen size issues
The question of the screen size and MIDlets displayed in full screen mode should also be mentioned. As MIDlets are, generally, written for a multitude of different devices (to maximize revenue and minimize developing costs), they, generally, support three screen resolutions: 176*208 (the traditional Nokia screen size), 176*220 (the traditional Sony-Ericsson screen size which is, incidentally, the same as that of the traditional Windows Mobile Smartphone) and, finally, QVGA (240*320) â€“ the screen size of the latest Nokia / Ericsson handsets and, of course, higher-end MS Smartphones. And, naturally, Pocket PCâ€™s as well, which, in addition, may also have VGA (640*480) or even WVGA (800*480) screens.
MIDlet games come in two flawors: either dynamically stretching themselves to fill in the entire screen estate of the device they run on in-game (while, in most cases, using the least common denominator, that is, 176*208, to display menus), or fixed to a given resolution. Of course, using the former is preferable (when possible) because you will have a great chance of being able to run it on your even WVGA Pocket PC full-screen. Interestingly, the game speed will, in many cases, remain acceptable even at such high resolutions. This was one of the best surprises Iâ€™ve encountered during my thorough tests.
As opposed to the, technically, much more superior and mature Nokia MIDlet Manager, Windows Mobile KVMâ€™s arenâ€™t, generally, full-screen, which, unfortunately, mean some 20-25 or even 40-50 pixels at the bottom of MIDlets hard-coded to the QVGA resolution will be not shown on QVGA screens, depending on whether the actual MIDlet manager shows both (top and bottom) screen bars (TAO, IBM J9 or Jeodek M3G on the Smartphone platform) or â€œonlyâ€ the top bar (Jeodek M3G on the PPC platform; non- M3G-capable Jeodek on both WM platforms, Jblend). Nevertheless, there will be missing information; in most cases, the softkey labels, but, with many games, also status messages, speedometers and the like. You can find a lot of comparative screenshots in both the previous 3D MIDlet article and the main game compatibility chart. In all these cases (when the missing information does get into your nerves), you will want to try very hard to, first, find a KVM that does full screen (Jbed or, if you can live with the bad or non-existing audio support, the full screen version of Jblend) and if they turn out to be unable to run your title, switch to a MIDlet version written for a device with a smaller screen (for example, the 176*220 version instead of the QVGA one). In the latter case, however, a large part of your screen estate will remain unused.
As far as application programs (Opera Mini, Gmail, Google Maps etc.) are concerned, they all dynamically stretch themselves to make use of the available screen estate; therefore, you wonâ€™t have problems with them on any device, with any MIDlet manager.
1.2.6 (Free) alternatives to MIDlet gaming
As several MIDlets are just rewrites of old classics like Bonk, you may find it useful to look around any online console ROM or abandonware game repository for versions of the game you plan to play. In a top-notch emulator like SmartGear, they might run FAR better than ANY MIDlet manager on your particular handset. Make sure you read ALL my previous, emulation-related articles (the Emulator category of my blog is HERE) to see what gaming console platforms there are and how they are emulated by Windows Mobile.
Just an example. The recently released Bonkâ€™s Return runs MUCH slower (and/or using MUCH more battery) on all my test Windows Mobile devices than the same title under a PC Engine emulator like SmartGear.
All in all, if you find a MIDlet that you find a bit on the slow side, make sure you look around on, say, WikiPedia to see whether the game (originally) had handheld / desktop console versions (or, for that matter, a home computer one â€“ even many home computers of the eighties and the early nineties are better emulated than MIDlets, particularly if you canâ€™t use Jbed because of the compatibility issues). If it did, make sure you check out the console version first, under an emulator. Again, it canâ€™t be stressed enough how important it is for you to thoroughly read through my console/computer emulation-related articles so that you know what emulators there are, how the original titles are emulated under Windows Mobile, what platforms to prefer when there are ports to multiple platforms of a given title etc. Yeah, I know youâ€™ll end up having to spend hours to read all those articles, but, if youâ€™re a hardcore gamer, youâ€™ll certainly find it useful.
1.3 Is it worth it for non-gaming?
It definitely is; most importantly, for Web browsing with the brand new Opera Mini 4 (current, recommended version: beta 2) reviewed HERE. Opera Mini 4 is a freaking good and, what is more, FREE Web browser â€“ in many cases, itâ€™s preferable over all the other Web browsing solutions available for Windows Mobile.
There are other productivity MIDlets meant for non-vertical markets too; the most important example of this is the Gmail MIDlet, which offers a very nice alternative to browsing, searching, answering etc. your Gmail mailbox from your handheld, including Windows Mobile ones. Itâ€™s WAY better than any Web-based solutions (see the Web Browsing Bible for the whyâ€™s) and, given that it allows for using some really advanced functionality (for example, searching) on the server side (this wasnâ€™t available before; now, Gmail has just implemented IMAP access (another, related PPCT thread), which might let do this from a capable IMAP client as well â€“ see my IMAP Bible for more info), it might still be preferable on a device that, otherwise, is properly configured to access Gmail via POP3. You may also want to take a look at THIS, THIS, THIS, THIS and THIS thread / article too.
Note that now that Google has released an excellent, native Windows Mobile version of the client, (as of the current, 22.214.171.124 version) the need for the MIDlet version of Google Maps is decreased. The native version works just great on both WM platforms and is accessible HERE for download as a directly installable CAB file. Note that there may still be cases you will want to prefer the MIDlet (that is, non-native) version of this program; see for example the comments HERE, where user â€œfixupâ€ complains of the native versionâ€™s keeping the backlight and the connection on (as opposed to running the Java version under a MIDlet manager), which both may lead to (vastly) increased battery consumption.
Finally, as you most probably WILL want to run at least Opera Mini (or its modded version) on your device, the answer is YES.
2. Available MIDlet managers
In this chapter, I give you a thorough overview of what current (!) MIDlet environments there are, how they compare to each other and which one you should prefer. As youâ€™ll see, particularly if youâ€™re a power user and/or player, you will want to keep different KVMâ€™s on your Windows Mobile handheld simultaneously so that you can make use of the functionality of each of them (thereâ€™s no â€œbestâ€ KVM â€“ unfortunately, the otherwise best Jbed lacks some functionality only provided by other KVMâ€™s).
Note that I donâ€™t provide you download /purchase links here. You can find all of the download sources and / or accessibility remarks in the main chart, in the second, â€œPrice / availabilityâ€ row.
Also note that this is just a sketchy list of what KVMâ€™s there are and what (dis)advantages they have. For a full list of tips, tricks, capability and problem lists, you MUST consult the above-mentioned main chart. Note that, in Chapter 4, I will also elaborate on the meaning of the rows in the chart.
2.1 Esmertec Jbed
This is by far the best and most recommended KVM for Windows Mobile, (QVGA; NOT 176*220 â€“ on the latter, it refuses running deployed MIDlets) Smartphones and Pocket PCâ€™s alike. Its only problems are the lack of M3G (3D gaming) support and the inability to run more than one MIDlet concurrently. As with the other products of Esmertec, it isnâ€™t compatible with pre-WM5 operating systems and needs to be â€œhackedâ€ in order to be able to run it on non-Phone Edition Pocket PC devices. (See the â€œPlatform compatibility: non-phone PPCâ€ row in the main chart to see how this hacking must be done.)
Note that the latest, currently available Jbed version has problems with the cookie handling of Opera Mini 4 beta 2. This means you canâ€™t log in to many (but not all; for example, Yahoo Mail works) Web sites with OM4b2 running under Jbed. As this isnâ€™t an issue with Opera Mini Mod 2.04/2.05, this seems to be a problem exclusively with the given Opera Mini version and not that of Jbed. If this is a problem, consider switching to another MIDlet manager (for example, Jeodek), where the cookies of Opera Mini 4 beta 2 do work.
2.2 Esmertec Jeodek
There are, basically, two versions of this KVM. The non-M3G-enabled, newer version isnâ€™t really recommended (Jbed is definitely better in almost every respect, except for the Opera Mini 4 beta 2 cookie issues). There is, however, an older, M3G-enabled version out there, which allows for playing a wide variety of games. Iâ€™ve explained how the latter should be used HERE, in the 10/11/2007 update. That is, if youâ€™re into gaming, you might want to go for the M3G version; otherwise, I recommend upgrading / switching to Jbed.
2.3 IBM J9
This is a well-known but, now that both Jblend and the two product lines of Esmertec are considerably better in most respects (except for some deliberate questions like the ability to run multiple MIDlets at the same time, in which itâ€™s, together with TAO Intent, is clearly better than Esmertecâ€™s products), not any more recommended KVM. You should prefer Jbed to it and only consider using it if you do need J9â€™s special capabilities or its compatibility with pre-WM5 operating systems.
Note that, lately, IBM has made much harder to download a trial version of J9 if youâ€™re situated outside the States.
2.4 TAO Intent
This is the MIDlet manager having come with almost all HTC-manufactured WM5 Pocket PCâ€™s and Smartphones. Now that the developer no longer exists, the HTC folks have switched to Esmertec Jeodek / Jbed instead (and independent MS Smartphone / PPC PE manufacturers like Sharp or Samsung prefer Aplix JBlend instead). However, this still means thereâ€™s a HUGE number of installed userbase of this MIDlet manager.
Currently, two major releases of these titles are widely used: the 10.1 series (also compatible with WM2003(SE) and the MS Smartphone platform) and the latest 11.1 series (the latter being only WM5+ & Pocket PC-compliant).
In general, you will want to prefer Jbed to this title. It has only few areas where itâ€™s clearly better. Just like with IBM J9, in addition to WM2003(SE) support, it also supports running MIDlets concurrently.
If you have a (non-rebranded!) HTC WM6 Pocket PC device, go for the latest, .1036 version; otherwise (you have a rebranded and/or WM5 device), go for .1034. Should you have a plain (non-phone) Pocket PC, make sure you apply the SMS.dll / Phone.dll hacks already mentioned with Jbed.
Note that, at 4pda.ru, there is a separate â€œturboâ€ version. While I havenâ€™t really measured remarkable speed increase with the jBenchmark tests, many users have reported generic speedup with at least starting / loading MIDlets. This is because many library files have been decompressed by the creator, meaning no decompression needed in runtime. This may indeed result in some speed increase. (Note that this trick doesnâ€™t work the 10.1-series TAO Intent MIDlet managers (MMâ€™s); this is why only the new series has a separate â€œturboâ€ version.) Note that this also means this version occupies about two times more storage than the non-turbo one; therefore, if you have little built-in storage, consider installing it on a storage card. Also, itâ€™s a bit older (version 1023) than the â€“ currently â€“ latest, 1036 version.
2.5 Aplix JBlend
This OEM MIDlet manager comes with, compared to Esmertecâ€™s KVMâ€™s, very few Windows Mobile models. Compared to Jbed, it has both advantages and disadvantages; for example, it supports M3G (and, therefore, far more games) BUT it doesnâ€™t support midi / MP3 playback (that is, you wonâ€™t really hear music anywhere) and has a messed-up security model making it pretty useless for Net access like Opera Mini or Gmail. This means you will only want to use it for gaming â€“ if the other two, decent alternatives (the M3G-enabled Jeodek or Jbed) donâ€™t work or work slower.
In THIS HowardForums thread, youâ€™ll find many titles compatible with this MIDlet manager; and, of course, my main games compatibility chart will provide you with a lot of additional compatibility information with current MIDlets.
2.6. Not recommended KVMâ€™s
Note that the charts (and this tutorial) don't elaborate on the following MIDlet managers:
2.6.1 NSICom CrE-ME
This manager is still (as of version 4.12) pretty weak (MIDP 1-only, really low resolution, problems with connecting to the Net, pretty complicated to install a MIDlet etc.). This means it, in most cases, should not be used. Strange the developers still call it "the world's most reliable J2ME/CDC Java Virtual Machine technology for Embedded platforms". While CrE-ME is without doubt the BEST JVM out there right now for running individual applications / applets (which are vastly different from MIDlets), its MIDlet support is really bad.
2.6.2 Coretek Delta Java Manager
This MIDlet manager is only slightly better than NSICom's above-mentioned CrE-ME. While it's compatible with quite a few games, it has severe problems; most importantly, its utilized screen estate is tied to 176*220 (fortunately, itâ€™s pixel doubled on VGA devices). This means you won't be able to run your MIDlets using the real, full screen estate of your QVGA / VGA / WVGA Pocket PC's or QVGA Smartphones. Therefore, I only recommend it if you want to run MIDlets tied to 176*220 (or smaller) screen sizes and/or you have a 176*220 MS Smartphone.
2.6.3 Mitac JVM
This is an old (2003), pretty bad and not recommended MIDlet manager.
END OF PART I â€“ PART II CONTINUES HERE