Related
The Web browsing scene has been completely changed since I published the previous version of the Windows Mobile Web Browsing Bible, the well-known (it has been frontpaged by Pocket PC Thoughts and made sticky by MobilitySite; the AximSite, BrightHand and the FirstLoox copy is also worth checking out for more reader feedback) source for the (then) all Web browsing-related information. Even though I've posted on all major (and, most of the time, even minor) releases at least one article / review ever since them, there still remained a huge demand for an all-in-one article / Bible that discusses the current state of Web browsing on the platform and thoroughly compares the available solutions, while also including mostly WM5 / WM6-related compatibility information. This means I had to retest almost everything, along with greatly enlargening the scope of the roundup.
A quick notice: you don’t need to even read the previous version of this Bible. It’s only at very few areas of discussion (most importantly, the MultiIE / PIEPlus macros and the Thunderhawk cookie bug) that the reader is referred back to it. I, however, recommend it if you’d like to find out more (comparative) information on ftxPBrowser, the only browser not present in the current Bible (along with my article “Do you know ftxPBrowser?").
First and foremost, do you need Web browsing at all? Why don't you want to prefer offline web browsing via, for example, RSS readers or Web extractor tools like my old Mobipocket Companion Suite for Java programmers? The answer is very simple: lately, Internet access has become really cheap and - with the models released in the last two years and given that mobile operators also very aggressively extend their fast (EDGE / 3G / HSDPA, as opposed to plain GPRS) Internet coverage - traditional Pocket PC's not containing a built-in phone have almost entirely been phased out. This all mean it's much more feasible to browse the Web through an (online) Web browser than a(n offline) news aggregator.
First, let's take a bird's view on the current state of Windows Mobile-based Web browsing.
Fortunately, since the publication of the previous version of this Bible, the available Web browsers have really been enhanced. There are no Web browsers (except for the pretty expensive Thunderhawk and the long-abandoned ftxPBrowser) without major upgrades. The current versions of ALL (other) Web browsers are orders of magnitude better than back in 2005. Furthermore, there are two brand new players on the scene: Opera (with no less than two excellent browsers) and Microsoft Live (with DeepFish, a currently still pretty incapable but still promising browser with probably bright future).
Let us list and quickly evaluate the currently available Windows Mobile (WM for short) Web browsers. Note that in here I don't elaborate on all the (missing) features of all the listed applications; it's in the feature / benchmark / comparison chart (and its explanation) that I do this. I need to point out that, should I have chosen a non-chart-based roundup, the results would be far less comparable. That is, let's assume you look for a browser that allows for direct image saving. Should I have refrained from including the Image in the Context menus and the Save Image As in the Images group, I would have ended up having to elaborate on the image saving capabilities of each and every Web browser in this very article. It would not only have resulted in an article at least ten times longer, but also results that are far harder to compare. You would end up having to make some extensive text searching taking a LOT of time to see how, say, Minimo, Thunderhawk and PIE compare in the area of image saving. With the chart, you just scroll down to the given row and you see at once which of them supports image saving. See the advantage of using feature charts?
1.1 Pocket Internet Explorer (PIE) / Internet Explorer Mobile (IEM) (current version: WM6)
(Note that, while the name “Pocket Internet Explorer” has been changed to Internet Explorer Mobile in Windows Mobile 5 (WM5), I generally refer to this browser as PIE for clarity and simplicity.)
This is the browser you everyone may know. While it’s still lacking some basic functionality (for example, quality scripting and style support and, of course, multitabs), it has really been enhanced in the last two years.
First, it has become MUCH more stable. Before WM5, PIE was widely known for crashes upon encountering certain style sheet (CSS) / HTML structures, of which I've also frequently published reports (example here). Recently, with WM5 versions of PIE, I have never run into similar situations.
Second, it's, now, much faster than before the WM5 (or, more precisely, the WM5 AKU2 - see this and this for some benchmarks in order to be able to compare the speeds of the pre-AKU2 and post-AKU2 browsers; as can clearly be seen, AKU2 brought approximately 50% speed increase on exactly the same WM device, under exactly the same circumstances) times. It's not as fast as the best and fastest Web browsers around (Opera Mobile being the one that is in every respect faster than PIE; so are server-based solutions like Opera Mini) but is already very good, speed-wise, particularly if you relocate the cache to a fast medium (for example, a RAMdisk; more on this later). This particularly applies to the case of navigating back to a page by using the Back button. Rendering just-visited pages will be done almost instantly, as opposed to previous versions.
Third, a lot of other, new nice additions have been made to PIE. Most important of them is the ability to disable pixel doubling and the introduction of Iframe support in Windows Mobile 6 (WM6 or Crossbow).
Unfortunately, however, it still suffers from some severe problems. The most important of these is the lack of being multi-tabbed; that is, support for browsing the Web in more than one windows (tabs). Furthermore, it still lacks proper (!) JavaScript support (let alone AJAX, which it doesn't support at all).
Note that while, per se, it doesn't support Macromedia (Adobe) Flash and Java applets "out of the box", it’s still the best browser in that it lets for using so-called "plug-ins" that add Flash and Java support. In this regard, it's unmatched - only the latest (8.65) version of Opera Mobile offers the same functionality - and for Flash "only", meaning no support for Java applets at all.
1.2 Opera Mobile (current version: 8.65)
Opera, which is, in many respects (for example, CSS compliance and support for really flawless zoom-in, which is particularly important on high-resolution (for example, UXGA) notebook screens - not even the latest version (version 7) of Internet Explorer is capable of the same), hands down the best browser on the desktop Windows, has been ported to Windows Mobile.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
While the first beta, particularly on WM2003 and WM2003SE, was pretty useless (for example, it received really bad reviews from me - you, therefore, can't say I'm biased towards Opera ), the excellent folks at Opera have fixed almost all of these issues for the first commercial version (8.60) released June 2006 and the rest for the second major version bump (8.65) in April 2007. (I'd like to point out that I've also worked for them as a betatester during the development. That is, you can also thank me for Opera Mobile's being so darn good now ;-) ). Now, Opera Mobile is hands down the best Web browser in terms of pure speed, approach to caching, memory usage and standards compliance.
Note that while the desktop version has long been using the 9.x kernel, the WM port based on the new and even better (for example, it has FULL CSS2 compliance!) 9.x kernel will "only" be released later this year and will only be compatible with WM5 and later.
1.3 Opera Mini (current version: 3.1.7196)
The free, but still very capable Opera Mini, the little brother of the above-introduced Opera Mobile, is unique in that it's a Java midlet. This means it's not a native Windows Mobile application but it requires a midlet manager to run.
If you have a Windows Mobile device with a built-in phone (that is, in the pre-WM6 parlance, a "Phone Edition" device), then, you most probably have a midlet manager on your device, which, with most HTC models (ones that are rebranded by HP - for example, the hw6915 - have a different midlet manager), will be that of Intent. The Intent Midlet Manager is a very capable and nice application you won't want to get rid of. Note that if you have a WM5 Phone Edition (or WM6 "Professional", which means the same) device, you can separately download the Intent Midlet Manager here.
If you can't (because you have a pre-WM65 (Pocket PC 2002 or WM2003(SE)) model or, for some reason (for example, the lack of WM5+ softkey support) don't want to use Intent Midlet Manager, your best choice will be the J9 midlet manager by IBM, of which version 6 is pretty capable and highly recommended.
There are a lot of major differences between the midlet-based Opera Mini and fully-fledged, "native" Web browsers. First, the good.
Opera Mini is free (!) and offers unbeatable advantages over almost all of its competitors. For example, it runs on even memory- and CPU-constrained devices without ever consuming your memory. Just an example: a large(r) Web page can take up Megabytes of the already pretty meager RAM of your WM device. Current WM5 devices have, in general, less than 30 Mbyte and 12M available with models originally having 64M and 32Mbyte of RAM, respectively; 32Mbyte RAM devices inlude the well-known Treo 700w and the HP iPAQ rx1950. This also means you can have dozens (!) of even large Web pages open at the same time, you will still not run into resource problems. You can't do the same with "native" Web browsers - not even with the, in this respect (too) best Web browser, Opera Mobile.
Also, in addition to using little memory to render (and store) your pages on, it also excels at minimizing the communications overhead. The central proxy server Opera Mini uses makes a great job at stripping "unnecessary" contents (HTML page layout, dynamic JavaScript scripts, CSS style sheets etc.) off Web pages; this also results in heavily reduced bandwidth usage, which may be of paramount importance if you either have a slow (say, GPRS only) connection or you need to minimize data usage.
Now, the bad. It certainly lacks a number of very important features; for example, you can't select any text on a Web page and just copy it to the clipboard of your device. Furthermore, should you have a volume slider on your WM phone (earlier WM5 models almost all had; it has been, later, changed to a scroll wheel by HTC), you can't use the excellent tool SmartSKey to scroll a page up/down. Also, while the one column-based rendering mode is very useful particularly on low-resolution (QVGA (240*320) or square-screen (240*240)) devices, the inability to switch to a view more closely modeling the original page layout may become problematic with some kinds of Web pages (for example, the RedHotPawn online chess application or the Web-based Google Maps). It has no access to the standard Web favorites of PIE either. The text / address input method of the Intent Midlet Manager can also be a problem, along with the lack of WM5 softkeys (in this respect, IBM J9 is certainly better). Finally, it has some other, minor problems and shortcomings; for example, the lack of file upload support, which is supported by most of the other "native" browsers.
All in all, I really recommend this browser. For a free one, it's certainly worth a try and/or leaving it on your WM device installed. Also make sure you periodically check back to the homepage of the Windows Mobile-compliant (advanced) version because it's updated very frequently, introducing new features all the time.
Note that, as far as IBM J9 is concerned, it's in the above-linked article that I've explained how Opera Mini should be deployed under it. With the Intent Midlet Manager, it's even easier to deploy the file: you
Download the JAR file (you won't need the JAD file!) from here and transfer it to your PDA
You fire up File Explorer on your PDA and click the just-downloaded JAR file. It'll be auto-deployed to the Intent Midlet Manager.
1.4 NetFront (current version: 3.3; future version with already available demos: 3.4)
NetFront is also a well-known Web browser for the WM platform. While back in the Pocket PC 2002 / WM2003 / WM2003SE days it was the king of all WM browsers, the currently available, non-demo state version of it, 3.3 (released slightly less than a year ago) does pale in comparison to the alternatives in most respects. For example, its built-in Flash support is definitely inferior to that of PIE and Opera Mobile and it's highly unlikely Access, the developer of NetFront, will ever fix these issues. (For example, I've reported on a very bad DST bug in NetFront almost two years ago. Access still hasn't fixed it. No comment.) Furthermore, its JavaScript (and AJAX) support and rendering speed are much weaker / worse than that of Opera Mobile and the list continues.
Fortunately, the forthcoming, WM5+-only version 3.4 has some really decent features (for example, slightly enhanced loading/rendering speed, some brand new & nice features like thumbnail view & quick navigation; drastically enhanced JavaScript compliance), which, depending on when the final, official, commercial version of 3.4 is released, may give NetFront back of the old fame.
For the time being, however, I'd prefer checking out the alternative solutions first. Both Opera Mobile and, particularly, WM5 AKU2+ PIE (preferably with a decent PIE plug-in like the current version of PIEPlus or MultiIE) are much faster and cleaner and, as with Opera Mobile, more standards-compliant. It's only at niche areas that the currently, officially available version of NetFront, that is, 3.3, is better. The currently available demos of the forthcoming 3.4, while technically far superior to 3.3 are not really usable in real-world situations because of the severe demo limitations (10 favorites and two tabs at most, no Flash / Java plug-in etc.) - that is, it can't really be used for serious browsing until 3.4 is finally released, which, knowing how slow Access is to release new versions of their browsers, will take, in my opinion, at least half a year.
Finally, don’t forget to switch to proportional font in [Menu / ] Tools / Browser Setting / Font / Use proportional font – this problem hasn’t been fixed in even the latest 3.4 version.
1.5 Minimo (Mini Mozilla) 0.2
Minimo is another well-known, free browser for the platform. It has recently received a major version bump to 0.2, with greatly enhanced compatibility to some WM5+ models that were pretty slow when running previous versions of the browser. Unfortunately, the new version has also introduced some new bugs; most importantly, the VAST RAM memory usage. I'm pretty sure this will really soon be fixed; for the time being, you won't want to upgrade to version 0.2 unless you can guarantee you have at least 20 Mbytes of free RAM memory before starting Minimo. (Otherwise, it will just crash at either loading itself or loading large(r) pages.) Note that I'll definitely announce when the bug is fixed - just make sure you check out the updates to this Bible from time to time (or, alternatively, subscribe to the thread / article).
Minimo shares the CSS, JavaScript, frame etc. engine with the desktop version. This, in itself, is really cool and means it has excellent support for CSS and JavaScript (AJAX too!). It, however, isn't really feature-packed. While it does support multiple tabs, it doesn't support any kind of Flash / Java plug-ins, it sports no image saving, link copying etc. capabilities. Furthermore, it isn't the fastest Web browser around to load pages - even the latest, 0.2 version (which according to my benchmarks, is about 25% faster than the last 0.1x series Minimo, to load pages) is significantly slower than most other browsers, let alone the at least 3 times faster Opera Mobile. The speed difference is especially visible with pages linking in several sources - then, it might prove even five-six times slower than even PIE!
All in all, while this browser certainly has the potential, it's still not really ready for prime time particularly now that Opera Mobile 8.65 also has excellent support for most Web standards. While Opera Mobile is a commercial product, I think the major speed advantage, the support for Flash, the stability, the support for PIE favorites etc. all make it a much better alternative. If you're an advocate of free and/or open source software, however, make sure you check out the project.
1.6 ThunderHawk 2.10304
ThunderHawk, a decent, fast but pretty outdated browser recommended for QVGA users (but not for VGA or square-screen ones - ThunderHawk doesn't at all support the latter!), hasn't really received any upgrade lately either - except for a minor upgrade targeting Windows Mobile phones with a clamshell or slide-out keyboard (that is, left-handed landscape mode) and some (server-side) AJAX support in 2006. Otherwise, it's still the same browser as was in 2005. This means for example no high-resolution mode on VGA devices (I do NOT recommend this application to VGA users at all - images are too low-res and butt-ugly!), no text selection / copying, no even basic functionalities like image saving or link copying.
Its major strengths are as follows:
without any kind of “One Column”-type modes, it’s capable of displaying even multicolumn tables without problems
the server it uses strips all unnecessary HTML markup from the HTML files it sends, resulting in sometimes major bandwidth usage savings.
its memory consumption and speed is very good
It also has major flaws:
on VGA devices, it still uses QVGA resolution, which is particularly annoying with images/applets
it is only able to display Western characters – no Chinese, no Japanese, no Arabic, no Hebrew, not even East-European characters.
its persistent cookie handling is buggy
it doesn’t have a multi-tabbed mode – that is, you can only browse/load one HTML page a time
its monthly/yearly fee may be a bit on the steep side ($5.95/month or $50/year).
it doesn’t use any kind of local cache, which may result in far higher bandwidth usage than with browsers that have
it can’t use HTTP proxies – that is, you can’t use any further GZIP compression, unlike with all the other browsers (except Minimo). This may also be a big problem – see my bandwith consume-benchmarks here
it has absolutely no features like image saving, link copy, HTML page save; not even page content copying works
it no longer has a free 30-day trial. You need to shell out at least $5.95 (a month's subscription) to be able to give it a test ride.
much as its Java VM (a welcome addition to version 2.1) is pretty capable, it uses a special client/server model that makes a lot of applets very hard to use or even useless. (See for example this article on the Radar applet – using TH, not only map dragging/GUI handling are almost impossible, but also the labels are impossible to read.)
Please see the first version of this Bible for more information on the buggy cookie handling.
1.7 DeepFish
Microsoft's latest, some-days-old technology is pretty promising. It's based on the same principles as Nokia's S60 OSS browser, NetFront 3.4 and Opera's announced 9.x series for Windows Mobile: it lets for dynamically zooming in/out of a certain page section to make it easier-to-read.
You can sign up for the beta HERE; note that you’ll only get on a betatester list to be granted rights only later when Microsoft actually gets able to provide the thousands of would-be betatesters the necessary proxy server throughput capabilities.
As no client-side markup-based rendering takes place with DeepFish, it's vastly different from the two other proxy-based solutions (Opera Mini and Thunderhawk). The latter two render client-side Web markup code and, therefore, have, essentially, much lower bandwidth requirements and better responsiveness than DeepFish. They, however, can't really make use of the other advantages of local Web markup rendering due to the simplicity of both clients; that is, while a decent, fully-fledged Web browser has for example page saving, copy-to-clipboard etc. capabilities, these don't.
Unfortunately, currently, DeepFish not the fastest similar browser in this respect. Both Nokia's OSS and NetFront 3.4 are FAR faster at on-page navigation and zooming in / out. For example, it only takes a fraction of a second to completely zoom out in the latter to the page thumbnail view and, after quickly moving the page outline, it zooms back in also a second. Of course the two browsers use an entirely different architecture (NetFront has a full HTML renderer engine, while DeepFish "only" displays images of pages pre-rendered by the internal DeepFish server); still, usability and speed-wise, NetFront is still much more usable.
Note that DeepFish being really new, under development and lacking even basic support for JavaScript, Flash, AJAX, Java and similar Web technologies, I haven't included it in the comparison chart. Now, DeepFish is no more than a simple, Compact Framework 2-based (this, unfortunately, also has some speed-related consequences) clever image zooming-based client/server solution with minimal client-side tools (highlighting and clicking links). That is, I would have needed to put a "not supported" (-) almost everywhere in the chart regarding DeepFish.
I'll report on any news regarding this question in the future. Also, when DeepFish does mature and does receive additional functionalities common with most other browsing solutions, I'll include it in the chart.
2. PIE plug-ins
So far, I've elaborated on fully-fledged Web browsers not depending on any other Web content rendering engine. There is, however, a second group of WM browsing solutions: applications that enhance the functionality of the already built-in PIE using its engine instead of providing a brand new browser. They are common in that they at least (!) provide multi-window, page, image saving and full screen support; these (not considering the last two under WM5, where PIE has received built-in support for them) are really worthy.
The "let's not throw away the already built-in PIE, but build on it" approach has both advantages and disadvantages. The clear advantage is that PIE itself, particularly as of WM6, is pretty mature, definitely bugfree, dependable and comparatively fast. It's not very easy to write a HTML engine even matching (let alone surpassing) the sheer compatibility and stability of this engine - actually, only the authors or direct porters of already-established Web browser engines (most importantly, Opera and, to a lesser degree, Mozilla) can really compete with the engine, quality-wise, not a start-up developer with a new HTML renderer engine.
The disadvantage is that relying on the PIE engine means having to put up with some of the inherent problems and shortcomings of PIE. For example, not any PIE plug-in is able to provide in-page text search capabilities or some kind of better JavaScript / AJAX / CSS / frame / Iframe support. The same stands for getting rid of pixel doubling on VGA devices on VGA WM devices prior to WM6 (remember that it was only in WM6 that "Use High Resolution" was added to PIE). Finally, a plug-in just can't enhance the inherent characteristics of page loading and memory usage. That is, as they need to rely on the same Web page parser and renderer engine, they can't provide a much faster one.
2.1 PIEPlus 2.2
It was during 2006, with the debut of the brand new 2.x series, that this plug-in was seriously enhanced. The original 1.x series paled in comparison to the, then, definitely better MultiIE (an alternative PIE plug-in) and its only real strength was providing Pocket View (that is, built-in one column mode) for pre-WM2003SE models.
Now, with the new, 2.x series, the situation has radically changed; now, I'd say it's PIEPlus that is the better of the two PIE plug-ins and it's only at few areas (for example, direct GPS and keep-backlight-on support) that MultiIE is decidedly better.
This plug-in offers a lot of goodies: in addition to the standard multitabs, page / image saving, link copying, it allows for in-program scroll mode switching, a lot of advanced URL builder capabilities (macros, domain completion etc), advanced tab history and so on. Furthermore, it's unique in that it offers "Pocket View", a really welcome one column view mode addition for all pre-WM2003SE devices. No other PIE plug-ins are capable of this (all they may offer is support for background usage of an external Web compression / content stripping sevice like Skweezer, with all their problems and shortcomings; for example, the stripping of dynamic contents).
All in all, this should be the first plug-in to check out, should you want to stay with the built-in PIE engine and not long for something inherently better and more advanced (for example, Opera Mobile).
2.2 MultiIE 4 D72
This plug-in hasn't received so many updates as PIEPlus during the 3.x - 4.x major version change; actually, some of its old functionality (for example, viewing image texts, making a given image a Today wallpaper or some of the old button associations) have been taken away in the new series. However, it’s still a very sound and highly recommended alternative, particularly when you look for a browser (or browser plug-in) that disables shutting down the screen backlight while running or when you plan to use your browser in conjunction with your GPS unit to quickly look up location-dependent information on the Web.
It should also be pointed out that some of the inherent problems with the 3.0 version have been fixed; most importantly, the HUGE additional memory usage upon creating a new browser tab. With the 3.0 version, on a VGA device, creating a new tab easily resulted in an additional 2 Mbytes of memory wasted; with the new series, "only" 800-900k is used for each new tab. This is definitely an improvement, which lets open far more parallel tabs even on (more) memory-constrained devices.
Note that I've thoroughly elaborated on the macroing capabilities of MultiIE in the first version of this Bible (links at the start of this article). Please consult the MultiIE section in there for more information - it'll explain a lot and you'll be able to use that information with both the new MultiIE and PIEPlus. As MultiIE severely lacks any kind of documentation, it'll be the only place where you find a very thorough tutorial on all these questions.
2.3 Spb Pocket Plus 3.2.0
Spb Pocket Plus (SPP) is a long-established multipurpose application for the Pocket PC. It not only has a PIE plug-in, but also several other goodies like an excellent (!) Safe Mode (see the Safe Mode Bible for more information), a good (but, in my opinion, not excellent - the comparable iLauncher 3.0, which is also a full set of tools like these - except for a PIE plug-in - has an, in my opinion, better one) Today plug-in, a Close button, a battery meter, ZIP compression support for pre-WM5 devices etc.
In addition to a sound set of all kinds of utilities, it also has a big advantage over almost all the other PIE plug-ins: along with the highly recommended PIEPlus, it uses the least memory overhead upon opening new tabs. While the, in this respect, worst MultiIE uses some 0.6…0.9 Mbytes (depending on whether it’s a QVGA or a VGA device), PIEPlus / SPP "only" consume about half of it. The same stands for the initial memory needs of the three apps: while PIEPlus / SPP only need about 50-100 kbytes of RAM, MultiIE needs about 300-500k. Also, along with PIEPlus, it's the only current application that still supports the Pocket PC 2002 operating system.
Unfortunately, the PIE plug-in module is as simple as was in previous versions (except for it having received the "Open link in a background tab" functionality during the 2.x -> 3.0 version jump). This means it offers no special features at all, particularly not for WM5 users, where image saving and full screen switching is already supported. Actually, it doesn't even have on-screen tabs to let the user quickly (with only one screen tap) switch between Web pages, quickly close them etc.
Also note that, currently, SPP may have compatibility problems with WM6 devices in general. (See the remarks in the chart!)
2.4 Webby 2.6.0.5
This Compact Framework 2-based application has become pretty usable during its maturation. Now that there are some (not many) external plug-ins for it and the initial, major speed problems have (mostly) been fixed, it became a serious contender to the other solutions, particularly if you look for an entirely free solution. (Except for Minimo, everything else is commercial.)
It's a hybrid application meaning it's not strictly a plug-in (unlike PIEPlus, MultiIE and SPP) but more of a front-end for the underlying PIE engine. This, in this case, results in some problems:
It doesn't let for accessing the WM2003SE+ "One column" and the WM6+ "Use High Resolution" menu items of PIE, while all the other PIE plug-ins - except for ftxPBrowser - do. This results in some severe usage restrictions, particularly if you don't want to use Skweezer and similar content stripping / one column-converter services and/or you have a WM6-based VGA device.
It, as the downloaded Web content must go through an additional layer of programming code, is definitely (albeit, as of now, not much) slower at downloading and rendering Web pages than PIE itself. This was a major problem in earlier versions (see my older reviews); now, fortunately, the additional speed hit it introduces is only 20%
It can't add menu items like "Save image", "Save target as", "Open in new tab" to the original link / page / image context menus of PIE; rather, it needs to provide the same functionality through much slower-to-use menus
In addition, while the additional widget plug-in architecture of Webby is pretty nice, it has several related problems; for example, it can't hide for example the tab bar and the address bar plug-ins in full screen mode (which isn't what you will necessarily want), unlike almost all other solutions (except for for example Opera Mobile and its address /icon bar or NetFront and its tab bar). Also, some of the additional widgets are buggy (see my remarks on, for example, the bugs of the Tab bar widget).
However, as has been pointed out, if you don't plan to pay for your Web browser (plug-in) at all, the free (or the registered free) version of Webby can prove pretty useful. I, however, don't see much point in shelling out $20 for the Pro version - for the same amount (or a little more) of money, you can get much better & faster functionality (PIEPlus, Opera Mobile etc.)
3. Not included: ftxPBrowser
While I've (still) reviewed ftxPBrowser in the previous Web Browsing Bible, I don't see the point in doing the same in here as, unfortunately, ftxPBrowser
hasn't received any updates (let alone enhancements) in the meantime and seems to be a pretty much abandoned project
has severe compatibility problems with WM5+ (please see this and this for more information on this).
This means I do NOT recommend it for WM5 / WM6 users at all. If you have a model with an operating system prior to WM5, you may want to give it a try, though.
3.1 Disqualified: Maximus
Maximus, a CF2-based hybrid PIE add-on is very poor and isn't at all recommended. Please see this review for more info.
4. Comparison / feature chart
It's available HERE. It also contains some 360 screenshots, almost all taken on a WM6 VGA HTC Universal (don’t forget to click the links to see them if interested)!
As with all my feature charts (and roundups), I’ve paid special attention to provide you with mini-tutorials when discussing a particular question. For example, when I elaborate on the “One column” mode (see the “One (single) column view?” row in the chart), with, say, Minimo, I also show how you can actually switch to this mode by showing a screenshot of the menu item taking you there. This means the chart contains hundreds of small, but, in cases, very useful quick tips & mini-tutorials you won’t find anywhere else. All in a very compact form: just imagine how much I would have ended up having to type upon trying to convey the SAME deal of information in a non-tabular form – yeah, dozens if not hundreds of kilobytes.
Of course, I have tried to be as verbose and clear as possible when explaining the different test cases. I’ve also paid special effort to linking in my previous, related articles on the different tests I’ve conducted. For example, when I provide a link along with the Internationalization support group, it means you may want to follow the link to find out what the tests in this group are all about.
4.1 Explanation for the Comparison / feature chart
(Note that all browsers support SSL (secure connections); therefore, I haven’t included this in the chart, as opposed to the previous version of this Bible (at that time, Minimo still didn't support SSL). Note that Opera Mini has only recently, with the 3.x series, received support for SSL.)
Platform compliance? group: in here, I've elaborated on the operating system compliance of each and every browser. I've grouped together the platforms that, compliance-wise, behave the same way. That is, a WM2003-compatible program will surely run on WM2003SE; a WM5-compatible program on WM6. I've also noted the exceptions or some problems; for example, with SPP. Also noted is the lack of support for newly introduced PIE features like One column in WM2003SE, Save images / Full Screen in WM5 and Use High Resolution in WM6 VGA.
It's no news older platforms are all phased out - and this, unfortunately, already means completely losing support for relatively new operating system versions like WM2003SE. NetFront 3.4, Minimo 0.2 and DeepFish are all WM5+-only; so will be the forthcoming Opera 9. However, older versions of these browsers (except for, of course, DeepFish) do/did support WM2003(SE); in the chart, I've mentioned the actual version number that still did this. Support for the now-ancient Pocket PC 2002 operating system is even more scarce; of the new releases, only PIEPlus and SPP support it. Finally, non-ARM-based Pocket PC (2000) devices are completely abandoned.
Screen group: in here, I've elaborated on the different screen resolutions (QVGA, VGA, square) and orientations (Portrait and the two Landscape modes). Fortunately (except for the complete lack of support for square screens in Thunderhawk), current Pocket PC browsers are all VGA (including native (non-SE) VGA modes) and Landscape-compliant, where the latter also includes left-hand landscape modes used on WM models with built-in slide-out / clamshell keyboards.
Screen estate utilization group: everything related to how browsers are able to make use of the available screen estate.
Full screen mode?: can you switch to full-screen mode, hiding the taskbar at the top and the command bar at the bottom? I’ve also noted the way to switch back to normal mode; it’s, for example, a little icon as with all the three (real) PIE plug-ins, which is the best and least space-consuming.
As can clearly be seen, Opera Mobile, Minimo and NetFront all display the tab bar (and, with Opera Mobile, the address/icon bar) even in full screen mode. This is certainly a drawback.
Address bar hiding?: in pre-WM5 PIE's (as with several other browsers), you could hide the address bar to free up some screen estate. In here, I've scrutinized whether you can do the same in the reviewed browsers. Note that Opera Mobile displays the combined address bar / command bar even in Full Screen mode, which should be addressed in a later version.
Scrollbar (may be) hidden in full screen mode?: better browsers and browser plug-ins may be configured to hide the horizontal/vertical scrollbars in full screen mode. Unfortunately, only MultiIE and PIEPlus support this; Opera Mobile, Minimo, NetFront and PIE (without either PIEPlus or MultiIE) don't.
Context menus group: while I've also dedicated separate rows to elaborating on mostly context menu-based functionality like opening a link in a new tab (instead of the current one), saving an image or copying a link target address to the clipboard, I've also chosen to collect screenshots and a quick list of the additional, new context menu items available with all the three different entities in a Web page (not counting in special entities like Flash animations, Java applets or frames; with the first two, there are no context menus; the latter is scrutinized in the Frames group): images, links and generally non-image/non-link content.
Advanced address bar features (macros, completion) group: this section lists the different types of macros and address bar (auto)completion. The rows and screenshots in this section are pretty self-explanatory; therefore, I don't explain them in here.
Rendering modes group: the screen resolution of a Windows Mobile device is inherently smaller than those of desktop / notebook computers. Even the largest WM screens (800*480 in, for example, the new Toshiba G900) are still smaller than the XGA (1024*768) screens used in even basic notebook models, let alone higher-resolution ones (for example, I'm writing this article on my UXGA (1600*1200) Thinkpad.) Low-resolution WM devices with either a QVGA or a square screen are even worse.
With these low-resolution screens, it's pretty understandable a Web page can't be correctly rendered in its original layout. A layout designed for a horizontal resolution of at least 800 pixels just can't be correctly rendered on a screen with a width of 240 pixels. This results in (mainly) three approaches:
render the page as is, in its original layout - that is, make the user scroll horizontally. This is the worst approach as you will end up having to scroll horizontally to read each and every row.
while trying to keep the original horizontal layout, try to resize every horizontal page entity so that they fit in the screen horizontally. This approach, in general, works OK on VGA devices, particularly when used in Landscape orientation (that is, with 640 active pixels, even when you subtract the width of the vertical scrollbar). On the other hand, with QVGA screens (and particularly with square ones with a meager 240 pixels), this approach wont really work because, in some cases, each column will only have space for 3-4 letters at most. (See the examples in the first row of the group showing this in practice; or, the NetFront Just-fit example showing a QVGA screenshot in the earlier version of the Web Browsing Bible!)
finally, try to render all cells in a row of a table or all frames vertically; that is, one cell or one frame a row.
Note that there may be combinations of the latter two approaches; NetFront's Smart-fit rendering is a perfect example of this (using the most recommended Full Rendering mode). It, when it notices that there simply are too many for example table cells in a row, makes sure it renders all of them vertically. When, however, it notices somewhere else on the same page there isn’t enough screen estate, it will render the cells in separate rows. The PPCMag test example, used throughout the entire chart for testing, is a perfect example of this. At the top of the page, where there are only two text input fields and some text, these are shown in the same row (unlike with "real" One column solutions). However, with much more information / text in a row (the case with the body chart itself), most of the cells are aligned vertically. This approach unifies the good sides of both approaches and should be implemented by at least the Opera Mobile folks as, say, a fourth way of content display.
The first two rows in this group compare the applications' ability to fit the contents of a Web page (horizontally) on the screen and to render the page in the One column mode, if possible.
Fit-to-screen (tested with the PPCMag test)?:
As can clearly be seen, PIE has always delivered pretty bad results, unlike with all the comparable and fit-to-screen-capable alternatives (except for Minimo, where SSR doesn't always work). Both NetFront's "Just-fit rendering" and Opera Mobile's "Default" mode are far better at really crunching the horizontal contents of a Web page to the available screen estate and, in most of the cases, are perfectly usable on especially VGA devices.
Minimo's SSR mode (whish is enabled by default) is a different animal - it doesn't work with many sites (see the RedHotPawn example). When it does work, however, it also delivers good results.
Opera Mini doesn't have a comparable rendering mode at all (as it's solely using an One column mode). Finally, Thunderhawk renders the page using the original layout, which is pretty much OK in most cases.
One (single) column view?:
As can be seen, the reviewed apps use vastly different approaches. The best approach is, without doubt, that of NetFront for the reasons outlined above. It's closely followed by all native One column-capable browsers: PIE in WM2003SE+, Opera Mobile (particularly now that, with the brand new, 8.65 version, the old bug with the limited horizontal column width has been fixed) and Opera Mini (incidentally, the latter doesn't have other rendering modes at all).
As has been pointed out, it's only with WM2003SE and later WM operating system versions that the built-in PIE supports the One Column mode. In earlier operating system versions, should you really want to have One column rendering and still want to stick with PIE (while, of course, Opera Mobile is far better a choice on WM2003), you will want to take a closer look at PIEPlus, the only PIE plug-in to force the incoming Web content into one column.
Note that you can achieve the same effect with ANY browser using external one-columnizer services like Skweezer, MobileLeap and the like. However, they may result in some problems (for example, because they also get rid of JavaScript code); therefore, you may still want to go for something else.
Rendering mode (does it show the start of the document even when it’s not entirely downloaded?): this test elaborates on how the given browser loads a new document: does it start rendering it only some 2-3 seconds before fully finishing the download (that is, does the user face an empty screen for, say, 90% of the download), or, does it try to render the page as soon as possible?
As can clearly be seen, there are two types of browsers: one set of them (PIE, Opera Mobile) will start rendering the page as soon as possible, while some wait until the download & parsing is almost entirely done (Minimo and the proxy server-based solutions). NetFront is a strange animal because in the normal Full Rendering mode it sometimes delivered very good (starting to render right at the beginning), while, at other times, pretty bad (starting to render only later) results.
Note that NetFront also offers a "Rapid-Render" mode, which guarantees the content will be rendered during page fetching. I can't at all recommend this mode, however, because of the HUGE time overhead, which is particularly an issue in the new, 3.4 version, where the difference in time needed for page fetching can easily be fivefold. Furthermore, the rendered contents you're presented aren't the final ones; they will only be presented later, after a really distracting full screen clear. This may be pretty annoying for the user because he or she may even forget where he/she was and/or will have to scroll around a lot to find it.
Multiple page operation (multitabs) group: in this group, I've elaborated on how the application handles multiple pages; is it, for example, possible to open a link in a background page for background download, and, then, get notified when it's downloaded. All this in order to avoid having to waste time on waiting for the page to be downloaded, which is especially important with slow connections.
Feedback on page loading events (sound effects / bringing to the foreground)?: A decent browser should notify the user when a page has completely been downloaded and rendered in the background. For example, the desktop Opera browser turns the color of the text on the tab where download has ended to blue, which is very easy to notice, even with disabled sounds. In here, I've listed how the tested browsers behave in this respect. Unfortunately, the Windows Mobile version of Opera doesn't do the same trick as the desktop one (and not any sound notification either). This is the case with all the other browsers too. Actually, it's only PIEPlus and MultiIE that lets for configuring what should happen in these cases. Kudos to their developers!
Opening links in…-support, particularly as opening something in a background tab is concerned: in here, I've listed whether it's possible to open a link in a new and, particularly, in a background new tab in order to avoid having to manually switch back to the current one to continue reading it while the requested page is loading in the background.
As can clearly be seen, some browsers don't let for background link opening at all; unfortunately, Opera Mobile, NetFront and Minimo also belong to this group. Actually, it's only the three "real" PIE plug-ins that offer background link opening capabilities.
Max. number of tabs open at a time?: die-hard Web browser users may want to prefer having as many pages open as possible. Most browsers and PIE plug-ins do let the user do so; the most important exception is NetFront, which only lets for opening up to five tabs. This is far from perfect and you'll run into this restriction pretty easily if you often open a link in a new tab.
Something should also be emphasized. The Windows Mobile operating system, as of now (the WindowsCE 5.2-based WM6; it's only the brand new WindowsCE 6 and the forthcoming WM version based on it that (will) have got rid of this restriction), doesn't let for more concurrent processes than 32. Most of the reviewed applications (except for, for example, Opera Mini), however, create a separate process for each tab. This means, depending on the operating system used and the number of other programs you run, in general, you can't have more than 20-28 tabs opened with a browser before these start to be terminated (which, in cases, may result in terminating all the browser processes at once). Again, this restriction doesn't apply to Opera Mini - with it, I had 30 pages opened several times without any problems.
Note that, as both opening new tabs (at least with PIE plug-ins; with non-PIE-based browsers, the memory consumption in these cases isn't at all bad) and rendering Web pages (which is an issue with several Web browsers; most importantly, with PIE) may be memory-intensive operations, it's highly possible you fill up your dynamic RAM program memory much faster than reaching the process limit of the operating system. With the least memory-hungry application, Opera Mobile, I've had no problems in browsing some 27-28 tabs at a time, however - that is, you can make a good use of your dynamic memory very easily.
Tabs constantly on the screen, their taking up screen estate etc. group: while the previous group didn't concentrate on the visual representations of the multiple browser document windows, this one does. In here, I elaborate on whether you can alter the tabs' size (and their taking up valuable screen estate), whether they're displayed in full screen mode, whether you can configure the system to open the new tabs next to the current one, or, strictly at the end of the tab list; whether the tabs have context menus (in this respect, Minimo is clearly the best) and, finally, whether the tabs can easily be closed with, say, only one screen tap.
Misc. group: the tests in this group speak for themselves. Please make sure you consult the screenshots, should you still not get the point what they are all about. I only elaborate on the Access to standard PIE favorites? group, which elaborates on whether the given browser is able to access the PIE favorites for either reading or writing, or both.
As can clearly be seen, while the traditional file system representation of favorites is very simple to handle, only three browsers have support for it: Thunderhawk, Opera Mobile and NetFront; neither Minimo nor Opera Mini have support for them. (The latter is, of course, understandable, taken the restricted “sandbox” midlets are provided, file access-wise.) Furthermore, Opera Mobile isn’t able to create PIE-compliant favorites (not even when you create these favorites explicitly in the Internet Explorer Favorites folder); this means favorites added in Opera Mobile will not be visible to other browsers and you can’t synchronize them back to your desktop computer(s) either.
Note that the WM operating system also stores favorites in the Registry; both NetFront and Opera Mobile were able to read these Registry-based favorites.
Standards compliance groups: in the five groups here, I examine the following four areas (and a miscellaneous area with some "not suitable for bigger groups" tests):
JavaScript, scripting, Java (Part I) : in here, I've run several tests to find out the compatibility of all the browsers with some well-known pages having very strong and complicated scripting. As can clearly be seen, Opera Mobile and Minimo have by far the best JavaScript and AJAX support. PIE has always had a very bad JavaScript support and, even as of WM6, non-existing AJAX support. (Frankly, I don't understand why Microsoft states PIE in WM5 AKU3 / WM6 is AJAX-compliant, when it just isn't. Its JavaScript compliance isn't a tad better than in older versions either.) NetFront had mediocre JavaScript support in 3.3 and good in 3.4; as far as its AJAX compliance is concerned, 3.4 was indeed a BIG step ahead (albeit it's still worse than that of Minimo or Opera Mobile).
Finally, it's in here that I also elaborate on the Java applet compliance of the Web browsers. Unfortunately, Minimo and the two Operas have absolutely no Java support. This isn't that big a problem, however, because very few sites do actively use Java applets - it's mostly Flash that everything is based on (see Flash compatibility later).
Thunderhawk and NetFront both have their custom Java support, which can't be swapped to something else. With PIE, however, you have some choices when choosing a JVM: CrEme and the no longer sold / supported JEODE, which, back in 2001-2003, was shipped on iPAQ CD's. Of the two, I'd prefer CrEme because of the vastly superior speed and generally better compliance. The reader is kindly referred to my other, related articles (just look for "CrEme" in my articles) for more information on CrEme.
HTML Frames: these test concentrate on the frame support of the Web browsers. You may have already heard of PIE's only supporting few parallel or embedded frames and absolutely not supporting so-called "Iframes". In here, I elaborate on all these issues. If you know a bit about HTML and would you find out how I've did the tests, don't forget to check out the HTML test pages I've created for these tests: I've linked in them all. They're pretty instructive.
As can clearly be seen, Opera Mobile has the best frame support when it comes to the maximal number of parallel / embedded frames. Its only problem is the lack of "go to a frame" functionality (to maximize a given frame to the entire screen), which, otherwise, would be REALLY important, particularly when you really wouldn't need the contents of the other frames. The Opera folks will want to address this issue. PIE, on the other hand, is at the other end of the spectrum: its frame support is the worst of all, frame number-wise.
Finally, some really good news for PIE freaks: in WM6, Iframes support has finally been added. It's not really flawless (see my comments and the screenshot), but, at least, it's already there.
Internationalization support (Part IV): please see this article for a complete description of what this all means.
Finally, the fifth subgroup, Misc, dives into a lot of disjunctive compatibility areas: file uploading, Flash, YouTube etc. Please do read the linked-in articles for more info if interested - here, I won't waste any time on telling the same stuff again. As can clearly be seen, Opera Mobile is the best of all in this group, particularly YouTube video-wise.
Speed, dynamic RAM memory usage benchmarks group: on Windows Mobile devices with, typically, heavily restricted CPU and memory resources, it’s very important Web browsers don’t tax neither the CPU nor the memory much. That is, they load the requested Web page as quickly as possible and try to radically reduce their memory consumption. As there are really radically differences between the different browsers, a Web browsing-related roundup MUST elaborate on these quantitive results.
Overall rendering speed: PPCMag test loading speed: in this test, I’ve measured how much time it did take to completely download and render the linked test page. Note that I’ve repeated the tests in different rendering modes to see what their effect on the overall rendering speed is. In general, I’ve made the tests on two current devices: the WM5 VGA 624 MHz Dell Axim x51v (running the A12 ROM) and the WM6 520 MHz VGA HTC Universal. In every case, I’ve noted which of the two I’ve measured a result on (the x51v is slightly faster, which is also reflected in the results).
Overall memory usage: program itself with a blank page (important particularly for HP iPAQ rx1950 / Palm Treo 700w users with ~11Mbytes of free RAM at most). Note that the PIE plug-ins show additional RAM usage, in addition to the "base" PIE RAM usage. : in this test, I’ve measured the memory usage of the applications without displaying any Web page (as displaying pages may dramatically increase the memory usage.) Note that, as with the next benchmarks, I’ve done separate QVGA and VGA tests; I used the HTC Wizard running WM5 as the QVGA test device. The reason for this is pretty simple: on VGA devices, Web browsers have the tendency of taking up more memory. As can be seen, Opera Mini and PIE are the most memory-friendly, followed by Thunderhawk and, then, Opera Mobile. Then follow the other browsers: NetFront and, finally, Minimo.
Note that, with PIE plug-ins (except for the hybrid Webby), I’ve measured the additional memory usage. That is, don’t think Spb Pocket Plus / PIEPlus only require 56k / 90k RAM memory; that is, that they greatly reduce memory load. It’s the additional memory usage, added to memory usage the “base” PIE.
An opened, new tab: unfortunately, not only the Web browsers themselves take up memory, but also the individual windows you open in them. This is especially true of PIE plug-ins, which, in effect, need to load a brand new instance of PIE into memory. This is why they, in general, consume at least an order of magnitude more memory (per window) than non-plugin-based, multiwindow-capable solutions (NetFront, Minimo, Opera Mobile, Opera Mini).
PPCMag test memory consumption: totally independent of the above-mentioned cases (how much memory the program itself / an additional tab take) is the memory taken up by the in-memory representation by actual Web pages you visit. This, in general, in cases, may be even an order of magnitude larger than the original size of the page – for example, (in this respect) worse browsers (most importantly, PIE) may take 7-8 Mbytes of the meager RAM to load a 600 kbyte Web page with some icons in there.
In this test, I’ve measured the memory consumption of all the tested browsers upon loading the above-introduced, 590 kbyte-big PPCMag test page. As can clearly be seen , there may be even two orders of magnitude differences in the results: while Opera Mini takes very little memory, PIE (the, in this respect, worst-behaving browser) takes between 7.5 and 9Mbytes.
Network connectivity group: in here, I’ve elaborated on generic network connectivity questions / issues.
Proxy support? If it does support proxies, does it require the proxy settings entered locally, or, does it get from the system-wide Connectivity framework?: Is the given app able to use proxy servers?
Proxy servers can be very handy in a lot of respects. Please see this article (also linked from this PPCMag article) on the usage of proxy servers. Also, you may want to read this article for more information on configuring proxies on the PPC/switching between them.
Opera Mobile and Minimo both support locally-set proxy servers.
As you can see, PIE, starting with Pocket PC 2002, uses the system-level proxy server setting. PIE plug-ins also use them as they have access to all the PIE resources. NetFront is also able to do the same, but you can also supply a different proxy server to it locally (which is the preferred and easiest solution in most cases). Thunderhawk and Minimo have no proxy support at all.
Proxy-based anonymity?:
If you use proxies, you can also anonymously surf the Web (please see this and this article on anonymity). This is why PIE (with all its plug-ins), Minimo, Opera Mobile and NetFront are preferred for anonymous surfing. TH, while it doesn’t support proxies, doesn’t pass anything client-related (no IP, no ThunderHawk username) to the HTTP server, so, it can safely be used for anonymous Web surfing too. Opera Mini, unfortunately, does pass the client IP in an extended HTTP header.
Does use the PPC2k2+ Connections framework to diff. between The Internet/Work connections?: You may have already run into the The Internet/Work distinction, which effectively plagues the life of a lot of people. PIE is based on this paradigm; this is why you run into a lot of ‘can’t connect’ messages because of just using the opposite type of connection of what’s needed.
Non-PIE browsers aren’t based on this framework, which is a big plus with them, at least for people that don’t understand the The Internet/Work distinction ( it’s not an easy stuff; furthermore, it’s not really documented either).
Bandwidth reduction: GZIP/Compress support? Does it really work?: HTTP browsers that support GZIP compression (please read this article on this subject) and support working through proxies (the case of Toonel – more on this later) may deliver a big win in bandwidth usage.
Toonel-compatibility?: Toonel is a great and, even better, free online HTTP compression service, a great friend of everybody not having unliminted (or very fast) Internet access. It requires explicit proxy support (and manual configuration) in the Web browser. In this row, I’ve noted the compliance of PPC Web browsers with Toonel. As can be seen, all of the "big" titles support Toonel because of the proxy support. It's only client-server solutions like Opera Mini, Thunderhawk (and DeepFish) that don't support Toonel.
Saving, downloading group:
Saving the current (Web) page (also see this)? (Note that it can even be a, say, as textual "rendered" CAB file too!): This shows if the browser is able to explicitly save Web pages. As can be seen, most of them do, Minimo, the two Operas and Thunderhawk being the exceptions. Some of the browsers (NetFront, PIEPlus, MultiIE) can even make a full save, downloading all the resources as the desktop IE in File/Save As - see the default Web Page, complete option in the Save as type: drop-down list.
Please note that the inability to explicitly save pages shouldn’t be a showstopper: you can get the Web pages from the cache of browsers that have local caches. It requires some manual work and searching, though. Consult the Download Bible for more information.
Save link directly to file, w/o opening? (""Save Target As...") (also see this): should you save something without actually peeking into it, you will want to look for browsers that do support this kind of functionality. (Please, as with the other rows in this group, do consult the Download Bible for more information on this subject - it's way more complicated than it seems!)
Co-working with HandyGet : Currently, HandyGet is the best Windows Mobile downloader tool/accelerator. In here, I’ve elaborated on whether it’s able to automatically “capture” the binary URL’s clicked in the browsers in order to download the file inside itself.
File download (NOT "Save Link Target"!)?: without relying on features like the above-mentioned "Save Link Target", is it possible to download files if they are offered for download (that is, if they are of binary content); is it possible to select a destination to store the downloaded file at. (Again, check the Download Bible for what this implies.)
Caching; cache benchmarks group: most Web browsers use local file stores called “caches” to quickly speed up transfers and lower data usage. These caches, as they are stored in the file system, may result in a variety of problems, particularly when you visit pages with more than a handful linked resources (for example, images). In these cases, the sometimes vastly reduced file creation speed of non-RAM (read: flash ROM) media – for example, the built-in, default storage in all WM5+ devices. Please also see the related article What do you need to know about optimizing storage card speed? for more info on the speed issues caused by trying to write dozens of files to a flash ROM-based file system.
In here, in addition to elaborating on whether its size is settable, I’ve also elaborated (see Relocatable?) on whether the cache can be relocated to a storage card / RAMdisk etc. Note that, should you relocate it to an even slower medium (as are most of today’s non-high-end memory cards), the page loading times may become even worse with browsers (particularly sensitive to this problem is PIE), particularly when there are many files to store in the cache. In these cases, you will REALLY want to consider disabling caching entirely or using an area, RAMdisk, in the fast dynamic RAM (the program memory) to store the files. RAMdisks, however, have their share of problems (see the linked RAMdisk article).
I’ve benchmarked all the caching-enabled applications in separate scenarios. First, I’ve benchmarked them in my WM6 HTC Universal, using its built-in storage memory for the cache. Second, using a RAMdisk; third, using a VERY slow-to-write to, cheap SanDisk 1Gbyte SD card. As can be seen, with the latter card, PIE’s results are much worse than in the default or the RAMdisk one. Note that the results starting with + mean additional time needed for caching – in addition to the non-cached or the default case.
In Explicit cache navigation?, I’ve elaborated on whether it’s possible to examine the contents of the cache from inside the browser itself, as is the case with NetFront.
Finally, in Offline mode: Highlighting favorites present in cache (like on desktop browsers?) Loading cached pages without a connection? , I've elaborated on whether the browser supports showing what's available in the cache and what not. In the Favorites list, highlighting available pages is a pretty nice feature of all PIE’s except for WM5 (where, for some reason, it was removed). The second part of the test concerns cases of browsing without an internet connection, just from the file system cache. As can clearly be seen, this is not always possible.
Images group: in here, I've elaborated on image saving, (alternative) image text inquiring and wallpaper setting capabilities. As the latter (wallpaper setting) no longer works in any current Web browser or plug-in, you'll want to consult my well-known (Please read the "Today Wallpaper Bible" (alternatives: iPAQ HQ, AximSite, PPC Magazine, FirstLoox, BrightHand)) for more information on reusing downloaded / saved images as Today wallpapers, should you ever want to reuse an image on the Web as your wallpaper.
Copy/paste support group: I've elaborated on whether it's possible to directly copy a link to the clipboard and whether the browser supports arbitrary text selection from the given page.
As far as link copying is concerned, should it be missing with a particular Web browser / PIE plug-in, you can still do the same with just clicking the link and, then, when it's displayed in the Address bar, just stopping the loading (if you don't need to see it) of the page and copying the address from the Address bar to the clipboard.
As far as the second (text copying) is conerned, all browsers support it, except for Thunderhawk and Opera Mini (and the forthcoming DeepFish).
Hardware buttons not related to scrolling group: here, I've elaborated on hardware button assignment capabilities, which is REALLY useful and supported by some Web browsers (and PIE plug-ins). Assigned buttons can make operation (for example, the Back button) much easier, particularly if you don't like / can't use the touchscreen on a non-Smartphone (non-WM Standard) device. I've also elaborated on the WM5+ softkey support, which, traditionally, hasn’t been the strongest point of some browsers.
Scrolling group: you may want to prefer scrolling down/up the page (OR, select a link) using hardware keys (or the redefined volume slider / scroll wheel / jog dial, when available) instead of using the scrollbar (or, screen dragging) on the touch screen (if your device has a touchscreen at all). In these cases, you will most probably want to know what scrolling capabilities the given browser supports and whether it's possible to override / change them.
In a nutshell, there are two traditional ways of scrolling: the "scroll one page at a time when you press the Up/Down arrows" ("page" scrolling) and "highlight the next link above/below/on the left/on the right when you press a directional key and scroll the screen contents when there's no visible link in the given direction" ("link" scrolling). In addition, some browsers also offer the capability for "line" scrolling, which scrolls the screen line by line.
Traditionally, PIE in operating systems prior to WM5 utilized page scrolling and, starting with WM5, link scrolling by default. The switch to the new paradigm took place to make it possible for non-touchscreen-enabled smartphones to select (click) links to follow (and to let for one-handed operation even with touchscreen-enabled devices). However, the change to link scrolling wasn't really welcome by many users because it meant, sometimes, multiple keypresses to scroll down the screen contents.
There are a lot of different solutions to the problem, all of them explained / shown example screenshots of in the chart. Of them, hybrid solutions are the best and most usable. This is particularly true if you occasionally would like to use your otherwise touchscreen-enabled WM device in one-handed mode. Then, while still having the ability to both quickly scroll up/down the contents ("page" scroll), you also have the chance to do some link scrolling. This can happen with either the same keys (not) used with press-and-hold also used for page scrolling, or with different hardware facilities (either a scrolling wheel/jog dial or a redefined volume slider) to do the link scrolling.
As far as the first group (doing page/link scrolling with the same hardware facilities) is concerned, NetFront has an interesting scrolling behavior; with the brand new, 3.4 version of NetFront, you can fine-tune how the Up / Down keys behave; then, if you, otherwise, use link scrolling with the D-pad, you can still instruct NetFront to scroll through several pages up / down when you long-press (press and hold) the Up / Down key. (Note that the default behavior is immediately switching to the PagePilot mode for quick navigation.)
Also the scrolling model of Webby is of special interest: when you press the Down key, a page scroll will take; when you press Up, line scrolling. With this, you can still quickly scroll through a document without having to suffer from the disadvantages of link-only scrolling and, when you do need to access a link, you can scroll down one page and, then, gradually up (and left/right when there are several links in row) to get to a link. This is a very clever approach more closely modeling user behavior.
Note that you are very lucky if you have a WM5 device with a real volume slider (for example, a HTC Universal, Wizard etc.); then, you can use one of the best, free tool meant for these kinds of devices, SmartSKey. With a redefined volume slider, you will always have page up/down scrolling in PIE (including all its plug-ins), (the new) Opera Mobile and NetFront (but, unfortunately, not in the other browsers); then, you can safely leave the D-pad in the default Line scrolling mode.
User-Agent group: the ability to redefine the so-called "User-Agent" can prove very useful because many Web sites check this information and act differently on mobile and desktop Web browsers. The ability to redefine this information can be very important because
many sites may refuse to provide (usable) content for a mobile browser introducing itself a mobile browser to the server, even when the client would be able to meaningfully render the contents. Just an example: while Opera Mobile's JavaScript and Iframe support is so darn good that it’s even able to make use of the very useful Gmail address autocomplete, Gmail switches to PDA view NOT offering autocomplete when it sees a mobile browser (including, by default, Opera Mobile too).
many other sites rely on for example authentication requiring a browser to identify itself as a desktop, while they aren't really using the advanced scripting or ActiveX capabilities of them.
In these both cases, redefining the User-Agent can prove very useful.
Note that you won't always want to redefine the User-Agent. There are many Web sites that, upon recognizing a mobile browser, provide mobile-/bandwidth-friendlier content. Just a few examples: the Smartphone & Pocket PC Magazine blogs, Pocket PC Thoughts, AximSite, FirstLoox etc. With these sites, it can prove very useful to be able to dynamically switch the browser identification (User-Agent) to the default (mobile) setting to get the mobile content.
Built-in browser identification change : in here, I've elaborated on whether the given browser / plug-in is able to change the User-Agent from inside the application.
On-the-fly external browser identification change visible without PIE restart in tabs opened after change? (Everything is +, also showing that all reviewed PIE plug-ins load a full copy of PIE into memory for each and every tab, unlike the old ftxPBrowser, which does require a full restart.) : As has already been pointed out, most PIE-based apps (except for ftxPBrowser) load an almost new copy of PIE into memory when a new browser tab is opened. This, on the other hand, also means that registry changes, which PIE only notices when it’s started, will also be visible after opening a new window (because PIE also reloads the registry), without even exiting PIE.
This can be of tremendous help. Let’s assume you prefer visiting a banking site pretending to be desktop browser (because the page just doesn’t let you in say, non-desktop-IE browsers), while you would like to access the, say, the PPCMag blog or Pocket PC Thoughts pretending to be a Pocket PC client so that you receive lightweight-formatted content. And, you would prefer doing this at the same time: in one window you browse online banking pages, in another one you browse the Pocket PC-optimized pages of the above-mentioned sites. It’s indeed possible if you always remember which tabs you opened after toggling the User-Agent.
This is really great and informative. I've been wondering if I made the right decision (IEM WM6 until Minimo is good enough) and now I think I did. Thanks!
Original article updated at http://www.pocketpcmag.com/blogs/index.php?blog=3&p=1828&more=1&c=1&tb=1&pb=1 - sorry, I don't have the time to repost it in <10k chunks here.
r3bel said:
This is really great and informative. I've been wondering if I made the right decision (IEM WM6 until Minimo is good enough) and now I think I did. Thanks!
Click to expand...
Click to collapse
You are welcome
UPDATE (04/05/2007): Added a new row on Address bar (history / deletion / autocomplete), with a lot of screenshots; other minor changes in the chart.
In addition to yesterday's cleaning up the English & additional proofreading and today's adding a new row on the Address Bar history (deletion) / autocompletion, I've slightly modified the Opera Mobile-related information in the chart of the article, based on ResearchWizard's excellent feedback. (BTW, his Opera Mobile guide is just excellent and really worth checking out (alternative, direct link here)).
BTW, many have asked why there's neither "Verdict" nor "Most recommended" section in the Bible. The answer is very simple: while I, personally, consider Opera Mobile 8.65 the best browser closely followed by the WM6 (or, at least, WM5 AKU2+ - previous versions were 50% slower to load pages and, therefore, I wouldn't really be able to return to using them) IEM equipped with PIEPlus 2.2 if the bad JavaScript / non-existing AJAX support and the relatively high memory usage aren't a problem.
However, as you may have drastically different requirements, the above may not be the right solution for you. For example, you can ONLY use free software because, for example, you need the cheapest solution for enterprise-wide deployment, which means you'll need to cast a glance at Webby, Minimo or, probably the best free alternative, Opera Mini. Or, alternatively, you want to keep the original page layout on your low-resolution QVGA model; then, the first browser you should check out is Thunderhawk (not taking DeepFish into account).
That is, there was a reason I didn't (and still don't) provide a quick recommendation. There are a LOT of factors you need to consider when selecting your browser of your choice. You WILL want to thoroughly examine the feature / comparison chart, thoroughly compare each feature and consider whether the lack of a given feature is a showstopper for you or not. Providing a some-sentence-recommendation like ""go for Minimo if you need a free and, therefore, easily mass-deployable browser and memory consumption isn't an issue", "go for Opera Mini if you need minimal memory consumption, speed and also being free" or "stay with PIE if you don't need strong JavaScript / AJAX / CSS support and multitabs but want a free, dependable browser"" would have been an oversimplification.
I felt it useless to try to even replicate the information available in the comparison / feature chart in a Verdict section - there's simply too much information, I would have ended up pages on this "simple" subject. This is why I’ve left it out altogether – you’ll need to consult the chart so that you can make an educated, informed decision..
Updated the chart with Thunderhawk-related information. This means there are no question marks in the Thunderhawk-specific column any more. I've also provided several screenshots of Thunderhawk in action. Thanks to the Bitstream folks for providing me access to their service!
BTW, the article has been frontpaged by Pocket PC Thoughts in the meantime.
I had a really good read on this, very detail, and very useful information.
Thanks.
I’ve just posted a brand new Radar article, with a lot of new screenshots, to http://forum.xda-developers.com/showthread.php?p=1209974
PPCT frontpage; Just Another Mobile Monday frontpage
Finally, I can not stress and emphasize enough: if you have a specific need but lack the time to fully scrutinize the chart, use in-page searching (Ctrl-F) to quickly find the compatibility information you need. For example, if you want to know Flash, AJAX or JavaScript compliance, just use the word in question (for example "Flash") as the search expression and you'll really quickly find out which chart row discusses the given question.
Thanks to HowardForums user diadjika, I had the opportunity to thoroughly test Picsel’s famous Web (and document) browser for Windows Mobile and accordingly update the Windows Mobile Web Browser Bible (which, BTW, has just been frontpaged at AximSite).
The browser is WM5+ only (no WM2003(SE) support, sorry) and is NOT available for download officially; it’s shipped with some Windows Mobile models as is the case on other mobile platforms (for example, Palm OS).
It’s a direct (non central server-based) Web browser with REALLY excellent dynamic zooming / panning capabilities (regarding them, it’s the best of all Windows Mobile browsers) and built-in PDF, MS Excel / MS Word / MS PowerPoint and text reader. That is, it’s pretty much understandable why Palm OS users praise it so much.
Unfortunately, it also has its shortcomings; for example, the lack of a multi-tabbed architecture (as is the case with DeepFish / Thunderhawk and, of course, PIE without a third-party add-on), lack of file up/download capabilities, total lack of local caching, Ajax / Flash / Java / decent JavaScript support etc. In addition, sometimes it’s just painfully slow to download stuff, particularly with Yahoo Mail and for example the AximSite forums. That is, if you can’t stand its lack of speed (with some pages – with other pages, it has no problems at all), you’ll want to look elsewhere.
Make sure you thoroughly check out the brand new column in the comparison chart of the Windows Mobile Web Browser Bible for more information to see how it compares to the alternate browsers. The chart contains a LOT of screenshots showing the Picsel browser in action.
Verdict
While many (particularly Palm) people love the Picsel browser (and it has a lot of loyal Windows Mobile followers; for example, the excellent vijay555 at XDA-Developers), I don't think it's as good as the leading Windows Mobile Web browsers, particularly Opera Mobile 8.65 and the built-in PIE in WM5 AKU2+ / WM6 with a decent plug-in (like PIEPlus 2.2). It has VERY bad JavaScript and non-existent AJAX support, has no real "Fit to Screen" mode (the One Column mode is, in cases, too restrictive, particularly if you'd like to see not very wide charts and constantly zooming/panning is sometimes very awkward), sometimes very slow (see Yahoo Mail) and only offers one tab.
On the other hand, the excellent stylus-based dragging / zooming / gesture support of the browser, which is no doubt currently the BEST on Windows Mobile, should also be implemented by the alternate browsers, most importantly Opera Mobile (which has just, with version 8.65, implemented dragging) and PIEPlus. Are you listening, Web browser & PIE plug-in authors?
Some additional menu screenshots (see the chart for more!)
Normal / Reflowed layout
Bookmark view
Folder view (2)
Hewlett-Packard’s calculator series, while in no way as popular or standardized as the emulators of Texas Instruments (please see THIS for the one and only COMPLETE overview of emulating the latter calculators on Windows Mobile), indeed have their place under the sun. What is more, they have way better emulators under Windows Mobile that TI.
Note that, as with the above-linked TI article, you may want to read this roundup and actively follow the for example Wiki links. Higher-end HP calculators (as with those of TI) can easily be better than any native calculator and/or unit converter on Windows Mobile (WM for short), let them be traditional touchscreen-enabled Pocket PC's (Windows Mobile 6 Professional / Classic models) or no-touchscreen Smartphones (Windows Mobile 6 Standard) devices. Furthermore, which should also be taken into account, the majority of these emulators can freely be used (as opposed to mostly commercial native WM calculators) – with the highest-end HP models even when you don’t actively own the original calculator. I provide you with all the necessary manual links so that you can easily find out more information on a given model – that is, you don’t even need to own the (original) manuals. Hats off to HP (as opposed to TI) for being so generous and providing the ROM image of their best calculators and allowing for using them even if you don’t own the original calculator!
As usual with most of my roundups, you simply won't find a better, more thorough source of the subject. This is particularly true of my first-hand information on MS Smartphone (Windows Mobile 6 Standard) compliance. That is, if you're lucky enough to have a newer, high-resolution (QVGA) Smartphone and look for a decent calculator compatible with your device, make sure you read this article - you won't find "hacking" tips like these anywhere else.
Let’s start with the most popular 48/49 series, which many consider even better than the top-of-the-line Texas Instruments calculator series, the TI-89.
1. Emulating HP-38G/39/40G/48GX/48SX/49G
The HP-48 and HP-49 series are no doubt the best calculators ever manufactured by HP. They are not only graphing calculators, but also support CAS (read THIS for more info on this very subject). Should you want, in addition to, say, the Wiki pages, a guide to the different models and their target audience, also check out hpcalc.org’s Calculator Buying Guide.
Also note that, in 2000, HP ACO allowed the use of the HP38, 39, 40, 48, 49 ROM's even if you're not an owner of this calculator type (see for example THIS for references); that is, you are free to use this emulator even if you don’t have the original calculator(s). This is great news, particularly given that the manuals of the calculators are also available online.
Fortunately, the Pocket PC emulation of all these models is very strong (no bugs, hi-res VGA support, object export/import supported on Windows Mobile too etc.), as opposed to that of TI calculators.
1.1 Download, installation, configuration
First, you must download and install the original Emu48CE (alternate download HERE; homepage HERE. Here, click Emu48CE on the left and, then, Downloads at the top.) Emu48 is THE emulator for these models. It’s so good some have even tried to sell it on Handango (needless to say, it’s free).
Make sure you install all the ROM’s you want to use on the when prompted as, by default, it only installs the 39G ROM’s as can be seen in HERE. Note that you MUST untick the “Install Emu48 on PDA (required)” checkbox as can be seen in here (it also shows I’ve enabled installing all the other ROM’s). (If you forget to untick this checkbox, don’t try to click the newly created GNU Emu48CE icon in Start/Programs. Instead, just go to Start/Settings/System, click Remove Programs and select "GNU Emu48CE V1.23". Click Remove and, then, Yes.)
Note that the ROM files are installed by separate CAB installers; therefore, you won’t want to automatically dismiss the “Please check your mobile device screen” dialog of the desktop ActiveSync installer before the installation of each module is finished to avoid messed-up installment (for example, ROM images installed to the built-in storage instead of the storage card because the default setting under WM5+ is the latter).
Now, go to the Christoph Giesselink’s (the leader of the emulation project) homepage HERE. You’ll need to download at least (two if you have a QVGA device) two files:
E48MB113 (should the direct link be broken, just go back to the homepage and look for something like “The executable package of Emu48 v1.13 for Pocket PC 2002, Windows Mobile 2003 (SE) and 5.0 (ARM platform).”, where 1.13 will be increased.
the ZIP file linked at the end of the description of the same program (“Already patched KML files (from Emu48CE without bitmaps) can be found here.”)
Decompress the contents of both ZIP files. Copy the decompressed files to the home directory of the emulator (it’s \Program Files\Emu48 when installed to the main storage – note that you will want to prefer installing the emulator to storage cards on models with little built-in storage because the ROM images take up a lot of memory). Make sure you overwrite ALL the original KML files!
Now, on a file explorer tool (for example, the built-in File Explorer) go to the same director right on your handheld and tap the just, manually transferred Emu48.ARM.CAB. This will create a new, Emu48 icon in Start/Programs (with WM5+ devices; with pre-WM5 ones, it’ll be right in the Start menu) – you can tap it right away.
Upon starting the emulator (or, when you choose File / New), you’ll be offered the choice of selecting a new so-called 'KML script'. I’ll elaborate on these scripts a bit more later; now, suffice it to say that they tell Emu48 which ROM to load and what keyboard bitmap to use. Note that the default files are optimized for QVGA (I’ll elaborate on VGA issues later) and most of the titles also contain the emulated model version; that is, it’ll be pretty easy to select one. (Of course, you can always experiment with the alternatives as the more popular and recent calculator models (48/49) have more than one KML file, all with different layout. That is, do experiment with them - it's certainly worth it.)
Let’s assume you want to emulate the 49G; therefore, let’s select one of the alternatives, “HP49G for Emu48”:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Now, click the OK button at the top right of the dialog (to the left of the X button). If nothing seems to happen, repeat this. You’ll be presented the results of the script compilation; if everything is OK, you’ll also see no error messages at the bottom of the scrollable text area and another OK button. The GUI loads and you can start working right away.
The KML script compilation process may encounter problems, particularly if you download additional KML scripts. You will want to do the latter to, for example, have a high-resolution VGA button layout on your VGA handheld, not just a low-resolution, ugly, blocky QVGA one. The two most common errors are the lack of the ROM file to load and the lack of the keyboard bitmap files:
When the ROM is missing, you will get the error message “This KML Script doesn't specify the ROM to use, or the ROM could not be loaded.”. If you don’t want to do some blind guesswork, just look into the associated KML file (with “HP49G for Emu48”, it’s in the file hp49.kml – just look for the “Title” at the top of each KML file to quickly find the associated source file) and look for the section defining the ROM; that is, the Rom parameter in the Global group at the top:
This states that, for the KML file to work, it needs a "ROM.49G" file in the same directory. Look around for the file – for example, reinstall it using the Emu48CE installer.
Missing bitmap files, for example, the lack of a “hp49.bmp.png” file in the home directory of Emu48, will result in receiving the compile error “Cannot Load Bitmap hp49.BMP” Fixing this problem, in general, only involves reinstallation and/or Googling for the given BMP layout file.
Finally, you may also encounter warnings (NOT fatal errors! That is, the compilation succeeds!) like “Patch BEEP.49G is Wrong or Missing”. These warnings can safely be ignored as these beep files only add beeping capability to the emulator – something you don’t necessarily want. If you DO need these files, however, you may find them all in the official, free HP SDK (details HERE, should the direct link refuse working) and copy emu\beep.48 / emu\BEEP.49G to the home directory of the emulator. Note that, alternatively, you can also find these beep files in the additional VGA skins, explained in the following section.
1.2 Additional KML files (a must for VGA users!)
The default keyboard skins coming with Emu48CE are QVGA only. If you have a VGA device, you’ll need to download the following skins:
Wombat3 for 48 SX and GX
HP49VGA for 49g
Just unZIP these files and transfer all the KML and bitmap files to the home directory of the emulator. After this, upon selecting a new KML file, you’ll also be shown these files as can be seen in HERE (Beemer’s 49G skin) and HERE (the Wombat3 GX skin). In action, they are indeed very cool as can be seen for example in HERE and HERE. Much prettier than low-res QVGA skins, aren’t they?
Note that if you don’t like the original (white) Wombat3 48GX script, you can also give a try to the dark, much more "natural" Juan Pardo scripts HERE. It’s not only more “natural”, but also contains some new, useful buttons in the upper left area of the screen. Example screenshot HERE.
There are several Landscape skins too (unfortunately, not in VGA – that is, for example HTC Universal / Athena users are left in cold. By default, the VGA skins aren’t Landscape-compliant.)
1.3 Usage
After all the hurdles of the installation (and, if you’re a VGA user, the additional installation of VGA skins), you can rejoice: the rest is much easier and there are no known problems with the emulator running on a Pocket PC (WM Classic / Professional), unlike with the TI emulator.
If, on the other hand, you only have a MS Smartphone, don’t expect much: while (after manually extracting and installing the files) the emulator itself starts, you can’t go any further from the KML selector screen (tested on the QVGA HTC Vox in both orientation modes; screenshot HERE and HERE).
The emulators can be used in exactly the same way as the original calculator. The only difference is the lack of the “physical” expansion like SD cards / connectivity. However, there is connectivity emulation in the emulator.
1.3.1 What if you don’t know the original calculators?
The documentation / manuals of all these models are available online. See the following links:
49G+ / 48II docs
It’s also linked from this generic page, with manuals of previous models too (note that the HP39 link doesn’t work; use the one HERE instead). I especially recommend the HP48 manual HERE if you’d like to more closely learn more about the system. Note that, however, you don’t necessarily need to read it; my tutorial will be sufficient to get you started and even load third party apps into the emulator. Only check it out if you really want to learn more about these excellent calculators.
1.3.2 Uploading third-party software in the emulator
Get the software title, start the emulator, make sure it doesn’t do anything and, in the desktop version grab the binary distribution (it’s, in most cases, ends in .lib file) to the emulator image. In the Windows Mobile version, select Edit / Load Object and select the file. Note that as, on Windows Mobile, Emu48 uses the system-level, default file dialog box, you may want to put your files in either \My Documents or in the root / the first subdirectory of your storage cards in order to be seen. Alternatively, you may want to install Mad Programmer’s free, excellent File Dialog Changer as is explained in for example HERE. In here, I’ll go on with showing you desktop Windows screenshots; after loading an object, it must be saved into the local memory using exactly the same steps as on the desktop Windows.
In this example, I show how the single PSYCH13.lib file of the HP-48GX version of Psychro needs to be deployed.
To make absolutely sure a given program file can be deployed in the emulator with simple (object) drag and drop, look into the beginning of the file. If it is indeed binary and starts with HPHP as for example in this example:
then, it’s compatible with this transfer model. (Otherwise, for other types of resources like additional GIF files with, say, games like the 48 port of Prince of Persia, you must use the MUCH more complicated terminal emulation. I don’t elaborate on the latter as most math libraries – the files that you most probably want to run, as opposed to games – come as standard LIB files deployable this way.)
After dragging, you’ll see something like THIS.
Now, you will need to store the uploaded program in one of the so-called “ports”. It’s how HP refers to different memory types. Port 2 is, for example, the emulated SD cards in the 49G+ (and the 50G), the highest-end 49-series model(s). With other devices, only port 0 and 1 are accessible; of the two, you’ll want to use the latter.
To do this, just press 1 and, then, STO (the second button in the second row on the 48GX). The stack list will be cleared, showing the object was indeed saved.
Now, switch off the device (the green button and ON; both are at the bottom right) and, then, again on (the lower left ON button). Press the green button again and, then, 2 (LIBRARY). You should see the title “PSYCH” in the title area at the bottom (also see where the mouse cursor stands in the screenshot!). You can click it (two times) to start it (screenshot of the running app HERE).
You can add a lot of other apps in the same way: when no program runs, just drag-and-drop the program, click 1 and STO, switch off and on the machine and voila: the new program is ready to run and listed in the Library section, next to earlier deployed libraries (screenshot of running HERE).
1.3.3 Downloading additional software
The best source of additional software is the archives of hpcalc.org. See THIS for HP48 and THIS for HP49 software.
Just an example of some famous libraries directly deployable on a 48 (from the Symblic Math category)
Erable 3.024
ALG48 4.2
In addition, there are other pages to acquire software from; for example, that of Savage Transcendental Studios. This page contains some additional database / Japanese studying 48GX/49G(+) apps. Some of them are simple libraries (for example, the 48G version of Kana Tutor and Psychro), which can be loaded straight into the desktop emulator via simple drag-and-dropping and, to the Windows Mobile one, by simple object importing. These programs are also accompanied with PDF files explaining how this needs to be done.
2. HP-41; dedicated website
There is only one, free emulator to emulate these old, alphanumeric calculators, eV41. It’s currently at version 0.93 and it’s highly unlikely it’ll be developed further (it was last modified over five years ago). Not that it’d be THAT important: for example, it supports loading user code even in current form.
Note that in order to access the WM version, you’ll need to register yourself! Also note that this distro also contains the desktop Windows emulator.
Fortunately, using this emulator is pretty straightforward and there are no known problems / bugs running it on any platform, except for the lack of Landscape (don’t try relying on scrolling because, as with the TI emulator, it’ll result in bitmap problems as can be seen in HERE) and Smartphone (a “hacked” version of ev41 doesn’t find some DLL) support.
3. HP17B/17BII/19BII/27S/28S/42S: emu42
(current desktop and Pocket PC version: 1.09 and 1.08, respectively; note that the page at hp42s.com lists OLD versions. HERE is the manual.)
As with later calculators (the above-introduced emu48 and the HP38/39/40/48/49), there is an all-in-one emulator for the HP 17B, 17BII, 27S, 28S (1988, semi-graphical: 137*32), 42s (weaker Wiki page HERE; released in 1989; still WAY worse than the TI-89 – for example, no real graphing).
It uses exactly the same approach to KML files / skinning as emu48; that is, if you do read the emu48-related first chapter, then, you won’t have problems deploying for example new, additional skins from the homepage (for example, the VGA 42S skin, SKN42SMV - since version 1.02, it also supports VGA resolution). Fortunately, as opposed to Emu48, it requires no tricks when installing – no need to manually copying KML files etc.
Note that, unlike with Emu48CE, you must download the ROM’s from your calculators manually – they aren’t available on the Web (don’t even try to run a Web search for the ROM names in the KML files.) If this is a problem and you need to emulate the 42s, I have some great news for you: there is another 42s emulator, Free42, which does not require a ROM image.
4. HP42s: Free42 1.4.36.
As has already been mentioned, as opposed to Emu42 discussed in the previous chapter, this emulator does not require a ROM image and may be used even if you aren’t a rightful owner of the original emulator.
There are two versions of the emulator: decimal and binary. The latter is much faster but, because of the internal representation differences, may not work with some legacy applications. If this is not a problem, install the binary version (copy and execute it there to install). Also see the section “What's the deal with the "Decimal" and "Binary"?” in the README.txt coming enclosed in the ZIP archive. The two versions can co-exist without problems on the same machine and, therefore, you can always go back to the decimal version, should a given application refuse running.
(the same with the “realistic” skin, which is pretty blurred because of the low resolution)
Note that, as with the ROM’s, the original, official manual of the 42s isn’t available on the Web either (as opposed to the 39G/40G (CAS)/41C/48G/49G+ series with manuals online); however, there’s an unofficial ‘fan’ manual HERE. The latter manual is very easy to understand – actually, I’ve found it much easier to comprehend than HP’s official manual.
Compatibility-wise, you can use the numeric keys of devices with built-in keyboard. It’s not compatible with the Landscape mode. It’s capable of importing / exporting programs. And, finally, good news for QVGA Smartphone users: if you copy the executable file(s) (after manually extracting it/them from the CAB file(s)) to your phone, it’ll run flawlessly. The numeric (phone) keys will work OK; for the rest of the keys to access, you’ll need a cursor emulator like SPHelper. Example screenshot or it, running on my HTC Vox / s710 (the cursor is that of SPHelper):
Of course, this only applies to QVGA Smartphones - traditional (176*220) models will only show part of the skin and are, consequently, useless.
5. HP-16C
This calculator, mainly meant for computer programmers needing for example binary / hexa conversions, was manufactured between 1982 and 1989. Also see THIS for an intro to this model. It only has one emulator, CP16 (direct download links HERE); the current version is 0.326.
Installing and using this emulator is pretty easy: you download the above-linked ZIP file, extract cp16_ppc.exe from it, transfer it to your Windows Mobile device and start it from File Explorer (you can, of course, put a link to it into \Windows\Start Menu\Programs).
Compatibility-wise, it’s not Smartphone-compliant. It has built-in support for Landscape (View / Landscape); for it to work, you must start the calculator in Portrait mode because the emulator only rotates the GUI for itself, not on the OS level. This also means you won’t be able to use it in left-handed Landscape mode (the native mode for the Universal, Wizard, TyTN / Hermes and all other Pocket PC’s with a slide-out keyboard) unless you use a third-party hack to rotate the Portrait screen with 180 degrees before starting.
6. HP-10B Plus (business), HP-12C (financial; is still being manufactured (since 1981)) and HP-15C (advanced scientific)
I elaborate on these three calculator models in the same chapter because they are emulated by very similar, commercial emulators by Lygea Calculators. They are self-standing applications meaning you won't need to hunt for / download ROM images.
These emulators are as follows:
Pocket 10B SE Business Calculator 2.0; ($19.95) (WM6 VGA screenshot)
Pocket 12C SE Financial Calculator 1.61; $23.95 (WM6 VGA screenshot)
Pocket 15C SE Scientific Calculator 1.22; $20.95; WM6 VGA screenshot:
Using and the compatibility / features of these three emulators are pretty similar. For example, all of them support the Landscape orientation (example of the 10B emulator HERE) and use hi-res on VGA devices and, generally, look “cool”.
Note that all these emulators store their resolution-dependent resource DLL’s into \Windows, which isn’t the best news for users of some non-native WM5 models updated to WM5; for example, the HP iPAQ hx4700. Unfortunately, relocating these files to the app’s home directory won’t work (haven’t tested the same with relocating to another directory on the System Path - it might work).
Smartphone compliance-wise, the hacked (EXE + DLL’s in \Windows) version, unfortunately, doesn’t display the three bottom icons for going further (and clicking around won’t help either). That is, while you can enter the reg. number (with a cursor emulator like SPHelper), you just can’t go further. This means no (hackable) Smartphone compliance.
6.1 Pocket BizCalc by Odyssey Computing, Inc. 4.0.09
The 12C is also emulated by Pocket BizCalc by Odyssey Computing, Inc. It’s pretty OK and considerably cheaper ($14.95) (but much uglier, non-Landscape-compliant and not making advantage of hi-res resolutions) than the Lygea emulator.
Note that Michu’s Emupage only lists the H/PC and the Palm-size PC versions. You won’t want to get any of them: the H/PC version has major screen rendering problems (for example, the original LCD screen is invisible; see THIS and THIS if interested) and the latter is MIPS / SH3-only; that is, it won’t work on ARM devices, meaning any PPC2k2+ Pocket PC’s manufactured in the last 5-6 years.
Also see HPC:Factor’s review HERE if interested.
Smartphone compatbility-wise, after manually extracting and transferring the pbizcalc.exe file to the QVGA smartphone, it’s more or less usable. However, the right and the bottom side of the GUI will be hidden. This, unfortunately, means the multiply, addition, substraction, division and addition operations (along with some more advanced memory operations) won’t be available to “click” via a cursor emulator like SPHelper. (Screenshot HERE)
7. HP-10B II (Business; Wiki stub)
A similar (but definitely weaker – see below!) calculator, Moravia Advanced Financial Calculator 1.0 (direct Emupage download link; can’t be found on PenReader’s homepage any more), is available (but, given that PenReader doesn’t seem to support it any more, it’s rather dubious whether it’s worth paying for).
As can be seen, this calculator is definitely inferior to the original one – just compare the functionality it offers to that of the original (see the buttons in the screenshot above and those of the originals at the MyCalcDB page. It’s not a 10B emulator either (see the original page HERE).
Smartphone compliance-wise, if you extract the one and only EXE file from the original CAB file, it’ll run flawlessly on QVGA models in Portrait mode as can be seen in the following screenshot (just press the Action button when you’re shown the license agreement to get rid of it):
Unfortunately, you must use a cursor emulator even for inputting numbers – the numeric keys won’t work. And, of course, don’t expect compatibility with traditional 176*220 Smartphones either because of the skin size (screenshot).
8. What next?
This is the second instalment in my thorough article series on Windows Mobile calculators, the one on Texas Instruments calculators being the first. I'll soon publish the third instalment on native (non-emulator) Windows Mobile titles. Stay tuned
9. Other discussions of HP emulators
Some links for readers wanting to know what others think about the emulators.
Hp 48g/48g+/48gx/49g/49g+/49gx
Tutorial: HP48G calculator on your Axim.
Emu98CE; also quickly elaborates on emulating other HP models
Engineering Software
HP48 Emulator with 2003?
Cool! HP48GX Emulater
RPN Calculator (also discusses other, earlier HP models)
Need a recommendation for a calculator (mostly on other, non-HP models)
Graphing calculator - advice?? (mostly on TI’s calculators)
good scientific calculator... (generic)
Graphing Calculator for Axim? (generic)
Calculator Software
Math apps! (Calc. Emulators, Plotting, Physics, etc.) - PLease! (generic; note that the VGA 49 link doesn’t work any more)
Calculators (general; mostly about TI)
(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, 1.2.0.13 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.
A related (Russian) thread is HERE (BabelFish HERE)
2.6.3 Mitac JVM
This is an old (2003), pretty bad and not recommended MIDlet manager.
Related thread: MoDaCo Working midlets and non-working midlets.
3. Introduction to using MIDlets
Now, let’s see how you can install (deploy) MIDlets on your Windows Mobile device and how you can use them. Fortunately, doing this is very simple.
First, make sure you do have a KVM on your handheld. If you don’t, install one. If you have a non-phone Pocket PC and want to use any MIDlet manager (except for IBM J9), make sure you install the SMS.dll and Phone.dll hacks and / or if you have a pre-WM5 device, you’ll need to choose from either IBM J9 or old versions of TAO Intent.
After this, your life will be pretty easy.
3.1 Two ways of deployment (installation): online vs. offline
In general, there are a lot of MIDlets available online. In general, if you click them on the Web from your Windows Mobile device (preferably, using a built-in Web browser), they get downloaded to your handheld and automatically deployed in your device. The same happens with JAR files you copy to your handheld and, then, deploy them locally by either making your KVM explicitly search for it or clicking it / pressing the Action button from a local file manager. In the following two subsections, I elaborate on these questions.
Note that, generally, there are two kinds of files you’ll run into: JAD files and JAR files. When you download a MIDlet to your desktop PC so that you can, later, deploy it into your handheld’s KVM, only download JAR files, not the JAD ones.
If there’s no way of directly accessing JAR files, only JAD ones (as is, for example, the case with the Opera Mini 4 beta download page HERE - note that you should visit it from a Wap-capable desktop browser (Opera), that is, NOT from IE!), the “Download high memory version” download link will download you a JAD file, not a JAR one. You can directly copy this file to your handheld but, then, it’ll need to have Internet connection to be able to download the JAR file referenced by the small JAD file. If you can’t guarantee this or prefer collecting the JAR files offline, do the following: open the JAD file you downloaded with a text / file viewer (editor) and look for the attribute named “MIDlet-Jar-URL”. Copy the URL after the colon (for example, http://mini.opera.com/dl/1B8GM15aEP5uj-jE8A4AACMhDw8C/mini.jar) to your desktop Web browser. Now, you’ll have direct access to the JAR file – you can already safely save it.
Note that some KVM’s support separating MIDlets into different folders. Some allow for selecting the folder at deployment time (an additional step in the deployment process; this is what, initially, the “root” screen stands for when deploying into Esmertec products), the others after deployment. (And, on the Nokia, as it has no MIDlet manager interface at all but all deployed MIDlets are listed as regular applications, you can use the system file explorer tools to move them elsewhere, in another folder. This is slightly different from the way MIDlets were handled or early MIDlet-capable Nokia phones like the N-Gage, where there was a separate folder for them.) Also see the “Possible to use folders for better MIDlet separation?” row in the main chart for more info & screenshots.
Also note that, during the deployment process, you will also need to let the installation continue, particularly when the given MIDlet isn’t signed with a trusted certificate. (The vast majority of MIDlets are like this.) This, in general, only means you will need to press the left softkey some times on both Windows Mobile and Symbian.
3.1.1 Offline: originating the deployment from inside the manager vs. doing the same from the outside
There are two ways of deploying a local MIDlet JAR file to your MIDlet browser. The easiest is the default way of just clicking / pressing the Action key while viewing it from a local file explorer tool. This, as long as the file associations are correctly set (which may NOT be the case if you install more than one KVM’s on your handheld – more on this later), will automatically invoke the JVM and deploy the MIDlet.
Another way to select the related menu item inside the given KVM is to search for JAR files in the local file system (for example, Menu / Install / Local with TAO and Menu / Install / Local Files with Esmertec’s KVM’s). Unfortunately, it’s pretty flawed with most of the KVM’s; for example, the lack of alphabetical sorting, some of them can’t display all the files at once if there are more than 200-250 of them, some are only looking in a given directory or have no search capabilities at all, which is the case with IBM J9. The latter, as it doesn’t allow for browsing the file system for a given JAR file, forces you to enter the full (local, that is, Error! Hyperlink reference not valid. ) URL of the JAR file, which is really a pain in the back. Finally, Jblend doesn’t offer any local file browsing / deployment at all – with it, you must initiate the deployment from any file explorer tool. The latter is “only” highly recommended with other KVM’s because of the other annoyances and bugs they have.
3.1.2 Online
This is much easier: you just navigate to the given page with the MIDlets online and just click the JAD (or JAR) files. Note that some KVM’s may not allow for installing Web-based JAR’s directly; with them, you will need to click the JAD file instead. This is in stark contrast with the local install: all the tested (non-disqualified) browsers allow for the direct installation of JAR files and no local JAD’s are needed.
3.2 Running the already-deployed MIDlets
After your MIDlet is deployed, you will need to click it from inside the KVM if it’s not started automatically: most current, recommended KVM’s ask the user whether the MIDlet should be started right after the deployment.
Otherwise, you just start the KVM environment (it’s, in general, in the main Start Menu / Programs folder (except for the HTC Kaiser / Tilt, where it’s in the Tools subdirectory there) and is called “Jbed”, “Java”, “Jeodek” or “Esmertec Jbed/Jeodek” with the Esmertec products, “MIDlet Manager” with TAO Intent, “Midlet HQ” with IBM J9 (linking emulator.exe) and “Jblend” with Jblend) and simply double-click the given, already-deployed MIDlet. With IBM J9, you must select the uppermost “Launch” menu item in Actions instead, after highlighting your MIDlet.
Now that I’ve made it clear it’s only Nokia’s (Symbian) MIDlet manager that puts the deployed MIDlet icons in the traditional Applications folder, you may also want to know whether you can also hack the Windows Mobile KVM’s to do the same. This, as you may have already guessed, also greatly speeds up starting a given MIDlet: you don’t need to start an additional layer of managers. The answer is: yes, with most KVM’s (except for Jblend), you can. Then, you won’t need to separately start the KVM interface to gain access to the deployed MIDlets. See the “Direct, system-level links (shortcuts) to MIDlets” row in the main chart for more info on this. Note that, as opposed to Nokia’s system-level links (or, for that matter, the way the excellent Palm OS emulator, StyleTap, works on Windows Mobile), all these links will have the same icon, unlike under Symbian – not that of the icon of the MIDlet itself. This is a definite disadvantage if you prefer looking for a MIDlet based on its icon and not its name / position.
3.3 Security issues
Unlike with native Windows Mobile (or Symbian) applications, you’ll always run into security prompts. Therefore, it’s worth knowing a bit about what they are all about.
Java programs, in general, put a lot of weight on security measurements. This is why they continuously prompt the user when they try to access “sensitive” resources like the Net or the local file system.
Fortunately, you can, in general (except for Jblend), easily get rid of this problem:
- if you have any of the Esmertec KVM’s, use the MIDlets signed by the MXit LifeStyle-signed JAR’s available in THIS thread. Note that I’ve separately linked in the most common non-game (games, in general, aren’t affected by these issues, unless they want to use Bluetooth) MIDlets you may want signed. Then, you’ll be able to set their security model for “Blanket”, which means you’ll never be prompted for permission. It’ll certainly be easier for you than with the default “Session” (you’re asked once per session – that is, after starting the MIDlet) and the even more restrictive “One Shot” security model. Incidentally, Jblend employs exclusively the latter model with accessing the Net; this means it’s pretty much useless for applications like Opera Mini or the Gmail MIDlet. This is particularly true with the Gmail client, where it prompts the user to allow going on upon downloading every single mail (header). That is, never use Gmail under Jblend.
- if you have a KVM where you can “hack” the security descriptor files (all Esmertec KVM’s and IBM J9 belong to here; TAO Intent is also said to be but the opinions do differ on the latter and I haven’t tested this hack), do the hacking to get rid of the annoying security prompts. See the “Security: Allow permanent Net access without prompting ("Blanket" security model, as opposed to "Session" / "Oneshot")?” row in the main chart for more info / links.
3.4 Runtime issues: concurrent (parallel) and background execution
The KVM’s slightly differ in how they handle concurrent execution of MIDlets – or, simply running something in the background. Some (TAO and J9) allow for the concurrent execution of MIDlets, while the rest don’t. This means the, otherwise, excellent Esmertec KVM’s will only run one MIDlet at a time, while the certainly, in most respects, inferior J9 and TAO Intent will run any number of them. TAO, in addition, also supports the in-environment switch between running MIDlets, unlike J9.
Support for parallel MIDlet execution can be very useful; for example, the Gmail MIDlet could continuously check Gmail for incoming messages, while, in another MIDlet, you could browse the Web. You can find some other uses for example HERE, in the comment section (the comments HERE are also pretty instructive and shed light on related issues).
The ability to execute a MIDlet in the background is also very important. Just an example: you start downloading a Web page in Opera Mini but quickly realize the download will take ages. In order to save time and do something useful in the meantime, you decide to minimize the Opera Mini task, do something else in another program and only return later, expecting Opera Mini has already finished downloading and rendering. All the tested WM and Symbian KVM’s support this kind of operation; the only exception is Jblend, which immediately pauses when it loses the focus. Incidentally, Jblend’s behavior also has some other consequences; for example, in no way can you use external character injectors to it (unless they’re continuously running and, therefore, don’t result in executing a new process; PQzII is one of these) and you will even have problems uploading Jbenchmark results to the server (because it constantly thinks the MIDlet has been paused and prompts you for resuming).
I also recommend Solnyshok’s excellent article for more information on the advantages of parallel execution of some MIDlets. Also note that the article contains an excellent hacking tutorial on how multiple instances of the same MIDlet can be executed at the same time.
4. The main chart
Again, this is where you’ll find most information. It contains an order of magnitude more information than the article you’re just reading in a well-condensed, tabular, easy-to-compare form, packed with tons of screenshots helping in finding out how a given feature should be enabled / used.
I’ve already elaborated on several (for example, security-related) of the rows this chart has; now, let me elaborate on the rest.
In the “Price / availability” row, as has already been stated, you’ll find where to get / download the given KVM from.
In the “Platform compatibility” group, I’ve listed three rows: compatibility with non-phone Pocket PC’s, Pocket PC Phone Edition devices and, finally, touchscreen-less Smartphones (abbreviated as SP’s).
As has already been pointed out, you MUST apply the SMS/Phone DLL hack explained in the Jeodek column if you have a phone-less, “classic” Pocket PC. Also, if you have a MS Smartphone (as opposed to Pocket PC’s), pay special attention to the compatibility remarks here as, unfortunately, not all titles are Smartphone-compliant or, if they are, you may encounter some problems when trying to run them.
The “Generic compliance with standards” group is more for techies: people that would like to know everything about the standards support of the given KVM. As can clearly be seen, the Nokia N95 KVM blows all the other KVM’s out of the water (in this respect too); this is particularly true of, under Windows Mobile, never (except for some very old and long-discontinued IBM J9-specific add-on projects I’ve elaborated on HERE) implemented, for, for example, multiplayer gaming (give a try to the MIDlet version of 3D Constructo Combat in multiplayer mode on even slower / older Nokias like the 6680 – you’ll LOVE it! The same stands for for example the infamous Naval Battle: Mission Commander) Bluetooth support. The same stands for other goodies like support for camera: all WM KVM’s lack the support for it, as can clearly be seen in the “MMAPI Video-capture” cell of the “JVM Multimedia (JSR 135)” row. It could be VERY useful; see for example the posts HERE, seeking for support for barcode reader applications. Audio capture (which isn’t really supported by many apps either) is also pretty useful; see for example the TellMe MIDlet for a real-world usage example. Yeah, you can clearly see MIDlets are in no way for gaming only – there have a LOT of enterprise uses and are particularly useful when you have a lot of different platforms you need to quickly develop a business solution for!
In the “JVM Memory” row, I’ve listed the appropriate heap (free memory) size available for each KVM. The more, the better for running memory-hungry MIDlets – unless the given KVM uses dynamic (de)allocation of memory when the need arises. Then, it’ll be able to run even the most memory-hungry MIDlets (for example, a full JBenchmark category, in High Quality, packed into one JAR). Unfortunately, only Nokia’s KVM and Jbed support the latter. Also note that you can set the memory allocated for Jblend in the Registry.
Support for “JVM M3G”, that is, the Mobile 3D Graphics API is the dream of most Java MIDlet gamers. As can be seen, several KVM’s support it. (Speed, without hardware acceleration, is another question.)
The “JVM File Connection” group is also very important, particularly with applications like Opera Mini Mod, the unofficial (and, unfortunately, illegal; therefore, I cannot provide a link to it either) “hack” of Opera Mini, adding a lot of goodies like (pretty rude, but still working) page saving and IEM favorite import / export. These all require access to the file system, which, unlike with real Java, isn’t built-in or required by the basic standard. This is why so few WM KVM’s support it: IBM J9 with an additional hack (I’ve elaborated on the installation in the chart) and Jbed. Interestingly, some real-world tests were failed by Jbed, while IBM J9 passed all of them. The support for accessing the local file system is certainly a big plus with IBM J9 – one of the very few advantages of the environment, along with, for example, the ability to run several MIDlets at the same time.
The “Storage usage” group is very important because internal storage memory is doomed to fill up very quickly (especially with low-end WM devices only having 64M of Flash ROM – an example is the HTC s310/Oxygen WM5 Smartphone), particularly if you install sizable games (current games are 300-600 kbytes in size). In this group, I’ve explained the following:
Where can a given MIDlet manager KVM be installed to – that is, can it be installed to a storage card? All of them can (note that we’re, mostly, dealing with XDA-Dev-created installers and hacks in here!), except for Jbed, which MAY require some additional manual file copying (also explained in the chart).
Where the deployed MIDlets are kept: This is also highly important. Fortunately, it’s only IBM J9 that is doomed to store the deployed MIDlets in the internal storage (I’ve tried to hack it to a card very hard – see my related article – but in vain); other MIDlet managers, when installed to a storage card, don’t. Note that, should Jblend and TAO be an OEM-installed KVM on your handset, you can still easily “hack” them to store their MIDlets on a storage card with a simple Registry edit.
In the “Text input” group, first, I’ve listed the copy / cut / paste capabilities of the KVM’s. One of the biggest problems with TAO is the complete lack of copy / paste functionality in any of its textboxes. This is a real pain in the back. Note that some 4pda users have implemented an external, not very reliable way of pasting text to the TAO textboxes (via MortScript), it’s still far from perfect.
“Known text input-related bugs? Maximal editable pre-populated text area size?” elaborates on the text input-related bugs of the tested KVM’s. The most important of them (without any exception – not even Nokia’s implementation did fare well in this respect) is the text input areas’ limited size. This means the following: when you, for example, post an answer in a forum using the “QUOTE” button, you may end up not being able to enter anything and/or your answer getting completely deleted. In general, the threshold is between 1 and 8 kilobytes, depending on the actual KVM and the Web browser you use (Opera Mini fares far better in this respect than its modded version; I think because the latter uses 16-bit Unicode for input, which take up double the memory as the 8-bit input of Opera Mini.) Therefore, make sure you either quote VERY short answers and try to remain under the threshold or try not to quote anything.
In addition, TAO has a very bad, additional bug: if the quoted (and/or, original) text contains line breaks, you won’t be able to edit it at all.
I really recommend giving the test HTML page I’ve created for this test a thorough try to see what restrictions there are, whether your input is retained (after you exit the edit mode) etc so that you can be absolutely sure you don’t mess up anything when you do start filling in Web forms or post to forums with Opera Mini (Mod).
The “Display” category contains information on the usage of font smoothing technologies like ClearType (also see THIS request). As can clearly be seen, it’s only when using the smallest character size and only with some KVM’s that there is font smoothing (with OM4b2)
I’ve devoted two separate rows (and a lot of screenshots) to demonstrate the font sizes of Opera Mini 4 beta 2 in both VGA and QVGA because a great deal of misinformation is all around the Net on the different font sizes of each. For this test, I’ve also created a test page. As can be seen, the font sizes are roughly equal with all KVM’s, as opposed to what some people state. Also note that I’ve also published how you can increase the font size in TAO with a simple Registry edit (I’ve also attached the import file) – the ability to do this is clearly is a definite advantage of TAO.
As far as the “Keyboard, SIP, softkeys” group is concerned, please read THIS for a very thorough explanation.
I’ve already elaborated on most rows of the “MIDlet installation, separation, direct invocation, uninstall” group; therefore, I won’t go into this once more. It’s probably only “Registry import files to quickly reassociate JAR / JAD files” that still hasn’t been explained. Please see the “2.4 Co-existing on the same Windows Mobile devices” section in the Definitive Guide to Running 3D-enabled Java MIDlets on Windows Mobile to see why you might need these Registry import files if you plan to use more than one KVM’s on your Windows Mobile device and want to retain (or, quickly restore) the ability of a given KVM to deploy a MIDlet you click on in an external (Windows Mobile) Web browser or in the file system.
The “Security” group has already been explained above.
The “Misc (sound, compatibility with some popular apps, proxy, etc)” group contains some miscellaneous tests and rows like
support for full screen: as can clearly be seen, in this regard, Jbed is the best (it indeed offers full screen) and Jeodek is the second (it only displays the upper task bar but not the lower menu bar; Jeodek M3G being the only exception when run on the MS Smartphone platform). So does Jblend. TAO and IBM J9, unfortunately, both display the two bars at the top and bottom. Needless to say, Nokia’s KVM also makes use of the full screen estate.
Sound support: as has turned out during the tests, Jbed (along with Nokia’s KVM) is by far the best KVM when it comes to playing in-game music. Note that I’ve tested it being stereo by running Doom RPG, a very famous MIDlet (even PocketGamer.org’s infamous Sponge likes it). Strangely, while Jbed does support stereo, Nokia has failed the stereo test: it only plays music in mono. At last something that Nokia’s KVM gets beaten at
Proxy support is also very important and in high demand among Opera Mini users (as Opera Mini, by default, doesn’t support proxies, unlike Opera Mini Mod, where you can enter the proxy address right in the browser settings). In these tests, I’ve used my custom-written Web client MIDlet and Web server to easily find out which of the several possible ways Opera Mini (or, any other Web browser not supporting custom, local proxy settings) can be made use a proxy. As can clearly be seen, only Jbed and IBM J9 support this. (I haven’t tested Nokia’s KVM in this respect; I assume it works OK.)
the compliance test of three highly popular productivity (non-game) MIDlets: Gmail, Opera Mini and Opera Mini Mod.
5. jBenchmark Benchmark Results
I’ve also made some serious benchmarks with the well-known jBenchmark suite.
First, it’s worth pointing out that, while Esmertec Jbed does promise speedup by compiled code, in reality, it doesn’t mean THAT big a speed increase. That is, you won’t even see a twofold speed increase in everyday apps / games – if there will be any speed difference at all. In the charts, I’ve emphasized the tests where Jbed produced FAR better results than other MIDlet managers running on the same device. I’ve used plain bold to emphasize differences up to two; to emphasize even bigger differences (for example, the Chess test), I’ve additionally used Italic and <u>Underline</u>.
It’s also worth pointing out that while high-resolution (VGA) devices (in the test, the Dell Axim x51v and the HTC Universal) tend to run standard 2D graphics tests (at times a LOT) slower than standard-resolution (QVGA) models like the HTC Wizard or the HTC Vox / s710, with 3D (with the only currently available, 3D-capable MIDlet manager, the TAO Intent 11.x series), the differences aren’t that big.
As far as the 3D benchmarks are concerned, which show a clear, sometimes 20-fold speed difference in favor of the 3D hardware accelerated Nokia N95, don’t think Windows Mobile devices are THAT bad at playing the currently available 3D games. While M3G games indeed run pretty much flawlessly on the Nokia N93(i), N95 and E90 (the current Nokias with 3D hardware acceleration), the currently available, non-accelerated Windows Mobile KVM’s don’t produce MUCH worse results either – most 3D games still remain playable under WM too. In practice, the 20-fold difference in these synthetic tests reduce to two to three-fold difference with currently available, tested 3D MIDlets. Never ever believe anyone that states the opposite – he or she, then, hasn’t compared (unaccelerated) Windows Mobile and (accelerated) N95. I did and know the difference, which is certainly not even tenfold, no matter what the JBenchmark results suggest. Note that the reason the Nokia N95 scores so good in 3D is not because the built-in PowerVR 3D chip would be so much faster than, currently, the 2700G. It’s just because the former is supported by the built-in MIDlet manager and the latter isn’t supported by any Windows Mobile MIDlet managers.
Otherwise, speed-wise, there’s no clear winner. In general, all MIDlet managers have their strengths and weaknesses; there isn’t a single one with the best speed / efficiency (not even that of Nokia). Also note that, in general, the Nokia benchmarks don’t differ much from those of the WM KVM’s – of course, the M3G results are completely different. But, again, with real MIDlets, this difference is far less pronounced than one would think based on the synthetic JBenchmark 3D results.
Note that the columns are a bit different from the first chart; now, I’ve also listed the device I’ve run the given MIDlet manager on.
6. Game compatibility reports
I’ve also thoroughly tested some hundred (!) popular, well-known games; both 2D and 3D titles. (More on these games in THIS article – my previous and, now, slightly outdated article on 3D gaming.)
As has already been emphasized with the benchmarks, there’s no clear winner here either. As a rule of thumb, however, you should always try to run a given title under Jbed first. It’s the least compatible with existing games, but has three real advantages over both the M3G-compliant version of Jeodek and Jblend: if it does work then, generally, it’s the fastest; of the three, it has the best sound emulation and it supports full screen mode.
If you do encounter problems, give a try to alternative MIDlet managers: to IBM J9, TAO Intent, Jeodek M3G or Jblend (or, JblendFullScreen if you don’t need M3G and/or decent music but do need full screen because of, for example, the hard-coded screen size used by the MIDlet). Note that it’s pretty useless to try to run a title not running under Jbed under the non-M3G-capable Jeodek either. Doing the same under the M3G-capable Jeodek version, however, is a completely different issue.
As has already been emphasized, these MIDlet managers can co-exist on the same device and if you’re really into gaming as many MIDlets as possible, you will want to put at least three (Jbed, Jblend and Jeodek M3G) on your handset.
Note that there is an earlier version of this chart HERE. As the chart doesn’t contain for example the Nokia N95, the M3G-capable Jblend (only its full screen, old and pretty much incapable version) and lists far fewer titles than the main games compatibility chart, it’s in no way as important as the main compatibility chart listing the, for gaming, most recommended WM KVM’s (along with Nokia). However, it also contains some info on how different hardware (520 MHz XScale-based VGA HTC Universal vs. 195 MHz TI OMAP-based QVGA Wizard, for example) compare when it comes to running (graphics-intensive) games. As can be seen, the, otherwise, for gaming not really recommended Wizard behaves pretty OK even at the default 195 MHz CPU clock speed.
Highly recommended articles
TUTORIAL: Control issues of Java MIDlets – all secrets of button handling. Crossposts: PPCT, AximSite, XDA-Developers - 1, XDA-Developers - 2, XDA-Developers - 3, FirstLoox, BrightHand, HowardForums, SPT, MoDaCo, PocketGamer.org, PocketGaming.de.
The Definitive Guide to Running 3D-enabled Java MIDlets on Windows Mobile (note that its discussion of some of the apps is a bit outdated; that is, consider the info in the current Bible of higher priority than in there. Also note that the comments (at the bottom) are really worth checking out, just like with the comments arrived at THIS article. Crossposts: PPCT, AximSite, XDA-Developers, XDA-Developers - 2, FirstLoox, BrightHand, HowardForums, SPT, MoDaCo, PocketGamer.org, PocketGaming.de
The Button Enhancer Bible & great button config tips for Opera Mobile / Mini users – it has a LOT of MIDlet-related info. Crossposts: PPCT, AximSite, XDA-Developers - 1, XDA-Developers - 2, FirstLoox, BrightHand, HowardForums, SPT, MoDaCo.
4PDA thread; translations HERE
5 things noobs should know about java mobile games
The MIDlet reviews at Mobile Critic and Midlet Review
The homepages of Fishlabs, Gameloft, Glu and Xendex
My old, outdated, related articles
What TAO Intent versions there are? - this article has been written before Risidoro’s releasing the 1034/1036 versions and the release of the generic SMS / phone.dll hacks. The latter means you don’t need to install the somewhat older version .1023 of the MIDlet manager on your phone-less PPC any more.
Running Motorola-specific Midlet games on the Pocket PC? YES!!
IBM releases new, 6.1.1 version of great Midlet runner J9; now, it’s fully compatible with Google Maps!
Great, Free Java/Midlet Environment IBM J9 New, 6.1 Version is Out – a Full Compliance & Bug Report & Never Before Published Tweaks that Help Using It Much Easier (in there, I’ve also reported on my effort of trying to relocate the IBM J9 deployed MIDlet repository from the main memory).
Java Midlets on the Pocket PC - the Complete Tutorial (outdated, but nice for some additional tips)
UPDATE (11/23/2007):
in the meantime, thanks to XDA-Devs user defcomg, a new, third-party, free Bluetooth (JSR-82) library, BlueCove has been found, which supports IBM J9.
In the second part of this article, I elaborate on how you can “hack” some Nokia classes into MIDlets so that they have a chance to run. I also explain how you can force the installation of MIDlets that, otherwise, are refused to be deployed because of missing library (for example, Bluetooth under Jbed) support.
1. BlueCove
Let’s start with the compatibility issues.
1.1 Real-world (!) compatibility
First, it’s only IBM J9-compliant (NO TAO, NO Jbed, NO Jblend). Even under J9, unfortunately, it’s (as of this writing) pretty much far away from REALLY working. While it correctly implements Bluetooth discovery, in general, it doesn’t go further and just crashes at actually connecting (not only discovering). I’ve tested this with both the Microsoft and the Widcomm Bluetooth stack, using version 6.1.1 (that is, the latest one) of IBM J9.
My compliance test results are as follows:
Super Bluetooth Hack 1.07 (note that the two (2nd/3rd) versions are exactly the same): doesn’t even start (IncompatibleClassChangeError with Vector)
Blooover discovering works; the actual connection doesn’t (IncompatibleClassChangeError with javax.microedition.io.Connection).
3D Constructo Combat: The same: it is able to discover other devices:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
but, upon actually connecting to them (or, when you start it in server mode), it immediately crashes and exits.
1.2 Downloading, installing
If you still want to give it a try (again, it’s pretty much useless as of now!):
Get bluecove-2.0.1.jar (version as of 11/23/2007) from HERE
if you have WinRAR on your desktop Windows machine, enter the WinRAR bluecove-2.0.1.jar command;
otherwise, rename bluecove-2.0.1.jar to bluecove-2.0.1.zip and click it so that its content is shown;
extract bluecove_ce.dll and intelbth_ce.dll from the root of the archive; transfer them to the \bin subdirectory of your IBM J9 installation.
Note that if you don’t want to hunt for / extract these files yourself, I’ve made them available HERE as a standard ZIP file. Just unZIP it and transfer the two DLL's.
copy bluecove.jar to the \lib\jclMidp20\ext directory of your IBM J9 installation. If “ext” doesn’t exist, create it.
you’ll need to use special link files to start your Bluetooth-enabled MIDlets. This also means you don’t need to deploy your MIDlets under J9 at all as direct links of this type don’t require the MIDlets to be deployed beforehand. A typical link file looks like this:
255#"\Storage Card\ibm\bin\j9.exe" -jcl:midp20 -Dmicroedition.connection.pkgs=com.intel.bluetooth -cp MIDletName.jar "-jxe:\Storage Card\ibm\lib\jclMidp20\jclMidp20.jxe" MIDletName.jad
(An example link file is HERE as a real file.)
In here, change MIDletName to the filename of the MIDlet and, of course, change \Storage Card\ibm to the actual path of your IBM J9 installation.
Note that you’ll also need the JAD files in this setup. Should you not have them, use the free JADMaker to create them from JAR files (see the link for more info). If you don’t provide any absolute directories in the link file to the JAR / JAD files, then, you’ll need to copy the JAR file to the \lib\jclMidp20\ext directory of your IBM J9 installation before invoking the MIDlet through the link file. This is the same directory where bluecove.jar should reside. Also, the JAD file must be in the same directory as the lnk file itself.
2. Some additional hacking
2.1 Nokia classes missing in the game
If you try to run 3D Constructo Combat under J9 (I’ll elaborate on other MIDlet managers later), you’ll notice at once it doesn’t run. The sole reason for this is the lack of some Nokia-specific libraries in the MIDlet manager. You can, however, easily “hack” these classes into the JAR file of the MIDlet itself.
To do this, first, download THIS archive and unZIP it. Second, get WinRAR and, after installing it, enter the WinRAR jarfilename command to open the JAR (the main MIDlet) file. Now, just drag-and-drop the com directory (with all its subdirectories, of course) to the opened JAR file – making sure you don’t drop it on a directory, but in the root.
That’s all; now, your MIDlet might start.
Note that this definitely works with 3D Constructo Combat and J9 but will NOT work with Jbed, not even with the permission hacking I’ll explain in the following section.
(also see THIS Russian-language post for more info if interested. It doesn't contain much additional info, though.)
2.2 Permission hacking
As has been explained in the MIDlet Bible, some (very few!) MIDlets can’t even be deployed under Jbed (and other, less recommended) MIDlet managers. The reason for this is the deployment-time permission checking.
An example of these MIDlets is 3D Constructo Combat, which is refused to be deployed because of the unavailability of a library (here, a Bluetooth one):
You can easily help this and make MIDlets at least deployable (being actually runnable is another question). To do this, enter the WinRAR MidletFileName.jar command and extract the META-INF\MANIFEST.MF file. In there, look for the MIDlet-Permissions: row. For example, with 3D Constructo Combat, it’ll be the following:
MIDlet-Permissions: javax.microedition.io.Connector.bluetooth.client,javax.microedition.io.Connector.bluetooth.server
Just delete it and overwrite the original META-INF\MANIFEST.MF file with the new version, all this in the JAR file. Again, the new file no longer contains the MIDlet-Permissions: row. Now, the MIDlet at least becomes deployable as can also be seen in THIS screenshot. (This, again, doesn’t mean Jbed will be able to run it as well. It won’t, not even with the above-explained Nokia class hack.)
UPDATE (11/24/2007): At last: an M3G-capable, much more gaming-friendly Jbed version is out!
As is stated in the Bible (as can also be seen in the main game compliance chart), the recommended, current version of Jbed has very limited game compatibility. If you do want to use it and do need to run for example M3G titles, so far, you needed to turn to alternative and, in many respects, inferior MIDlet managers. Now, this has changed: thanks to XDA-Devs forum members viperj and defcomg, a brand new and really great version has been posted.
This is version 070524.2.1 - that is, slightly older than the current, 070802.2.2 version. The major disadvantage of this version, compared to the 2.2 one, is the complete lack of sound emulation.
It runs all the games running under the old, M3G-capable Jeodek (see their list HERE) and is very fast. Furthermore, it isn’t affected by the locale bug of version 2.2 – that is, the inability to run under any locales using a language with a non-Western alphabet (for example, most East-European languages).
I’ve tested it with I-Play’s FIA World Rally Championship 3D, Namco’s Arcade Golf and High Speed 3D. All these worked flawlessly (except for, of course, the complete lack of sound), unlike under 2.2. Under 2.2, they didn't even start or crashed later.
If you really need sound emulation and it’s indeed able to run the given title, you will still want to version 2.2 of Jbed, though. For example, it runs Simcity Societies with great sound.
Installation
To install it, just grab THIS file, unRAR it to, preferably, the “J” subdirectory on your storage card (so that jbed.exe is right in the “J” subdirectory) and import THIS Registry import file (change all occurrences of "Storage Card" to the name of your card if it has another name). You might also want to copy a link to the main executable, jbed.exe, to \Windows\Start Menu\Programs (or, just \Windows\Start Menu\ on MS Smartphones). I’ve created the link file HERE.
UPDATE (01/16/2008): In the meantime, it has turned out that you can use the non-M3G-specific version of Jbed (that is, Cloudyfa's 20070802.2.1) with any localizaton setting if and only if you start your specific MIDlet directly; that is, via a system-level shortcut.
I've also been using Opera Mini 4 on the Blackberry 8800, using the default MIDlet manager coming with the device. Note that, unlike the built-in Web browser and the mailer, you MUST specify the APN of your operator for it to work. Otherwise, it'll just report being unable to connect to the Net after starting (and a lengthy installation process). To do this, go to Options / Advanced / TCP?IP and enter your APN (for example, "Internet" with T-Mobile.)
UPDATE (02/01/2008):
There are new builds of both Jbed and Jblend (two excellent MIDlet Managers – see the Java MIDlet Bible for more info). Due to lack of time, I haven’t tested them. Both has been done by Da_G (his projects’ homepage is HERE) and are accessible HERE. Note that you MUST register yourself (it’s free and is done quickly) in order to access the page above (along with the download).
I hope I’ll be able to test them some time – along with the default Blackberry MIDlet manager. (I might wait with testing the latter until version 4.5 of BB OS is released, though.)
UPDATE (02/06/2008): Another Jbed MIDlet Manager version has been released: JRebeiro_EsmertecJbed_20071119.3.1.
It’s available HERE (at the bottom of the first page).
As I don’t have the time to thoroughly test it, feedback is REALLY welcome!
UPDATE (03/09/2008): Sun to develop MIDlet manager for Apple's iPhone?
NOTE: this isn't strictly a Windows Mobile news item (albeit it also contains Windows Mobile references; see for example the Sun MIDlet Manager on some new HP’s). However, now that I've spoken to the Sun reps at MWC (I'm a Java guru and have also worked for Sun as a lecturer for their Java programming courses) and also spotted their own MIDlet manager on the HP iPAQ 610 series, I found it necessary to report on this.
Finnish mag Tietokone has just reported on Sun's wanting to develop a JVM for iPhone so that it can run the vast number of MIDlets out there (including, for example, Opera Mini and thousands of games, some of them - like Simcity Societies - of very high quality).
Interestingly, Steve Jobs (of Apple), who still haven't commented on Sun's announcement, earlier stated in NYT "noone uses Java any more". Sour grapes? (It was, so far, impossible to run third-party apps on iPhone - except for some, just-released titles like CorePlayer.) I pretty much think he quickly changes his opinion - after all, a decent MIDlet Manager would be more than welcome on iPhone, which still lacks third-party apps / games.
It's nice to see Sun indeed plans to port their stuff to iPhone. While their Windows Mobile implementation, according to some Opera Mini users, has a lot to be desired (I haven't personally checked the validity of their claims so I may be entirely wrong), I really hope Sun starts to take mobile platforms more seriously.
UPDATE (03/13/2008): New MIDlet manager in development: PhoneME; Jbed for WM2003(SE) released!
There are two pieces of news for everyone interested in running Java MIDlets. The first will be having a pre-WM5 device and wanting to run Java MIDlets (for example, Opera Mini) on it. Yes, at last, some Russian hackers made Jbed, the industry-leading MIDlet manager work under WM2003(SE)! The second (and, for most people, not that important) piece of news concerns a brand new MIDlet manager port for Windows Mobile.
1. Some Russian hackers, including the 4pda.ru folks, have, at last, managed to make Jbed, the best MIDlet manager, work under WM2003 and WM2003SE. The importance of this just can’t be stressed enough: so far, you only had the really inferior IBM J9 and the 10-series TAO MIDlet Manager to run MIDlets on pre-WM5 operating systems. Now, this has dramatically changed. Now, nothing will stop you from using Opera Mini on your pre-WM5 Pocket PC.
The direct link to these WM2003(SE) MIDlet Managers are as follows. There are three versions: a modded one, a non-3D one and a 3D one; all with a heap size fix.
JBed3dMod_HeapSizeFix
Esmertec Jbed heapfix
Esmertec Jbed3d heapfix
They have also made a MAJOR update to their 4PDA.ru MIDlet article, linking to all the contemporary Esmertec, TAO etc. versions (including ones with heap fixes, with and without 3D support etc.); the above links can also be found in their article. You can see the translation of the new page HERE (Google) and HERE (Babelfish). Note that I’ve kept the original page HERE (Google) and HERE for historical reasons for people interested in the pre-Esmertec times.
2. Now, the other piece of news, which, again, won’t be of that much interest to non-WM2003 / non-Java hackers.
Java is a really viable programming platform. Not only several high-quality games make it worthwhile, but also probably the best and, if you’re lucky enough with your geographical location, fastest and most bandwidth usage-friendly mobile browser available for mobile phones (including Windows Mobile), Opera Mini 4.
I’ve already devoted an entire all-in-one Bible to running Java on Windows Mobile (and Symbian). Now, let me introduce the latest Windows Mobile KVM: PhoneME.
PhoneME is another "let’s bring Java to various platforms” projects (official homepage HERE), which has recently received Windows Mobile support.
The main homepage of the Windows Mobile port is HERE (do NOT get the ones at the official download page of the project - they’re outdated!) Should you want to download the MIDlet manager, get the file starting with "phoneME Feature – MIDP” from the download page.
Get the CAB file; install it. (I assume you install it in the main storage of your handset; my MIDlet manager main lnk file and registry import file will be tailored for this install location.) After this, you’ll need to associate JAR files with the app; to do this, you’ll need THIS file (import it into the Registry!). You might also want to invoke the MIDlet manager directly; for this, you’ll need THIS file.
Unfortunately, currently, the MIDlet manager is pretty much useless; for example, it seems to be impossible to deploy Opera Mini 4 under the current (8525) MIDlet manager version:
(Interestingly, the 4PDA.ru folks reported they managed to deploy an older version of OM; however, they didn’t particularly like the way it ran. That is, they also state the current version has a lot to be desired.)
All in all, you will NOT want to check it out in its present form. I’ll try to let you know when a considerably better, more advanced version is released.
Still speaking of the project, the Personal version (not to be mistaken for the MIDP MIDlet manager!) seems to run standalone (Personal profile) apps OK (it does NOT have an Internet Explorer Mobile applet plug-in, though). An example of running the Hello World application available on the homepage as a separate download:
(Should you want to give it a try, assuming you installed the MIDlet manager in the built-in storage of your handset, use an invocation .lnk file with the following contents:
254#"\phoneme\personal\bin\cvm.exe" -cp "\phoneme\hello" Hello
Also make sure you unZIP the contents of the archive to \phoneme\hello.)
That is, if you’re into running Personal Profile applications (and not MIDlets), you might want to give it a more thorough try.
(Thanks to my blog reader thevery for drawing my attention to the project!)
Additional info
A related forums.java.net discussion (not very interesting for anyone not interested in recompiling the sources)
4PDA.ru’s related discussion (translated) HERE (Google) and HERE (Babelfish).
UPDATE (03/14/2008):
a. unfortunately, the WM2003(SE) Jbed version has turned out to be only compatible with Pocket PC Phone Edition devices, NOT plain (phone-less) Pocket PC’s. There still aren’t WM2003(SE)-compliant SMS.dll and phone.dll files. These two files are needed on WM5+ standard (“classic”) Pocket PC’s to make Esmertec’s products / Jblend work. While the “hacked” DLL’s are compatible with WM5+, they aren’t with previous operating systems. That is, you’ll need to wait for a WM2003(SE)-compliant set of “hacked” DLL’s to be released.
Also note that there are some WM2003SE Phone Edition models that seem to be completely incompatible with; most importantly, the Qtek 2020i.
Also note that some? all? of the (again, currently, only WM2003(SE) Phone Edition-compliant – do NOT bother if you only have a phone-less PDA!) contain wired-in paths. For example, the one linked to from THIS page (see daemonpnz’s post at 10.02.08 10:22:56) must be extracted to “\Storage Card\jbed0524\”. Should you want to put it somewhere else (because, for example, your PPC PE device is a non-English one), you’ll need to hexedit Jbed.exe inside the RAR file and change the two occurrences of the above path to your liking. An example showing changing the space character to a B in "Storage Card".
(Incidentally, the reason for this was the following: I’ve tested it on my HP iPAQ 2210, which is a dual-slot machine, using the card names SD Card and CF Card. As you aren’t allowed to create a directory named “Storage Card” in the root of the file system, I had to hexedit the file so that it uses another name. “StorageBCard” can already be created. Note that, as the HP iPAQ 2210 is a no-phone device, this didn’t help much as it still refuses to run. Again, because of the still-missing, WM2003(SE)-compliant SMS.dll and phone.dll files.)
I let you know when Jbed becomes compatible with non-phone pre-WM5 devices.
b. I’ve also tested some of the versions linked from the 4PDA.ru thread on my HTC Vox (s710) to find out whether they’re any good compared to the old MIDlet managers; particularly Cloudyfa’s version - the version that, so far, I’ve recommended to all MIDlet users (unless in need for M3G (3D) support.). These two are both “fixed heap” versions; some of the less simple games (for example, DoomRPG) and benchmark apps with large memory requirements are stated to run much better / more reliably in the fixed heap versions than in the regular ones (for example, that of Cloudyfa) because of the much bigger available memory. I haven’t tested the effects of this myself.
1. JBed3dMod_HeapSizeFix (that is, 3D-capable Jbed version, based on 20070524.2.1, with fixed heap)
I was really interested in how this (and an additional, hacked file available for download HERE - just overwrite JBed.exe of the original, already-installed version with JBed3d_SreenFix.exe after renaming) worked because, at 4PDA.ru, there’s a version that promises flawless, screen problem-free functionality on MS Smartphones also compatible with the excellent Gmail client MIDlet.
(Also see THIS (original HERE) for more info; see freesunny's post at 10.01.08 10:56:06.)
So far, it seemed impossible to make the latter (the Gmail MIDlet) flawlessly work on MS Smartphones under any version of Jbed. An example of the display problems the non-hacked version (or any Jbed version) can be seen in the following screenshot:
Unfortunately, the hacked version (after overwriting the EXE file with the separately downloaded JBed3d_SreenFix.exe) doesn’t really work with Gmail: while indeed the entire screen estate is used, the three lowermost menu items (Search, Compose New, Exit) aren’t visible, just like with the non-hacked case:
Note that essentially the same results from the 4pda.ru folks can be HERE. The same problem also exists in Portrait mode, not only in Landscape.
All in all, while it’s certainly a step in the right direction, you will still have problems with (at least) the Gmail MIDlet. If you absolutely hate the missing display area in the MIDlet listing on MS Smartphones with the old Jbed versions, you might want to consider upgrading, though.
2. I’ve tested JBedModHeapFix (02.01.08) too – a somewhat extended and fixed Jbed version. While it does have certain advantages over Clodyfa’s version, it entirely lacks music support and is based on the 20070802.2.1 version – that is, the same “old” version as that of Clodyfa and not anything newer. I don’t really recommend it if you need sounds / music, which is excellent in the Cloudyfa version – again, unlike any other (earlier!) versions I’ve tested, including earlier Jeodek versions like the 20070425.1.1 version coming in the original (and just-updated) firmware of the HTC Vox / s710 and having very bad and distorted sound.
Note that the Jbed version lacks the the English jbed.exe.0409.mui file – it only has the Russian localization, that is, jbed.exe.0419.mui. This means, unless you copy the (standard) jbed.exe.0409.mui file from, say, the Cloudyfa version to the new one, it’ll have messed-up, invisible menus.
I’ve also tested whether these two versions, finally, fix the two biggest problems with the Cloudyfa version:
it’s not possible to install Cloudyfa’s version on the storage card: with the new Jbed version, it’s possible – without any manual hacking. In this regard, it’s much more recommended than Cloudyfa’s. (Haven’t tested the Jbed3D version in this regard.). That is, you can safely direct the CAB installers to install the managers onto a card: they WILL be installed there, not taking up any built-in storage.
with Cloudyfa’s version, it’s not possible to start MIDlets from inside the Jbed interface if you use a localization using not strictly Western characters:
Fortunately, both the non-3D and the 3D versions available at 4PDA.ru are compatible with non-Western regional settings, unlike Cloudyfa’s version.
(Note that, in the original Cloudyfa version, you can still execute MIDlets via a direct invocation link file if you have an otherwise incompatible regional setting, circumventing the standard interface listing all your MIDlets. This, however, needs some additional tinkering and, again, you won’t be able to select the MIDlet you’d like to run from the built-in list of the MIDlet manager. Also note that I’m speaking of the generic Regional settings, NOT the language of MS Smartphones (you can easily change the entire interface language of MS Smartphone devices.). Your MS Smartphone language may be, say, East-European; if you still use some non-Eastern regional setting, the apps started from inside Cloudyfa’s version will still run and you won’t need to use direct invocation link files.)
Also note that neither of these versions have any sound emulation. This, again, isn’t a change from the previous 3D (M3G)-compliant version but can be VERY bad news for plain non-M3G-compliant Jbed users, as, again, the Cloudyfa version has excellent music / sound emulation. That is, stick to the latter if you need music.
UPDATE (some 5 hours later): I’ve also tested the latest Jbed version, JRebeiro_EsmertecJbed_20071119.3.1. I’ve already mentioned it HERE but, then, I didn’t have the time to thoroughly test it.
The bad
- not possible to install it to a storage card by default
- display problems on MS Smartphones (as with all the other Esmertec Jbed versions – except for the M3G-specific, hacked 4pda.ru version). Note that, again, this doesn’t have any effect on how Opera Mini 4 or games work; only the main MIDlet manager MIDlet lists and, for example, the Gmail MIDlet are affected
The good
- the latest version; reported to be very fast
- M3G compliant
- has sound (as with Cloudyfa’s version)!!
All in all, highly recommended for gamers.
It’s available HERE (mirrored HERE so that you don’t need to search / register).
Also see THIS German language Pocket Players Reloaded article on the games it’s compatible with.
UPDATE (04/05/2008):
In the meantime, I’ve tested two versions of the latest, 3.1 version of Jbed and found out the following (starting with, currently, the latest and, unless you MUST install it on your storage card without any manual hacking, most recommended version):
1. Jbed Java 3.1 20080222 (available HERE; mirrored HERE for your convenience): this version runs flawlessly under WM5 (not only WM6 – note that some older versions of 3.1 are NOT WM5-compliant). It supports 3D (tested with Need for speed carbon and Night Fever; neither of them run under the non-3D-capable Cloudyfa 2.1), (as usual, excellent) sound. It can’t be directly installed onto a storage card, however. (As with some older versions, it’s possible it can be hacked there, though, with some manual file copying and registry / start menu link rewriting – I haven’t tested this.)
2. I’ve also thoroughly tested JBed_20071119.3.1_3dMod_HeapSizeFix_v2_wm6(lovetz1) linked from THIS MoDaCo thread. As a plus, it can be directly installed on a storage card, as opposed to the version above. It, however, doesn’t support sound at all. Otherwise, it seems it’s pretty much the same as the version above – except for WM5-compliance: I haven’t tested the WM5-compliant subversion. Again, I’d stick with the 20080222 (the first) version unless you really need every single byte in your built-in storage.
3. Note that neither version was able to run the s60v3 (Nokia) version of Command & Conquer 3: Tiberium Wars, the latest-and-greatest real-time strategy from EA Mobile – upon loading the mission (and displaying the progress bar), it just locks up. (Needless to say, it’s working flawlessly on the Nokia N95 v20). It seems no Jbed version is compatible with this excellent game – I’ve tested with several. This means the extended, “hacked” heap didn’t help with particular game. It might help with others, though.
4. Also note that the first beta of Opera Mini 4.1 has been released in the meantime. It simply ROCKS and is a must. See THIS for a complete review & tutorial.
hey Menneisyys.
i am running Command & Conquer 3: Tiberium Wars ,perfectly on asus p525 with JBED build 20070524.2.1 .
by the way i found a bug on asus p525 in all jbed versions over 20070524.2.1 and its just you can play games with joystick not the keypad (keypad if i press 6 to go right ,it will go right and stick to the right like its stuck,i cant move anymore till i exit the game) .
i have tested all 3d java emulator you mentioned on the bible and some that you didnt .
i have 4 java vjm installed together on my device , 3 jbeds :
1. is the latest build Jbed Java 3.1 20080222
2.JBed_20071119.3.1_3dMod_HeapSizeFix_v2_wm6(lovetz1 )
3.JBED build 20070524.2.1
4.jblend 20070413 a
every java game i try on 4 of them .
UPDATE (04/11/2008): XDA-Devs forum member Ebenezer has released a version of Jbed 20080222 3.1 that can be directly installed to a storage card. It also supports sound and M3G (3D). Make sure you switch to this version if you prefer keeping your MIDlet manager and deployed MIDlets on your storage card. I've also got rid of the old, 2.1 Cloudyfa version (along with all the previously-mirrored and, now, outdated Jbed versions - this is why the old mirror links will no longer live) and made the new version of Jbed available HERE for direct download.
(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, 1.2.0.13 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.
A related (Russian) thread is HERE (BabelFish HERE)
2.6.3 Mitac JVM
This is an old (2003), pretty bad and not recommended MIDlet manager.
Related thread: MoDaCo Working midlets and non-working midlets.
3. Introduction to using MIDlets
Now, let’s see how you can install (deploy) MIDlets on your Windows Mobile device and how you can use them. Fortunately, doing this is very simple.
First, make sure you do have a KVM on your handheld. If you don’t, install one. If you have a non-phone Pocket PC and want to use any MIDlet manager (except for IBM J9), make sure you install the SMS.dll and Phone.dll hacks and / or if you have a pre-WM5 device, you’ll need to choose from either IBM J9 or old versions of TAO Intent.
After this, your life will be pretty easy.
3.1 Two ways of deployment (installation): online vs. offline
In general, there are a lot of MIDlets available online. In general, if you click them on the Web from your Windows Mobile device (preferably, using a built-in Web browser), they get downloaded to your handheld and automatically deployed in your device. The same happens with JAR files you copy to your handheld and, then, deploy them locally by either making your KVM explicitly search for it or clicking it / pressing the Action button from a local file manager. In the following two subsections, I elaborate on these questions.
Note that, generally, there are two kinds of files you’ll run into: JAD files and JAR files. When you download a MIDlet to your desktop PC so that you can, later, deploy it into your handheld’s KVM, only download JAR files, not the JAD ones.
If there’s no way of directly accessing JAR files, only JAD ones (as is, for example, the case with the Opera Mini 4 beta download page HERE - note that you should visit it from a Wap-capable desktop browser (Opera), that is, NOT from IE!), the “Download high memory version” download link will download you a JAD file, not a JAR one. You can directly copy this file to your handheld but, then, it’ll need to have Internet connection to be able to download the JAR file referenced by the small JAD file. If you can’t guarantee this or prefer collecting the JAR files offline, do the following: open the JAD file you downloaded with a text / file viewer (editor) and look for the attribute named “MIDlet-Jar-URL”. Copy the URL after the colon (for example, http://mini.opera.com/dl/1B8GM15aEP5uj-jE8A4AACMhDw8C/mini.jar) to your desktop Web browser. Now, you’ll have direct access to the JAR file – you can already safely save it.
Note that some KVM’s support separating MIDlets into different folders. Some allow for selecting the folder at deployment time (an additional step in the deployment process; this is what, initially, the “root” screen stands for when deploying into Esmertec products), the others after deployment. (And, on the Nokia, as it has no MIDlet manager interface at all but all deployed MIDlets are listed as regular applications, you can use the system file explorer tools to move them elsewhere, in another folder. This is slightly different from the way MIDlets were handled or early MIDlet-capable Nokia phones like the N-Gage, where there was a separate folder for them.) Also see the “Possible to use folders for better MIDlet separation?” row in the main chart for more info & screenshots.
Also note that, during the deployment process, you will also need to let the installation continue, particularly when the given MIDlet isn’t signed with a trusted certificate. (The vast majority of MIDlets are like this.) This, in general, only means you will need to press the left softkey some times on both Windows Mobile and Symbian.
3.1.1 Offline: originating the deployment from inside the manager vs. doing the same from the outside
There are two ways of deploying a local MIDlet JAR file to your MIDlet browser. The easiest is the default way of just clicking / pressing the Action key while viewing it from a local file explorer tool. This, as long as the file associations are correctly set (which may NOT be the case if you install more than one KVM’s on your handheld – more on this later), will automatically invoke the JVM and deploy the MIDlet.
Another way to select the related menu item inside the given KVM is to search for JAR files in the local file system (for example, Menu / Install / Local with TAO and Menu / Install / Local Files with Esmertec’s KVM’s). Unfortunately, it’s pretty flawed with most of the KVM’s; for example, the lack of alphabetical sorting, some of them can’t display all the files at once if there are more than 200-250 of them, some are only looking in a given directory or have no search capabilities at all, which is the case with IBM J9. The latter, as it doesn’t allow for browsing the file system for a given JAR file, forces you to enter the full (local, that is, Error! Hyperlink reference not valid. ) URL of the JAR file, which is really a pain in the back. Finally, Jblend doesn’t offer any local file browsing / deployment at all – with it, you must initiate the deployment from any file explorer tool. The latter is “only” highly recommended with other KVM’s because of the other annoyances and bugs they have.
3.1.2 Online
This is much easier: you just navigate to the given page with the MIDlets online and just click the JAD (or JAR) files. Note that some KVM’s may not allow for installing Web-based JAR’s directly; with them, you will need to click the JAD file instead. This is in stark contrast with the local install: all the tested (non-disqualified) browsers allow for the direct installation of JAR files and no local JAD’s are needed.
3.2 Running the already-deployed MIDlets
After your MIDlet is deployed, you will need to click it from inside the KVM if it’s not started automatically: most current, recommended KVM’s ask the user whether the MIDlet should be started right after the deployment.
Otherwise, you just start the KVM environment (it’s, in general, in the main Start Menu / Programs folder (except for the HTC Kaiser / Tilt, where it’s in the Tools subdirectory there) and is called “Jbed”, “Java”, “Jeodek” or “Esmertec Jbed/Jeodek” with the Esmertec products, “MIDlet Manager” with TAO Intent, “Midlet HQ” with IBM J9 (linking emulator.exe) and “Jblend” with Jblend) and simply double-click the given, already-deployed MIDlet. With IBM J9, you must select the uppermost “Launch” menu item in Actions instead, after highlighting your MIDlet.
Now that I’ve made it clear it’s only Nokia’s (Symbian) MIDlet manager that puts the deployed MIDlet icons in the traditional Applications folder, you may also want to know whether you can also hack the Windows Mobile KVM’s to do the same. This, as you may have already guessed, also greatly speeds up starting a given MIDlet: you don’t need to start an additional layer of managers. The answer is: yes, with most KVM’s (except for Jblend), you can. Then, you won’t need to separately start the KVM interface to gain access to the deployed MIDlets. See the “Direct, system-level links (shortcuts) to MIDlets” row in the main chart for more info on this. Note that, as opposed to Nokia’s system-level links (or, for that matter, the way the excellent Palm OS emulator, StyleTap, works on Windows Mobile), all these links will have the same icon, unlike under Symbian – not that of the icon of the MIDlet itself. This is a definite disadvantage if you prefer looking for a MIDlet based on its icon and not its name / position.
3.3 Security issues
Unlike with native Windows Mobile (or Symbian) applications, you’ll always run into security prompts. Therefore, it’s worth knowing a bit about what they are all about.
Java programs, in general, put a lot of weight on security measurements. This is why they continuously prompt the user when they try to access “sensitive” resources like the Net or the local file system.
Fortunately, you can, in general (except for Jblend), easily get rid of this problem:
- if you have any of the Esmertec KVM’s, use the MIDlets signed by the MXit LifeStyle-signed JAR’s available in THIS thread. Note that I’ve separately linked in the most common non-game (games, in general, aren’t affected by these issues, unless they want to use Bluetooth) MIDlets you may want signed. Then, you’ll be able to set their security model for “Blanket”, which means you’ll never be prompted for permission. It’ll certainly be easier for you than with the default “Session” (you’re asked once per session – that is, after starting the MIDlet) and the even more restrictive “One Shot” security model. Incidentally, Jblend employs exclusively the latter model with accessing the Net; this means it’s pretty much useless for applications like Opera Mini or the Gmail MIDlet. This is particularly true with the Gmail client, where it prompts the user to allow going on upon downloading every single mail (header). That is, never use Gmail under Jblend.
- if you have a KVM where you can “hack” the security descriptor files (all Esmertec KVM’s and IBM J9 belong to here; TAO Intent is also said to be but the opinions do differ on the latter and I haven’t tested this hack), do the hacking to get rid of the annoying security prompts. See the “Security: Allow permanent Net access without prompting ("Blanket" security model, as opposed to "Session" / "Oneshot")?” row in the main chart for more info / links.
3.4 Runtime issues: concurrent (parallel) and background execution
The KVM’s slightly differ in how they handle concurrent execution of MIDlets – or, simply running something in the background. Some (TAO and J9) allow for the concurrent execution of MIDlets, while the rest don’t. This means the, otherwise, excellent Esmertec KVM’s will only run one MIDlet at a time, while the certainly, in most respects, inferior J9 and TAO Intent will run any number of them. TAO, in addition, also supports the in-environment switch between running MIDlets, unlike J9.
Support for parallel MIDlet execution can be very useful; for example, the Gmail MIDlet could continuously check Gmail for incoming messages, while, in another MIDlet, you could browse the Web. You can find some other uses for example HERE, in the comment section (the comments HERE are also pretty instructive and shed light on related issues).
The ability to execute a MIDlet in the background is also very important. Just an example: you start downloading a Web page in Opera Mini but quickly realize the download will take ages. In order to save time and do something useful in the meantime, you decide to minimize the Opera Mini task, do something else in another program and only return later, expecting Opera Mini has already finished downloading and rendering. All the tested WM and Symbian KVM’s support this kind of operation; the only exception is Jblend, which immediately pauses when it loses the focus. Incidentally, Jblend’s behavior also has some other consequences; for example, in no way can you use external character injectors to it (unless they’re continuously running and, therefore, don’t result in executing a new process; PQzII is one of these) and you will even have problems uploading Jbenchmark results to the server (because it constantly thinks the MIDlet has been paused and prompts you for resuming).
I also recommend Solnyshok’s excellent article for more information on the advantages of parallel execution of some MIDlets. Also note that the article contains an excellent hacking tutorial on how multiple instances of the same MIDlet can be executed at the same time.
4. The main chart
Again, this is where you’ll find most information. It contains an order of magnitude more information than the article you’re just reading in a well-condensed, tabular, easy-to-compare form, packed with tons of screenshots helping in finding out how a given feature should be enabled / used.
I’ve already elaborated on several (for example, security-related) of the rows this chart has; now, let me elaborate on the rest.
In the “Price / availability” row, as has already been stated, you’ll find where to get / download the given KVM from.
In the “Platform compatibility” group, I’ve listed three rows: compatibility with non-phone Pocket PC’s, Pocket PC Phone Edition devices and, finally, touchscreen-less Smartphones (abbreviated as SP’s).
As has already been pointed out, you MUST apply the SMS/Phone DLL hack explained in the Jeodek column if you have a phone-less, “classic” Pocket PC. Also, if you have a MS Smartphone (as opposed to Pocket PC’s), pay special attention to the compatibility remarks here as, unfortunately, not all titles are Smartphone-compliant or, if they are, you may encounter some problems when trying to run them.
The “Generic compliance with standards” group is more for techies: people that would like to know everything about the standards support of the given KVM. As can clearly be seen, the Nokia N95 KVM blows all the other KVM’s out of the water (in this respect too); this is particularly true of, under Windows Mobile, never (except for some very old and long-discontinued IBM J9-specific add-on projects I’ve elaborated on HERE) implemented, for, for example, multiplayer gaming (give a try to the MIDlet version of 3D Constructo Combat in multiplayer mode on even slower / older Nokias like the 6680 – you’ll LOVE it! The same stands for for example the infamous Naval Battle: Mission Commander) Bluetooth support. The same stands for other goodies like support for camera: all WM KVM’s lack the support for it, as can clearly be seen in the “MMAPI Video-capture” cell of the “JVM Multimedia (JSR 135)” row. It could be VERY useful; see for example the posts HERE, seeking for support for barcode reader applications. Audio capture (which isn’t really supported by many apps either) is also pretty useful; see for example the TellMe MIDlet for a real-world usage example. Yeah, you can clearly see MIDlets are in no way for gaming only – there have a LOT of enterprise uses and are particularly useful when you have a lot of different platforms you need to quickly develop a business solution for!
In the “JVM Memory” row, I’ve listed the appropriate heap (free memory) size available for each KVM. The more, the better for running memory-hungry MIDlets – unless the given KVM uses dynamic (de)allocation of memory when the need arises. Then, it’ll be able to run even the most memory-hungry MIDlets (for example, a full JBenchmark category, in High Quality, packed into one JAR). Unfortunately, only Nokia’s KVM and Jbed support the latter. Also note that you can set the memory allocated for Jblend in the Registry.
Support for “JVM M3G”, that is, the Mobile 3D Graphics API is the dream of most Java MIDlet gamers. As can be seen, several KVM’s support it. (Speed, without hardware acceleration, is another question.)
The “JVM File Connection” group is also very important, particularly with applications like Opera Mini Mod, the unofficial (and, unfortunately, illegal; therefore, I cannot provide a link to it either) “hack” of Opera Mini, adding a lot of goodies like (pretty rude, but still working) page saving and IEM favorite import / export. These all require access to the file system, which, unlike with real Java, isn’t built-in or required by the basic standard. This is why so few WM KVM’s support it: IBM J9 with an additional hack (I’ve elaborated on the installation in the chart) and Jbed. Interestingly, some real-world tests were failed by Jbed, while IBM J9 passed all of them. The support for accessing the local file system is certainly a big plus with IBM J9 – one of the very few advantages of the environment, along with, for example, the ability to run several MIDlets at the same time.
The “Storage usage” group is very important because internal storage memory is doomed to fill up very quickly (especially with low-end WM devices only having 64M of Flash ROM – an example is the HTC s310/Oxygen WM5 Smartphone), particularly if you install sizable games (current games are 300-600 kbytes in size). In this group, I’ve explained the following:
Where can a given MIDlet manager KVM be installed to – that is, can it be installed to a storage card? All of them can (note that we’re, mostly, dealing with XDA-Dev-created installers and hacks in here!), except for Jbed, which MAY require some additional manual file copying (also explained in the chart).
Where the deployed MIDlets are kept: This is also highly important. Fortunately, it’s only IBM J9 that is doomed to store the deployed MIDlets in the internal storage (I’ve tried to hack it to a card very hard – see my related article – but in vain); other MIDlet managers, when installed to a storage card, don’t. Note that, should Jblend and TAO be an OEM-installed KVM on your handset, you can still easily “hack” them to store their MIDlets on a storage card with a simple Registry edit.
In the “Text input” group, first, I’ve listed the copy / cut / paste capabilities of the KVM’s. One of the biggest problems with TAO is the complete lack of copy / paste functionality in any of its textboxes. This is a real pain in the back. Note that some 4pda users have implemented an external, not very reliable way of pasting text to the TAO textboxes (via MortScript), it’s still far from perfect.
“Known text input-related bugs? Maximal editable pre-populated text area size?” elaborates on the text input-related bugs of the tested KVM’s. The most important of them (without any exception – not even Nokia’s implementation did fare well in this respect) is the text input areas’ limited size. This means the following: when you, for example, post an answer in a forum using the “QUOTE” button, you may end up not being able to enter anything and/or your answer getting completely deleted. In general, the threshold is between 1 and 8 kilobytes, depending on the actual KVM and the Web browser you use (Opera Mini fares far better in this respect than its modded version; I think because the latter uses 16-bit Unicode for input, which take up double the memory as the 8-bit input of Opera Mini.) Therefore, make sure you either quote VERY short answers and try to remain under the threshold or try not to quote anything.
In addition, TAO has a very bad, additional bug: if the quoted (and/or, original) text contains line breaks, you won’t be able to edit it at all.
I really recommend giving the test HTML page I’ve created for this test a thorough try to see what restrictions there are, whether your input is retained (after you exit the edit mode) etc so that you can be absolutely sure you don’t mess up anything when you do start filling in Web forms or post to forums with Opera Mini (Mod).
The “Display” category contains information on the usage of font smoothing technologies like ClearType (also see THIS request). As can clearly be seen, it’s only when using the smallest character size and only with some KVM’s that there is font smoothing (with OM4b2)
I’ve devoted two separate rows (and a lot of screenshots) to demonstrate the font sizes of Opera Mini 4 beta 2 in both VGA and QVGA because a great deal of misinformation is all around the Net on the different font sizes of each. For this test, I’ve also created a test page. As can be seen, the font sizes are roughly equal with all KVM’s, as opposed to what some people state. Also note that I’ve also published how you can increase the font size in TAO with a simple Registry edit (I’ve also attached the import file) – the ability to do this is clearly is a definite advantage of TAO.
As far as the “Keyboard, SIP, softkeys” group is concerned, please read THIS for a very thorough explanation.
I’ve already elaborated on most rows of the “MIDlet installation, separation, direct invocation, uninstall” group; therefore, I won’t go into this once more. It’s probably only “Registry import files to quickly reassociate JAR / JAD files” that still hasn’t been explained. Please see the “2.4 Co-existing on the same Windows Mobile devices” section in the Definitive Guide to Running 3D-enabled Java MIDlets on Windows Mobile to see why you might need these Registry import files if you plan to use more than one KVM’s on your Windows Mobile device and want to retain (or, quickly restore) the ability of a given KVM to deploy a MIDlet you click on in an external (Windows Mobile) Web browser or in the file system.
The “Security” group has already been explained above.
The “Misc (sound, compatibility with some popular apps, proxy, etc)” group contains some miscellaneous tests and rows like
support for full screen: as can clearly be seen, in this regard, Jbed is the best (it indeed offers full screen) and Jeodek is the second (it only displays the upper task bar but not the lower menu bar; Jeodek M3G being the only exception when run on the MS Smartphone platform). So does Jblend. TAO and IBM J9, unfortunately, both display the two bars at the top and bottom. Needless to say, Nokia’s KVM also makes use of the full screen estate.
Sound support: as has turned out during the tests, Jbed (along with Nokia’s KVM) is by far the best KVM when it comes to playing in-game music. Note that I’ve tested it being stereo by running Doom RPG, a very famous MIDlet (even PocketGamer.org’s infamous Sponge likes it). Strangely, while Jbed does support stereo, Nokia has failed the stereo test: it only plays music in mono. At last something that Nokia’s KVM gets beaten at
Proxy support is also very important and in high demand among Opera Mini users (as Opera Mini, by default, doesn’t support proxies, unlike Opera Mini Mod, where you can enter the proxy address right in the browser settings). In these tests, I’ve used my custom-written Web client MIDlet and Web server to easily find out which of the several possible ways Opera Mini (or, any other Web browser not supporting custom, local proxy settings) can be made use a proxy. As can clearly be seen, only Jbed and IBM J9 support this. (I haven’t tested Nokia’s KVM in this respect; I assume it works OK.)
the compliance test of three highly popular productivity (non-game) MIDlets: Gmail, Opera Mini and Opera Mini Mod.
5. jBenchmark Benchmark Results
I’ve also made some serious benchmarks with the well-known jBenchmark suite.
First, it’s worth pointing out that, while Esmertec Jbed does promise speedup by compiled code, in reality, it doesn’t mean THAT big a speed increase. That is, you won’t even see a twofold speed increase in everyday apps / games – if there will be any speed difference at all. In the charts, I’ve emphasized the tests where Jbed produced FAR better results than other MIDlet managers running on the same device. I’ve used plain bold to emphasize differences up to two; to emphasize even bigger differences (for example, the Chess test), I’ve additionally used Italic and <u>Underline</u>.
It’s also worth pointing out that while high-resolution (VGA) devices (in the test, the Dell Axim x51v and the HTC Universal) tend to run standard 2D graphics tests (at times a LOT) slower than standard-resolution (QVGA) models like the HTC Wizard or the HTC Vox / s710, with 3D (with the only currently available, 3D-capable MIDlet manager, the TAO Intent 11.x series), the differences aren’t that big.
As far as the 3D benchmarks are concerned, which show a clear, sometimes 20-fold speed difference in favor of the 3D hardware accelerated Nokia N95, don’t think Windows Mobile devices are THAT bad at playing the currently available 3D games. While M3G games indeed run pretty much flawlessly on the Nokia N93(i), N95 and E90 (the current Nokias with 3D hardware acceleration), the currently available, non-accelerated Windows Mobile KVM’s don’t produce MUCH worse results either – most 3D games still remain playable under WM too. In practice, the 20-fold difference in these synthetic tests reduce to two to three-fold difference with currently available, tested 3D MIDlets. Never ever believe anyone that states the opposite – he or she, then, hasn’t compared (unaccelerated) Windows Mobile and (accelerated) N95. I did and know the difference, which is certainly not even tenfold, no matter what the JBenchmark results suggest. Note that the reason the Nokia N95 scores so good in 3D is not because the built-in PowerVR 3D chip would be so much faster than, currently, the 2700G. It’s just because the former is supported by the built-in MIDlet manager and the latter isn’t supported by any Windows Mobile MIDlet managers.
Otherwise, speed-wise, there’s no clear winner. In general, all MIDlet managers have their strengths and weaknesses; there isn’t a single one with the best speed / efficiency (not even that of Nokia). Also note that, in general, the Nokia benchmarks don’t differ much from those of the WM KVM’s – of course, the M3G results are completely different. But, again, with real MIDlets, this difference is far less pronounced than one would think based on the synthetic JBenchmark 3D results.
Note that the columns are a bit different from the first chart; now, I’ve also listed the device I’ve run the given MIDlet manager on.
6. Game compatibility reports
I’ve also thoroughly tested some hundred (!) popular, well-known games; both 2D and 3D titles. (More on these games in THIS article – my previous and, now, slightly outdated article on 3D gaming.)
As has already been emphasized with the benchmarks, there’s no clear winner here either. As a rule of thumb, however, you should always try to run a given title under Jbed first. It’s the least compatible with existing games, but has three real advantages over both the M3G-compliant version of Jeodek and Jblend: if it does work then, generally, it’s the fastest; of the three, it has the best sound emulation and it supports full screen mode.
If you do encounter problems, give a try to alternative MIDlet managers: to IBM J9, TAO Intent, Jeodek M3G or Jblend (or, JblendFullScreen if you don’t need M3G and/or decent music but do need full screen because of, for example, the hard-coded screen size used by the MIDlet). Note that it’s pretty useless to try to run a title not running under Jbed under the non-M3G-capable Jeodek either. Doing the same under the M3G-capable Jeodek version, however, is a completely different issue.
As has already been emphasized, these MIDlet managers can co-exist on the same device and if you’re really into gaming as many MIDlets as possible, you will want to put at least three (Jbed, Jblend and Jeodek M3G) on your handset.
Note that there is an earlier version of this chart HERE. As the chart doesn’t contain for example the Nokia N95, the M3G-capable Jblend (only its full screen, old and pretty much incapable version) and lists far fewer titles than the main games compatibility chart, it’s in no way as important as the main compatibility chart listing the, for gaming, most recommended WM KVM’s (along with Nokia). However, it also contains some info on how different hardware (520 MHz XScale-based VGA HTC Universal vs. 195 MHz TI OMAP-based QVGA Wizard, for example) compare when it comes to running (graphics-intensive) games. As can be seen, the, otherwise, for gaming not really recommended Wizard behaves pretty OK even at the default 195 MHz CPU clock speed.
Highly recommended articles
TUTORIAL: Control issues of Java MIDlets – all secrets of button handling. Crossposts: PPCT, AximSite, XDA-Developers - 1, XDA-Developers - 2, XDA-Developers - 3, FirstLoox, BrightHand, HowardForums, SPT, MoDaCo, PocketGamer.org, PocketGaming.de.
The Definitive Guide to Running 3D-enabled Java MIDlets on Windows Mobile (note that its discussion of some of the apps is a bit outdated; that is, consider the info in the current Bible of higher priority than in there. Also note that the comments (at the bottom) are really worth checking out, just like with the comments arrived at THIS article. Crossposts: PPCT, AximSite, XDA-Developers, XDA-Developers - 2, FirstLoox, BrightHand, HowardForums, SPT, MoDaCo, PocketGamer.org, PocketGaming.de
The Button Enhancer Bible & great button config tips for Opera Mobile / Mini users – it has a LOT of MIDlet-related info. Crossposts: PPCT, AximSite, XDA-Developers - 1, XDA-Developers - 2, FirstLoox, BrightHand, HowardForums, SPT, MoDaCo.
4PDA thread; translations HERE
5 things noobs should know about java mobile games
The MIDlet reviews at Mobile Critic and Midlet Review
The homepages of Fishlabs, Gameloft, Glu and Xendex
My old, outdated, related articles
What TAO Intent versions there are? - this article has been written before Risidoro’s releasing the 1034/1036 versions and the release of the generic SMS / phone.dll hacks. The latter means you don’t need to install the somewhat older version .1023 of the MIDlet manager on your phone-less PPC any more.
Running Motorola-specific Midlet games on the Pocket PC? YES!!
IBM releases new, 6.1.1 version of great Midlet runner J9; now, it’s fully compatible with Google Maps!
Great, Free Java/Midlet Environment IBM J9 New, 6.1 Version is Out – a Full Compliance & Bug Report & Never Before Published Tweaks that Help Using It Much Easier (in there, I’ve also reported on my effort of trying to relocate the IBM J9 deployed MIDlet repository from the main memory).
Java Midlets on the Pocket PC - the Complete Tutorial (outdated, but nice for some additional tips)
Wowz, thanks for the kind words
Menneisyys, as usual you did an excellent job! Many thanks
I would welcome one addition though: a table which shows which JSR standards are supported by each midlet manager.
I have spent much time to find out that only IBM J9 supports both JSR-75 (accessing PIM database and the File System) and JSR-82 (Java BT API & serial ports). There exist a couple of applications, e.g. MGMaps, which rely on support for both stds.
Cheers
JockyW
jockyw2001 said:
Menneisyys, as usual you did an excellent job! Many thanks
I would welcome one addition though: a table which shows which JSR standards are supported by each midlet manager.
I have spent much time to find out that only IBM J9 supports both JSR-75 (accessing PIM database and the File System) and JSR-82 (Java BT API & serial ports). There exist a couple of applications, e.g. MGMaps, which rely on support for both stds.
Cheers
JockyW
Click to expand...
Click to collapse
1. Thanks for the kind words
2. JRS-75 (File Connection & PIM) requires an add-on hack (see the "JVM File Connection (part of JSR 75):" row)
3. As far as JSR-82 (BT) is concerned, it did have two third-party BT add-on libraries, but they no longer exist. See http://www.aximsite.com/boards/bluetooth-talk/209772-pocketpc-bluetooth-enabled-midlets.html for more info.
bt info on a wizard
hi i have months trying to use a software bt info in my wizard htc 8125. it use bluetooth and is like the bloover... i can use it... some help please what i have to install im from ecuador and is a little hard to read all that i dont understan at all. thanks
ernestorendon86 said:
hi i have months trying to use a software bt info in my wizard htc 8125. it use bluetooth and is like the bloover... i can use it... some help please what i have to install im from ecuador and is a little hard to read all that i dont understan at all. thanks
Click to expand...
Click to collapse
I haven't managed to install any 3rd party BT libraries under IBM J9. jockyw2001 may know how this is done.
thanks
Menneisyys said:
I haven't managed to install any 3rd party BT libraries under IBM J9. jockyw2001 may know how this is done.
Click to expand...
Click to collapse
thanks, somebody helppppp
UPDATE (11/23/2007):
in the meantime, thanks to XDA-Devs user defcomg, a new, third-party, free Bluetooth (JSR-82) library, BlueCove has been found, which supports IBM J9.
In the second part of this article, I elaborate on how you can “hack” some Nokia classes into MIDlets so that they have a chance to run. I also explain how you can force the installation of MIDlets that, otherwise, are refused to be deployed because of missing library (for example, Bluetooth under Jbed) support.
1. BlueCove
Let’s start with the compatibility issues.
1.1 Real-world (!) compatibility
First, it’s only IBM J9-compliant (NO TAO, NO Jbed, NO Jblend). Even under J9, unfortunately, it’s (as of this writing) pretty much far away from REALLY working. While it correctly implements Bluetooth discovery, in general, it doesn’t go further and just crashes at actually connecting (not only discovering). I’ve tested this with both the Microsoft and the Widcomm Bluetooth stack, using version 6.1.1 (that is, the latest one) of IBM J9.
My compliance test results are as follows:
Super Bluetooth Hack 1.07 (note that the two (2nd/3rd) versions are exactly the same): doesn’t even start (IncompatibleClassChangeError with Vector)
Blooover discovering works; the actual connection doesn’t (IncompatibleClassChangeError with javax.microedition.io.Connection).
3D Constructo Combat: The same: it is able to discover other devices:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
but, upon actually connecting to them (or, when you start it in server mode), it immediately crashes and exits.
1.2 Downloading, installing
If you still want to give it a try (again, it’s pretty much useless as of now!):
Get bluecove-2.0.1.jar (version as of 11/23/2007) from HERE
if you have WinRAR on your desktop Windows machine, enter the WinRAR bluecove-2.0.1.jar command;
otherwise, rename bluecove-2.0.1.jar to bluecove-2.0.1.zip and click it so that its content is shown;
extract bluecove_ce.dll and intelbth_ce.dll from the root of the archive; transfer them to the \bin subdirectory of your IBM J9 installation.
Note that if you don’t want to hunt for / extract these files yourself, I’ve made them available HERE as a standard ZIP file. Just unZIP it and transfer the two DLL's.
copy bluecove.jar to the \lib\jclMidp20\ext directory of your IBM J9 installation. If “ext” doesn’t exist, create it.
you’ll need to use special link files to start your Bluetooth-enabled MIDlets. This also means you don’t need to deploy your MIDlets under J9 at all as direct links of this type don’t require the MIDlets to be deployed beforehand. A typical link file looks like this:
255#"\Storage Card\ibm\bin\j9.exe" -jcl:midp20 -Dmicroedition.connection.pkgs=com.intel.bluetooth -cp MIDletName.jar "-jxe:\Storage Card\ibm\lib\jclMidp20\jclMidp20.jxe" MIDletName.jad
(An example link file is HERE as a real file.)
In here, change MIDletName to the filename of the MIDlet and, of course, change \Storage Card\ibm to the actual path of your IBM J9 installation.
Note that you’ll also need the JAD files in this setup. Should you not have them, use the free JADMaker to create them from JAR files (see the link for more info). If you don’t provide any absolute directories in the link file to the JAR / JAD files, then, you’ll need to copy the JAR file to the \lib\jclMidp20\ext directory of your IBM J9 installation before invoking the MIDlet through the link file. This is the same directory where bluecove.jar should reside. Also, the JAD file must be in the same directory as the lnk file itself.
2. Some additional hacking
2.1 Nokia classes missing in the game
If you try to run 3D Constructo Combat under J9 (I’ll elaborate on other MIDlet managers later), you’ll notice at once it doesn’t run. The sole reason for this is the lack of some Nokia-specific libraries in the MIDlet manager. You can, however, easily “hack” these classes into the JAR file of the MIDlet itself.
To do this, first, download THIS archive and unZIP it. Second, get WinRAR and, after installing it, enter the WinRAR jarfilename command to open the JAR (the main MIDlet) file. Now, just drag-and-drop the com directory (with all its subdirectories, of course) to the opened JAR file – making sure you don’t drop it on a directory, but in the root.
That’s all; now, your MIDlet might start.
Note that this definitely works with 3D Constructo Combat and J9 but will NOT work with Jbed, not even with the permission hacking I’ll explain in the following section.
(also see THIS Russian-language post for more info if interested. It doesn't contain much additional info, though.)
2.2 Permission hacking
As has been explained in the MIDlet Bible, some (very few!) MIDlets can’t even be deployed under Jbed (and other, less recommended) MIDlet managers. The reason for this is the deployment-time permission checking.
An example of these MIDlets is 3D Constructo Combat, which is refused to be deployed because of the unavailability of a library (here, a Bluetooth one):
You can easily help this and make MIDlets at least deployable (being actually runnable is another question). To do this, enter the WinRAR MidletFileName.jar command and extract the META-INF\MANIFEST.MF file. In there, look for the MIDlet-Permissions: row. For example, with 3D Constructo Combat, it’ll be the following:
MIDlet-Permissions: javax.microedition.io.Connector.bluetooth.client,javax.microedition.io.Connector.bluetooth.server
Just delete it and overwrite the original META-INF\MANIFEST.MF file with the new version, all this in the JAR file. Again, the new file no longer contains the MIDlet-Permissions: row. Now, the MIDlet at least becomes deployable as can also be seen in THIS screenshot. (This, again, doesn’t mean Jbed will be able to run it as well. It won’t, not even with the above-explained Nokia class hack.)
UPDATE (11/24/2007): At last: an M3G-capable, much more gaming-friendly Jbed version is out!
As is stated in the Bible (as can also be seen in the main game compliance chart), the recommended, current version of Jbed has very limited game compatibility. If you do want to use it and do need to run for example M3G titles, so far, you needed to turn to alternative and, in many respects, inferior MIDlet managers. Now, this has changed: thanks to XDA-Devs forum members viperj and defcomg, a brand new and really great version has been posted.
This is version 070524.2.1 - that is, slightly older than the current, 070802.2.2 version. The major disadvantage of this version, compared to the 2.2 one, is the complete lack of sound emulation.
It runs all the games running under the old, M3G-capable Jeodek (see their list HERE) and is very fast. Furthermore, it isn’t affected by the locale bug of version 2.2 – that is, the inability to run under any locales using a language with a non-Western alphabet (for example, most East-European languages).
I’ve tested it with I-Play’s FIA World Rally Championship 3D, Namco’s Arcade Golf and High Speed 3D. All these worked flawlessly (except for, of course, the complete lack of sound), unlike under 2.2. Under 2.2, they didn't even start or crashed later.
If you really need sound emulation and it’s indeed able to run the given title, you will still want to version 2.2 of Jbed, though. For example, it runs Simcity Societies with great sound.
Installation
To install it, just grab THIS file, unRAR it to, preferably, the “J” subdirectory on your storage card (so that jbed.exe is right in the “J” subdirectory) and import THIS Registry import file (change all occurrences of "Storage Card" to the name of your card if it has another name). You might also want to copy a link to the main executable, jbed.exe, to \Windows\Start Menu\Programs (or, just \Windows\Start Menu\ on MS Smartphones). I’ve created the link file HERE.
UPDATE (01/16/2008): In the meantime, it has turned out that you can use the non-M3G-specific version of Jbed (that is, Cloudyfa's 20070802.2.1) with any localizaton setting if and only if you start your specific MIDlet directly; that is, via a system-level shortcut.
I've also been using Opera Mini 4 on the Blackberry 8800, using the default MIDlet manager coming with the device. Note that, unlike the built-in Web browser and the mailer, you MUST specify the APN of your operator for it to work. Otherwise, it'll just report being unable to connect to the Net after starting (and a lengthy installation process). To do this, go to Options / Advanced / TCP?IP and enter your APN (for example, "Internet" with T-Mobile.)
Hello Menneisyys.
Have you seen this?
http://www.pda4x.com/read.php?tid=59304
It work great with full screen java game and good sound.
UPDATE (02/01/2008):
There are new builds of both Jbed and Jblend (two excellent MIDlet Managers – see the Java MIDlet Bible for more info). Due to lack of time, I haven’t tested them. Both has been done by Da_G (his projects’ homepage is HERE) and are accessible HERE. Note that you MUST register yourself (it’s free and is done quickly) in order to access the page above (along with the download).
I hope I’ll be able to test them some time – along with the default Blackberry MIDlet manager. (I might wait with testing the latter until version 4.5 of BB OS is released, though.)
UPDATE (02/06/2008): Another Jbed MIDlet Manager version has been released: JRebeiro_EsmertecJbed_20071119.3.1.
It’s available HERE (at the bottom of the first page).
As I don’t have the time to thoroughly test it, feedback is REALLY welcome!
As has been announced some weeks ago, I had a W3C speech a week ago devoted to Web browsing on mobile devices. You can find the (English) slides HERE. (Sorry, some of the example screenshots are in Finnish. This, however, doesn’t have a detrimental effect on the overall understandability of the material.) In order to understand the slides, I’ve also decided to comment on all of them so that the entire Windows Mobile, Symbian and BlackBerry mobile community can benefit from my speech – in written form. Finally, note that, albeit this article is over 80kchars long, it in no way can provide a FULL, absolutely thorough overview of the Web browsing scene on these platforms. That is, if you don’t understand something, don’t despair: in my referenced, previous articles, you can, in most cases, find a very thorough dissemination of the subject. Just an example: in this article, I only devote some 2kchars to the subject of downloading files while my original, devoted article, along with its (recent) updates, amount to over 100 kchars.
I also provide in-line screenshots in this article so that you know what I'm speaking about without constantly switching to PowerPoint; however, to see the original document at its full (and copy/pasteable) glory and resolution, you'll need the PPT file.
(Sorry for the comparatively bad quality – captured from the 1024*768 M-JPEG video(!) recording of my Canon 960IS camera.)
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
(no comments needed)
(just some self-promotion )
(Promoting my employer and me. Incidentally, should you want to support my employer - and, through that, me - with a, say, contract for some kind of development or any kind of IT consultation [if you work for a company that would like to outsource some kind of consultation or quality (!!!!), in-depth research], feel free to contact me and I’ll make sure my employer contacts you back. Even a, say, US$ 50,000 project would be welcome. I’ve been a generic – not just mobility! – IT consultant and lecturer [for example, for Sun’s Java training courses], but am also well versed in traditional Electric Engineering stuff like telecommunications and signal processing; see for example my forthcoming Digital TV / Telecommunications Bible for more info on the latter. That is, I’m in no way a mobility-only type of professional. In e-mail [werner AT pocketpcmag PISTE com, where change AT to @ and PISTE to . (dot)], I’m also ready to provide you with a more thorough list of past IT consultation, education etc. projects. It’s me that would be working on these contacts; together with an English editor to get the English right. I only expect serious inquiries. Please, if you like my articles and would like to see similar articles come out in the future too [it’s mostly because I have a lot of free time and a really cool environment at work that I am allowed to work on articles even during work hours], look around at your company to see whether there’s some way of outsourcing your, say, consultation, education or research needs. International contracts [on which I/we’ve worked several times] are welcome.)
OK, let’s get to business. Given that in a 45-minute speech it’s entirely impossible to give the listeners a complete, detailed picture of the problems, the compatibility issues of each and every browser for all the three operating systems, I’ve added references to all slides (whenever applicable). To quickly look up the referenced article / Bible, just change “1327” in http://www.pocketpcmag.com/blogs/index.php?p=1327 to the number given after „Ref:“
Also, you’ll need to be aware of three articles not (always) linked as references. The two Windows Mobile Web Browsing Bibles have the reference number 1828 and 2084 for Pocket PC’s and MS Smartphones, respectively. They, therefore, translate to real URL’s http://www.pocketpcmag.com/blogs/index.php?p=1828 and http://www.pocketpcmag.com/blogs/index.php?p=2084 . My Opera Mini 4.1 (Ref: 2571) review, which is currently not discussed in either of the Web Browsing Bibles, is worth checking out for the latest information on this excellent browser. Also, you can find all my Web browsing articles in the Web Browsers category on my blog at http://www.pocketpcmag.com/blogs/index.php?blog=3&cat=61
There are several established mobile operating systems (platforms). In this slide, I quickly list them. Of course, this is just a very high-level overview of the operating systems; it’s later that I elaborate on them more thoroughly; one by one.
Web browsing-wise, probably the most advanced platform is Windows Mobile (WM for short), which itself has basically two, starting with WM5, converging subplatforms: touchscreen-enabled Pocket PC’s (PPC for short) and touchscreen-less MS Smartphones. In WM6 parlance, they’ve been renamed to Windows Mobile 6 Professional / Classic and Windows Mobile 6 Standard, respectively. I’ve also listed Handheld PC’s for completeness (and as an introduction to the slide explaining the evolution of the built-in Web browser pre-installed on WindowsCE devices in the past 11.5 years), which are a dying breed.
Symbian is another, very important, consumer-focussed mobile operating system. The most featureful browser for its most popular breed, Nokia’s Series 60 (S60), is the Nokia S60 Web. They are, in addition, also able to run Opera Mini and other MIDlet-based browsers. It also used to have an Opera Mobile port, as was the case with some Linux-based models like the Sharp Zaurus.
RIM's BlackBerry is a very important business (and, with the advent of more consumer-friendly models like the Curve and Pearl and the, particularly multimedia-wise, really enhanced 4.5/4.6) operating system. Its Web browser has traditionally pretty bad. With operating system version 4.5/4.6, however, it has undergone a major facelift and received a lot of new features. For example, now, searching for text in pages works. This highly useful feature is only supported by very few other browsers – for example, it’s only been introduced to the two Opera browsers this year.
The hugely popular Apple iPhone runs Safari. It’s really a decent browser. The only real disadvantage is the complete lack of, for example, Flash (Lite) support. As YouTube (one of the major usage areas of Flash as of today) has a dedicated YouTube client, this isn’t that big a problem. Note that, unlike with the first three operating systems (and like all the following ones), I don’t elaborate on this operating system in the rest of my speech. Currently, iPhone doesn’t have Java MIDlet support; therefore, you won’t be able to run Opera Mini on it. Java, however, will be - hopefully - soon added.
Linux, after the, unfortunately, discontinued, but, technically, really-really excellent Sharp Zaurus series, seems to have been reborn: Nokia's Web Tablets and the non-Nokia phones based on the LiMo foundation’s operating systems are gaining popularity. Note that, as far as the old Zaurii are concerned, it had both Opera Mobile and NetFront (NF for short) preinstalled.
Finally, the once market-leading Palm OS is pretty much dead now; this is why I don’t elaborate on its (compared to what is available on Windows Mobile, iPhone and Symbian, not very advanced) browsers like the, with newer versions being NetFront-based, Blazer at all. Unfortunately, the only MIDlet manager (an environment to run Java-based applications like the Opera Mini browser) for the operating system is IBM’s now-discontinued J9, is really buggy and crashes frequently; this means you can’t even use Opera Mini on the platform.
First, let’s take a closer look at Windows Mobile and the core operating system, WindowsCE, paying special attention to how the built-in browser was enhanced during the 11.5 years of maturation.
With WindowsCE 1.0 (Handheld PC), which was released in early 1997 and used on several models like the HP 300/320LX, the Philips Velo etc, has only a really basic (no frames) but already online (non-offline) browser. (We’ll soon see why I emphasize it being online.)
The next two major releases of the operating system, WindowsCE 2.0 and 2.11 (released early 1998 and 1999, respectively) has gone in two directions to cater for people wanting a really palm-sized and, to keep the size down, keyboard-less version of the, compared to the, then, like-hot-cakes-selling Palm handhelds, not really popular WindowsCE models. The new form factor was named Palm-size PC (PsPC). Several WindowsCE hardware manufacturers released PsPC’s; for example, Casio released the Cassiopeia two-digit series (E10 etc.); Philips released the Nino, HP the Jornada 430 which was even featured in a James Bond movie etc. These devices only offered offline browsing; that is, if you had any kind of Internet connection on them (via, say, an infrared connection to a mobile phone), you still couldn’t directly access any Web pages. Instead, you needed to use the desktop based ActiveSync tool (earlier called as WindowsCE Services) to fetch the pages for you and synchronize it to your handheld for offline viewing.
It was only in the “traditional” Handheld PC handhelds, for example, the HP 360LX/620/680 (with the OS version 2.11, called Handheld PC Pros) that still had online access capabilities with a hugely enhanced and updated Web browser much better than the one in WinCE version 1.0.
The market’s answer to the 2.x-series handhelds was pretty much lukewarm. This also resulted in several manufacturers like Philips leaving the scene for ever. It was not before mid-2000, with the release of WindowsCE 3.0 and its hugely popular Pocket PC platform (a heavily enhanced version of the PsPC platform, fixing a lot of issues like the lack of online browsing support) that anyone would say WindowsCE-based handhelds would seriously endanger the market penetration of Palm handhelds and BlackBerry messengers.
WindowsCE 3.0, which was released in May 2000, was the first really successful MS mobile op. system. As with the 2.x series, two operating system subversions were based on it: the, technically, much more advanced (for example, its built-in browser was already capable of finding text in pages, which the Pocket PC version isn’t even now capable of) Handheld PC 2000 (HP 720/728 etc.) using the traditional clamshell form and the descendants of Palm-size PC’s, now, renamed to Pocket PC’s. The latter received an online Web client again; at the time, it was clearly less capable than that of the Handheld PC 2000 OS. Ironically, the latter operating system has practically died out pretty soon and now (its descendants) is used in niche models only.
Let’s go on with the Pocket PC operating system and its built-in browser, Pocket Internet Explorer (PIE). This was, incidentally, renamed to Internet Explorer Mobile (IEM) in 2005 with WM5.
In late 2001, the first version of the PPC OS (also called Pocket PC 2000) was updated to PPC2k2 (2002). While it did have certain advantages over the old operating system, Web browsing-wise it was more of a step back in speed / memory handling because it was incapable of rendering larger (about 150+ kbytes) pages – unlike its predecessors and successors.
In Spring 2003, Windows Mobile 2003 (WM2003 for short; notice the operating system name change!) followed with a much-much better built-in browser with, among other things, CSS support added. (Previous browsers didn’t at all support CS sheets.) Then, in Summer 2004, WM2003 Second Edition (WM2003SE) followed suit, with the native One Column mode being the most important enhancement (on which I’ll elaborate later), Web browsing-wise.
In Autumn 2005, WM5 arrived, also renaming PIE to IEM. It contained a heavily bugfixed IEM engine – some CSS contructs no longer result in the prompt termination of the PIE session, unlike in WM2003(SE). It was also the first PIE (IEM) version to support file uploading – a painful omission from previous PIE versions.
WM5 (and subsequent operating system releases) was also unique in that internal updates during the lifespan of the operating system were well-documented and referred to, easily checkable by an end user, via “AKU” versions. Just some major enhancements: while the initial WM5 IEM browser was pretty very slow to load Web pages, AKU 2 has fixed this almost completely. AKU3.5 introduced a High-Resolution switch for high-resolution VGA devices – another long-demanded feature.
In Spring 2007, WM6 followed suit, with no real improvements except the support for IFrames. Finally, this (2008) Spring, WM6.1 was announced with no real improvements either; a fully revised and enhanced version (a full port of the desktop IE6 engine) is promised later this (2008) year.
Speaking of the built-in browser, it still is pretty much incapable when compared to alternative browsers like Opera Mobile or even Mini. This is why there exist several so-called “plug-ins” or, with some less popular solutions, “shells” to enhance its functionality by adding, for example, multi-document (multitab) support. The most important plug-ins are as of today: Spb Pocket Plus, PIEPlus and MultiIE.
In the rest of my presentation, I’ll return to the compatibility issues of IEM several times; for the time being, let’s check out the other, alternative browsers.
In addition to PIE / IEM, there are several third-party browsers on Windows Mobile. Let’s start with standalone, native Windows Mobile ones (native means you don’t need to run them in a specific environment like a MIDlet manager). The first group is non-streaming too, meaning no excess data fees over a non-flatrate connection / inability to use over non-3+G connections.
* Opera Mobile: probably the most important Web browser. It’s, more or less, based on a direct kernel port of the desktop engine, meaning excellent compliance with core Web standards. Note that the currently, officially available version, 8.65, is still based on the 8.x core; it’s only the latest, 9.x-series Opera Mobile that have, finally, switched to the 9.x core and delivers full compliance with all current standards. While it’s a fairly new browser (the first beta was released in early 2006), it’s taken the Windows Mobile Web browsing scene by storm and is the preferred Web browser of many.
* NetFront is a long-established browser. Unfortunately, while it does have its merits, the development seem to have slowed down and several major bugs haven’t been fixed for years. (For example, you still need to rely on the definitely inferior built-in Flash interpreter instead of having the ability to use external, official and much better-quality Flash plug-ins.) I really hope Access, the developer of NetFront, finally starts to make some serious enhancements to this browser.
* Thuderhawk: this is another long-established browser. The classic (native Windows Mobile) client has received no real improvements in the last about two or three years (except for adding Java applet support back in 2006) and it seems it’s completely abandoned as the company is switching to a MIDlet-based and, therefore, truly multiplatform (not only WinMo) solution.
* Minimo, which is an unofficial and, now, abandoned Mozilla Firefox-port. Unfortunately, I can’t really recommend this browser – its speed, performance and memory consumption is pretty bad when compared to most of the alternatives. Note that it has nothing to do with the real, official Windows Mobile Firefox port announced some months ago.
* Picsel’s browser is an OEM-only one and, therefore, can’t be acquired (legally) if it isn’t included in your factory ROM. It’s pretty slow and is incompatible with even basic Web standards. Nevertheless, some people still like it.
* Maximus: it’s a really poor and in no way recommended browser.
Streaming-based but still native browsers follow. The most important of them is SkyFire which, currently, only works in the 3G networks of the U.S. As I’m in Europe, I can’t really give it a thorough ride at the moment. Another, similar (but, based on the raving user reports on SkyFire, speed- and usability-wise, really inferior) solution was Microsoft’s DeepFish, which has been discontinued in the meantime. Also note that there are other, streaming-based, dedicated mobile solutions like DataWind’s PocketSurfer 2.
Finally, let’s elaborate a bit on MIDlet-based browsers. Their biggest advantage is the compatibility with all other mobile platforms, including even “dumb” feature phones (but excluding BREW-only dumbphones used in some American networks). This will even include the iPhone as soon as Sun (and Apple) gets their MIDlet manager, the environment you can run MIDlets in, ready. Their biggest disadvantages are
1. the somewhat reduced speed. In practice, however, you won’t really notice this; the only real difference is the download speed when you use the in-process download manager, as opposed to using the system-level Web browser to download files. As you will want to prefer the latter, this isn’t an issue.
2. the lesser integration with the operating system. For example, you can’t copy arbitrary text from Web pages. This can be done in a very awkward way with Opera Mini 4.1: save the page to a file and inspect the saved file (containing the Web page in a textual, albeit non-HTML form) with a copy-capable file viewer.
Another major issue is the inability to make the browser the default one for the entire system – at least for non-Windows Mobile operating systems. On the latter, thanks to me and two other developers, this is already possible, making your life much easier: you can now just click links in a, say, e-mail and Opera Mini (or, alternatively, any other Java MIDlet-based Web browser) opens the given page.
Of the MIDlet-based (non-native) browsers, it’s Opera Mini that is the most important. Now, as of version 4.1 and all its new goodies (like file upload and page saving), along with our direct invocation tools, it’s a serious alternative to fully-fledged, non-Java-based browsers.
Some other MIDlet-based browsers include TeaShark and UCWEB. The brand new version of Thunderhawk (TH for short) is also Java-based but is strictly OEM only and isn’t available for the general public.
BlackBerry from RIM, as has already been pointed out, is mostly a business “push mail” platform, only recently opening its gates for the consumer wanting more multimedia and camera. Officially, it’s still at OS version 4.2 / 4.3; the new version, 4.5 / 4.6, is slated to be released in a few months. In the meantime, you will really want to check out the (largely unofficial) betas as they offer a lot of goodies seriously enhancing the usability, user- and, through the new fontsets, eye-friendliness of the platform.
In the two screenshots at the bottom of the slide, you can see how the old, 4.2 OS (on the left) rendered the first few entries in my Opera Mini favorites list and how the same is done under 4.5 (on the right). As can clearly be seen, under 4.5, much more contents can be displayed on the screen and the fonts are much better-looking and readable.
As far as Symbian is concerned, there used to be several subversions of Nokia’s Symbian. (Here, I don’t elaborate on Sony-Ericsson’s handsets.) Of them, S60 is the surviving one and the once-common S80 and S90 versions are both dead. A major breakthorugh, touchscreen, will be added this or next year and Nokia is promising an iPhone killer, Nokia Cube.
S60’s later versions (namely, ones that represent the 3rd generation of S60, S60 3rd, and come with Feature Pack 1 (FP1) or [in the future] higher), have an excellent built-in Web browser, Nokia S60 Web. It’s based on WebKit, an excellent core to build Web browsers on. It also supports Flash Lite 2 and 3; the latter has been delivered in firmware updates (v21 for the N95) and not as standalone downloads. Flash Lite 3 is much better to play back YouTube / other videos than the full Flash 7 on Windows Mobile.
On the screenshot on the right, you can see one of its major features, the minimap, in action. It helps in positioning on a page quite fast and is, now, widely copied by other browsers like NetFront 3.4+.
Now that we have had a bird’s view overview of what’s available on the three platforms (and, as far as Java/MIDlet-capable phones are concerned, - including, sooner or later, the iPhone - all of the other), let’s take a closer look at the issues a mobile Web browser can be confronted when browsing pages originally targeted at desktop (and not resource-restricted, dumbed-down mobile) browser users.
First, you need to consider architectural restrictions, the (comparatively) small amount of RAM (dynamic) memory (10...90 Mbytes on higher-end handsets; (much) lower on feature phones) being one of the biggest problem.
While you can, generally, build up the in-memory representation of even several kilobyte-long Web pages using less than 10 Mbytes, having restricted RAM severely restricts the handset’s ability to store multiple Web pages in-memory for quick access without having to re-fetch (re-download) them. Note that dynamic memory consumption-wise, I really recommend my thorough RAM usage tests in the Web Browsing Bible.
Different Web browsers certainly have vastly different memory needs; this is why, for example, Opera Mini 4.1 is able to keep up to 30 pages in memory even on devices with little RAM. Opera Mobile consumes about an order of magnitude more memory, but is still about two two three times better than IEM, NetFront or Minimo.
The CPU efficiency (a 624 MHz Intel / Marvell XScale is equivalent of a max. 200-300 MHz Pentium) can also be an issue, particularly if you provide dynamic content. While Java Script and Ajax (if it’s compatible at all) run pretty OK, the case isn’t necessarily the same with embedded Flash content, particularly on Windows Mobile platform, where the current, official Flash 7 plug-in is pretty slow. (NetFront’s own Flash interpreter being even worse.) As a rule of thumb, you should use Flash Lite 2 or 3 instead if you want flawless, fast execution. (Currently, Flash Lite 3 is supported by Symbian only and Windows Mobile is slated to introduce support only later.)
On mobile devices, cache reading / writing can also be about an order (or even more) of magnitude slower than on a desktop / notebook hard disk (1-2 as opposed to 20-40 Mbyte/s being typical). This means far higher page loading times if the particular browser employs a bad caching algorithm. (I’ve also very thoroughly elaborated on all these issues in the Bible; the reader is referred to it for more info.)
Multitab browsers may also be affected by the process number restrictions under pre-Windows Mobile 7 (that is, all current) operating systems. This will mostly result in issues with multitab browsers spawning an entirely new process for each and every tab (all IEM plug-ins work this way); that is, not with, say, Opera Mini.
Finally, "from stratch" browsers (that is, browsers that aren‘t direct ports of any established desktop Web browsers; some examples are NetFront, Thunderhawk, UCWeb etc.) generally suffer from severe bugs / errors on even the HTTP protocol level, let alone higher-level HTML / CSS bugs.
Let us still elaborate on the question of what a mobile browser can be used for. As has already been pointed out, their biggest advantage on all mobile platforms is the fact that you aren’t restricted to specially formatted PDA/handset-only pages like WAP pages and you can access full pages initially meant for desktop users. This makes it possible for you to access orders of magnitude more pages than some 5-6 years ago with feature (dumb) phones’ only able to access WAP pages.
However, as has already been explained in the previous slide, you need to be avare of several possible problem areas when accessing an initially desktop-optimized page.
* First, >500k HTMLs (for example pages generated by Snitz Forums 2000 or even YouTube) may result in a severe slowdown or even crashes on the client; under Windows Mobile, particularly under the PPC2k2 operating system, which, as has already been explained, only allows for rendering max. 100-120k HTML pages without crashing
* As has already been explained, under IEM, the memory usage is about an order of magnitude more than the original size of HTML. With alternate browsers (particularly with Opera Mini and, to a lesser degree, Opera Mobile) this isn’t an issue.
* (Desktop) ActiveX controls are not supported, not even on Windows Mobile because it’s not an x86 architecture and, therefore, can’t run native x86 code.
* Some browsers (IEM and, particularly, Thunderhawk and Picsel) have very weak JavaScript support
* Unfortunately, Java applets (login, authentication) are only supported by custom third-party JVMs only. What is more, it’s only available on Windows Mobile – that is, there’s no applet support at all on Symbian / BB. On Windows Mobile, applet support is pretty restricted and is only compatible with up to JDK1.4 (unless you use Thunderhawk). There's no official support from Sun on these three platforms either, unlike on iPhone.
* I’ve already mentioned the Flash incompatibility and problems and the less important HTTP/HTML problems, bugs and restrictions.
On slide 8, I’ve already elaborated on the different networking models used by Web browsers, as far as client-middle tier server streaming-based vs. standard, middle-tier-less browsers are concerned. A nonstandard setup can be vastly different from the pretty much bandwidth-hungry streaming-based solution, however. On this slide, I further elaborate on this distinction.
Most online (as opposed to offline; see for example AvantGo, Mobipocket Reader or iSilo offline web downloading and ActiveSync-based syncing to the handset) browsers use direct connections.There are, however, clients that do have a (sometimes simplified) client-side textual (!) renderer component – as opposed to traditional streaming clients (SkyFire, DeepFish and specialized hardware like PocketSurfer 2) – don’t consume much data. On the contrary: one of the design goals of these clients was to vastly reduce data usage, which is of paramount importance with non-flat rate connections - like those of Canadian mobile operators - and make them usable even over super-expensive, typically, 3...5 Mbyte/month BlackBerry data plans. That is, they work in exactly the opposite way as data-hungry apps like SkyFire and deliver considerable data saving even when compared to accessing the same Web pages with a standalone client.
The most important of these client/server browsers, making use of (pretty much) transparent proxies, are Opera Mini (and most of? all? the other MIDlet-based browsers) and Thunderhawk.
These solutions have some drawbacks:
* possible eavesdropping (definitely not the case with Opera; as far as some new, “noname” Chinese browser companies are concerned, however, many believe that the opposite is true; as a rule of thumb, never ever enter any credit card info in any of these new and pretty much unknown browsers)
* they are not flexible enough – there’s no way to use other proxies like the highly useful header rewriter proxies to allow for, say, asking for nationalized versions of pages (more on this later)
* sometimes introduce a definite delay because the (sometimes overburdened) middle-tier server has to process the source pages themselves. With Opera Mini, the delay, typically, ranges from 2 to 30 seconds – that is, sometimes it’s on the verge of acceptability.
* Some incompatibility issues with some sites; for example, the current Opera Mini 4.1 is not compatible with the “Quote” button in vBulletin version 3.6.8 currently used at, say, forum.xda-developers.com.
Some of the pros (much less data overhead) have already been mentioned; on top of that, what you gain is also anonymity. That is, your real IP is hidden – the Web page you access sees Opera’s middle-tier server as the client, not your own IP. Note that your IP is told to the Web server but in an extended HTTP request header, which few of these servers log.
Now, let’s turn our attention to IEM, that is, the browser coming with built into the Windows Mobile operating system. As has already been explained, it has pretty weak and, with standard Ajax, plain non-existing Ajax/JavaScript support. Its CSS support is equally bad. It doesn’t support the multidocument model (which was introduced in IE7 on the desktop) support without 3rd party so-called “plug-ins”. It’s also pretty much limited in that it has no link target / current page saving capabilities (which are pretty much essential).
The same used to apply to image saving in operating system versions prior to WM5. Also, it has severe restrictions like absolutely no IFrame support in pre-WM6 versions and only supports displaying 12 (in WM6) and 10 (in pre-WM6) frames. In this regard (too) alternative, commercial browsers fare far better.
Its stability used to be pretty bad in pre-WM5 times too: it frequently crashed because of certain CSS constructs. I’ve found and published several such CSS constructs back then. This is, fortunately, no longer the case in WM5+.
The two screenshots show how the mobile version of the PPCMag blog and the desktop version of YLE’s (Finnish Broadcasting Company) main page is displayed on a high-resolution VGA device.
Historically, on high-res Windows Mobile models, IEM had the “pixel doubling” problem, meaning images were still rendered as low-res, with double their size. This was fixed in WM5 AKU 3.5 (in early 2007), which lets the users switch between “High-resolution” and the default standard mode. This, however, didn’t really help external applications making use of the IEM rendering engine to display HTML-formatted contents like CHM readers – they still render images with pixel doubling (and, unfortunately, charts too) on high-resolution devices.
Incidentally, when used as a plug-in, there is another source of problem. If you don’t close HTML tags right after the (last) word like in <i>foo </i>bar (as opposed to <i>foo</i> bar), then, the two (formatted and the next) words will be rendered without a space in between them. In the two screenshots presented in the article (a low-res QVGA and a high-res VGA one), I show the results of this “bad-formatted” construct. Note that in the expression “fox jumps over a lazy dog”, ‘fox jumps’ is rendered as one word only because its HTML source was like this: “<b>fox </b>jumps over a lazy dog” and not the recommended “<b>fox</b> jumps over a lazy dog”.
Let’s turn our attention to NetFront, a well-known commercial browser for Windows Mobile. While it’s a bit expensive ($30), it offers an excellent browsing experience – except for some (rather major) problems and bugs. For example, it has built-in Flash support, which is, unfortunately, weaker than that of Adobe / Macromedia used by both IEM and Opera Mobile (it has compatibility issues and severe CPU usage problems). It supports SVG (which is very commonly used in Japan’s 3G content networks) and also has a Java VM to run applets. The latter, unfortunately, is definitely weaker than that of CrEme, the best JVM available for Windows Mobile and, in cases (where there isn’t much animation / graphics involved), even the Java support of the traditional, non-MIDlet-based Thunderhawk. It supports multitabs but their number is, unfortunately, maximized (to five) – as opposed to IEM plug-ins, Minimo or the Operas. I just can’t understand the rationale for this restriction; after all, on a modern 128 Mbyte RAM device, dozens of Web pages can be stored in RAM for quick access / swith. It also has minimap support and, which is very important for many iPhone fans, iPhone-like acceleration when dragging the screen contents by a finger / the stylus.
It has, as of version 3.4 and 3.5 (not NOT previous versions!), has pretty good Ajax/ JavaScript/ CSS support and its rendering engine is definitely better than that of IEM.
The recent releases are as follows: 3.3 (Summer 2006; inferior); 3.4 (Fall 2007): OEM only; currently: 3.5 Technical Previews. This, unfortunately, means you can only get the outdated and (compared to later 3.4 and current 3.5 versions) pretty much incapable 3.3 if you plan to go for this browser. Unfortunately, the currently available 3.5 Technical Previews versions are pretty much limited: no more favorites than 10; no Java / Flash support; no more tabs than 2. In this regard, Opera Mobile and most IEM plug-ins with their 30-day unlimited trial is much better. I hope the NetFront developers consider this and unlock all the features of future Technical Previews, only leaving a timebomb in rendering the browser useless after a certain date. (Noone will set their clocks back – and suffer from the consequences – just to be able to run NetFront to save $30.)
Now, let’s take a deeper look at Minimo, the free and, unfortunately, discontinued (cancelled), unofficial Firefox port. Note that the already-announced official Firefox will be later released for Windows Mobile; currently, no release date is known.
It comes in two versions: 0.16 (for pre-WM5 devices) and 0.20 (for WM5+ only). It’s plain useless on some models because of speed problems and other bugs. On the ones that it doesn’t have model-specific problems, however, is a semi-decent alternative if you really want a free browser other than Opera Mini.
Being based on the Firefox engine, it has excellent scripting (including Ajax) and CSS support. Not as good as Opera Mobile 9.xx, though.
Now comes without doubt (as of version 9.xx) the best, fastest and most powerful standalone Web browser, Opera Mobile. It has excellent JS / Ajax support, almost 100% compatibility with all Web standards, particularly with version 9.33; it’s very fast at everything (loading pages, downloading files etc.), supports the standard Adobe / Macromedia Flash plug-in (unlike NetFront, which forces the user to rely on the built-in and definitely inferior Flash engine) and lets for opening any number of tabs, as opposed to NetFront or IEM without a plug-in. It (as of version 9.xx – but, unfortunately, not the currently commercially available 8.65) also has some other goodies like finding text in pages, which is not available in any IEM-based solutions, not even commercial ones.
Currently, it’s available in two versions: the official (8.65) and the preview (9.33 / 9.5), for both PPC’s and Smartphones. The latter, 9.xx-series has without doubt the best standards compliance of all browsers for Windows Mobile.
Opera Mini, as of version 4.1, has become a really-really decent alternative to other Web browsers, particularly if you need a free solution. As it’s a MIDlet, it’s compatible with almost every phone out there – even feature phones. This means you get exactly the same menus, the same shortcuts on, say, your wife’s low-end feature phone and your smartphone.
It requires a separate environment, a MIDlet manager, to run. I’ve elaborated on the different MIDlet managers available for Windows Mobile in the MIDlet Bible, which you definitely should read if you want to get introduced to the wonderful world of MIDlets. (Note that you won’t necessarily need to read it if your only aim is to be able to install and use Opera Mini 4.1; then, all you’ll need to do is reading my 4.1 deployment and usage tutorial.)
As of the current (4.1beta) version, it offers even file upload, address autocompletion and page saving capabilities. Full page view is also supported (which has been added in version 4.0), retaining the full layout of the original page - as opposed to the one-column view. Incidentally, it’s this that you can see in the above screenshot too.
Its only problem is the lack of arbitrary text copying from Web pages. This could easily be fixed as is done in Russian Opera Mod (an unofficial and, unfortunately, illegal modification of the original Opera Mini) – feeding the textual page contents to a text input area, where it can already be copied to the clipboard if the particular MIDlet manager allows for this (all of them do on all the three reviewed mobile platforms; the only exception is the discontinued and outdated TAO Intent MIDlet manager on Windows Mobile).
As it’s a proxy-based solution, it has far less data usage; however, it can’t access local files (files in the file system) and the additional processing can take some time (typically, between 5 and 30 secs).
Thanks to extensive hacking, direct invocation has also been implemented (originally by me), which greatly enhances its usability on Windows Mobile because it lets for being directly invoked when you click a link in an e-mail or Office document. This isn’t as important on Symbian and BlackBerry because it’s far easier to copy / paste e-mail links in these operating systems (when you step over a link, it’ll be highlighted at once; then, you can copy it to the clipboard at once [as opposed to the, in this regard, much slower and more awkward Windows Mobile]; pasting to Opera Mini’s address input field is equally easy and quick), should you want to avoid using their built-in, respective browsers (for example in order to keep data usage down.)
Finally, still on the subject of Symbian and BlackBerry: while all public builds of version 4.0 frequently (about once a day) crashed on these platforms, I haven’t ever encountered any crashes with 4.1. That is, you won’t ever need to remove and reinsert the battery in order to reset your handsets.
Thuderhawk has a long history on Pocket PC’s. (It also had a MS Smartphone-compliant version, but only for low-res, 176*220 screens, and a QVGA version has never been released for this platform.) Unfortunately, it also seems it’s no longer worked upon as the developer has entirely switched to a MIDlet-based solution to directly compete with Opera Mini. (Which is more than hard as Opera Mini is really-really good.)
Thuderhawk’s biggest advantage has always been it being based on its own fontset (BitStream is also a font designer company), which makes original-layout, full page rendering possible even on 320-wide (QVGA) screens by using special, narrow, but perfectly readable fonts not otherwise available under Windows Mobile. Note that IEM can use similar fonts to look pretty much the same condensed as is explained HERE; the lower right screenshot shows exactly this, while the upper one shows a typical forum page rendered on a 320-wide screen without any need to do any horizontal scrolling.
Unfortunately, being based on a custom fontset means Thunderhawk only supports Western characters; meaning no support for most Eastern European or oriental languages. With Eastern-European, non-cyrillic languages like Polish, Romanian, Hungarian, Czech, Slovakian, Slovenian etc. that use alphabets pretty close to Western languages, this can be somewhat fixed by converting their special, Unicode-only characters to 8859-1 on the server side; with fully Unicode languages, on the other hand, this can’t be done.
Thunderhawk has no support for hi-res ((W)VGA) screens (it displays contents at QVGA effective resolution); doesn’t let for any kind of page / link target saving at all and doesn’t even support copying to the clipboard from Web pages. It doesn‘t use client-side web page / image caching at all (meaning, at times, it may result in far bigger data usage than most of the alternatives); it is only able to download files to built-in storage (not to storage cards or other, alternative media); it has absolutely no support for file upload etc.
Microsoft Deepfish should also be mentioned, which was more of a pilot project slightly more than a year ago to see how server-side content rendering with plain image-based client-server communication works. It wasn’t anything to write home about: because of the client’s being based on the (comparatively) slow Compact Framework and the middle tier server’s being overloaded, it was pretty slow in real use. It’s been discontinued in the meantime. It’s still not known whether it’ll be reused in future Microsoft browsers – for example, in the IE6 port slated for later this year.
Now, let’s take a look at the IEM plug-ins, which greatly extend the functionality (but, alas, not the Web standard compliance / conformance) of IEM.
These plug-ins greatly extend IEM’s capabilities: they add multitab (multiple document) support, resource (page / link target / image) saving, User-Agent GUI-based setting; they let for using hardware buttons for much easier navigation / function access, address bar macros, altering the way the document is scrolled by D-pad etc.; some of them even have GPS-based, location-dependent services.)
* PIEPlus is probably the best and most featureful (resource saving, support for hardware button reassignment etc.). For pre-WM2003SE users (“One Column” was only introduced in WM2003SE), it has a unique feature not offered by other PIE plug-ins: the Pocket View one-column view
* MultiIE is also a decent IEM plug-in; albeit, it’s in no way better than PIEPlus any more (unlike in the past). Basically, it has a similar feature set as PIEPlus.
ftxPBrowser: this PIE plug-in (or, more precisely, a shell), in pre-WM5 times, used to be highly recommended. As it’s mostly incompatible with WM5+, it’s not recommended any more.
Webby, another shell (not a real plug-in), is .NET Compact Framework-based and is, therefore, a bit on the slow side. However, it’s become better and better over time and offers for example extensions like Mozilla for for example ad filtering. It doesn’t let for accessing some of the features of the underlying IEM; for example, it has no One Column mode.
The brand-new Touch Browser, which tries to mimic Safari on iPhone, is pretty similar to Webby in that it’s another CF-based shell. The initial versions were pretty bad; hopefully, future versions will, hopefully, improve on the situation.
Finally, Spb Pocket Plus 4 should be mentioned (see screenshot on the same slide, showing its tabs). While before version 4 it was definitely worse (it didn’t even offer on-screen, easily clickable tabs) than PIEPlus or MultiIE (the two major alternatives), this is no longer the case: version 4.0 has fixed this, along with other goodies like accelerated screen dragging just like on the iPhone.
Now that we’ve seen the major browsers (and plug-ins) for the three operating systems, let’s quickly elaborate on what problems running them under Windows Mobile may result in.
The most important of them, particularly under pre-WM5 operating systems (particularly under WM2003SE), is the driver memory usage, which rendered NetFront and Opera Mobile unable to start under certain circumstances – unless you reset the entire handheld.
Let’s go on with discussing the different client-side techniques helping in reformatting (“reflowing”) a page to (horizontally) fit in a low-resolution screen. If we don’t do this, the low (horizontal) screen resolution (240 by default - 320 when used in Landscape -; some low-end MS Smartphones and pre-v3 Symbian S60 Smartphones had even worse-resolution (176*208 / 220) screens) results in having to scroll horizontally. This is why there are several “One column” client-side implementations. (There’re also middle-tier implementations like Skweezer; more on them later). On Windows Mobile, these special modes are supported by all browsers except Thunderhawk. On Symbian S60’s Nokia Web, in most cases, they are unnecessary as the browser is smart enough to be able to correctly re-flow text – as is the case in Opera Mini in non-one column mode. These two browsers are truly excellent in intelligently reflowing text.
In IEM, there’re (with WM2003SE+ devices) three rendering modes: the truly one-column “One column”, the “Fit to screen” (later renamed to “Default”), in addition to “Desktop view”. The three screenshots on this slide show an example BrightHand forum page in the Desktop / Fit to Screen (Default) / One Column order (from left to right).
Note that One column isn’t necessarily better than Fit to screen. There are cases when the latter delivers better results than the One column mode; for example, when you render simple charts (tables) not wider than 3-4 columns (or 6-8 columns in High-Resolution mode, if your handheld is a high-resolution one). Then, One column will display all the cells vertically, making the original layout completely messed up, while the Fit to screen mode will try to render them horizontally. However, in general, Fit to screen delivers results not needing horizontal scrolling in much fewer cases than Nokia Web or Opera Mini 4+ in non-mobile view mode, particularly on low-resolution (for example, QVGA) screens.
As, as has already been pointed out, pre-WM2003SE PIE’s, where there’s no One Column and the only “Fit to Screen” (Default) mode can’t correctly render the contents of the page without horizontal scrolling, you’ll need to use one of the following alternatives:
External Web compression / reformatting / one-columnizing services (Skweezer, Google Mobile etc.). They, unfortunately, get rid most of JavaScript code, making a lot of JavaScript-based functionality like changing pages in some forum engines inaccessible.
PIEPlus because of the explicit Pocket View mode, which fixes this problem
Use an alternate browser like Opera Mobile (WM2003) or Thunderhawk (compatible with even PPC2k / 2k2), which handle these cases much better
Wait for Touch Browser’s (which does have a built-in One Column mode) becoming much better
With Opera Mobile, the three rendering modes are almost the same as under IEM. It should, however, be pointed out that the One Column mode is buggy: the horizontal size is 240 pixels; that is, it’s only really usable on QVGA devices used in Portrait – preferably not in Landscape and definitely not on a (W)VGA hi-res model.
It, as has already been stated, generally fares much better in rendering blocks of texts without any need for horizontal scrolling. Just compare the first (leftmost) screenshot to the Desktop rendering screenshot of IEM: as can clearly be seen, this particular page was correctly (no need for horizontal scrolling) rendered by Opera Mobile in Desktop mode, unlike with IEM. (Of course, most of the time, you won’t want to use the Desktop mode, unless you need to see images in their original size, without being resized to fit the screen.)
The three screenshots, from left to right, show exactly the same three modes, in the same order, as with IEM: Desktop, Fit to screen and, finally, One Column. As the screenshots have been taken on a VGA device, the latter is buggy and only uses the left half of the screen.
Note that the One Column mode is clearly better implemented in Opera Mobile than in IEM (apart from the 240-pixel bug): it renders charts much better than IEM in One Column mode. See the example screenshots and discussion at the end of section 1.2 Opera Mobile of the MS Smartphone Web Browsing Bible.
NetFront has three similar modes: Normal, Just-Fit (about the same as “Fit to Screen” / “Default” in IEM and Opera Mobile) and, finally, Smart-Fit. The latter mode is without doubt the best: it’s like One Column, but still tries to render contents horizontally where applicable, unlike IEM and like Opera Mobile.
The three example screenshots (from left to right), as with IEM and Opera Mobile, have been taken using Normal, Just-Fit and Smart-Fit.
Minimo only has two modes: the default (desktop) mode and SSR (Small Screen Rendering), which is almost the same as One Column mode in the other browsers. The two screenshots show this (left: default, right: SSR).
Finally, in the Thunderhawk screenshot, you can see how well it manages to display even the most delicate screen contents without the need for horizontal scrolling. Note that it forces the user to use the horizontal orientation, which may be overly problematic on models with screen polarization issues in this orientation (as opposed to Portrait mode). However, users of devices with pre-WM2003SE operating systems (and a device without polarization problems) will surely welcome Thunderhawk’s using Landscape mode – none of the alternate browsers do so, not even the ones that, otherwise, could (as with some e-book readers like Mobipocket), not being based on IEM. (It was in WM2003SE that user-switchable Portrait / Landscape rotation has been added.)
Now that we’ve reviewed the browsers’ approach to rendering pages / textual page content originally designed for at least 800-wide screens on 176…640-wide screens, let’s turn our attention to other questions like (easily) controlling the browsers – for example, scrolling pages using hardware buttons.
There are several ways you can easily scroll a Web page up and down without using the touchscreen. The most common way of doing this is using the D-pad.
1. If you stick to using the D-pad, under IEM, by default, you’ll end up using link scrolling (as opposed to page scrolling). This can be a pain in the back, particularly on pages that have several links on them (you end up having to press Down several times to be able to scroll to new contents); fortunately, it can be altered on the Registry level (with a Registry hack). Most IEM plug-ins (PIEPlus, MultiIE at least) allow for doing this on the GUI level, making Registry hacks unnecessary.
Some browsers / plug-ins even allow for supplying the one-page-at-a-time scroll amount in percents. The screenshot in the slide shows exactly this with NetFront, where you can easily set this.
2. If you (also) utilize other buttons for at least page scrolling down, you can still use the D-pad for link scrolling (assuming you prefer one-handed use and don’t want to touch the screen to follow a link) by assigning the Page Down operation to any hardware button. This has thoroughly been explained in the Button Enhancer Bible.
3. Also, if you have a volume slider on your handset, you can use the jog dial / volume controller with the excellent SmartSKey utility; most of the browsers support this.
4. Under Settings / Buttons, you can also directly assign the “Page Up” and “Page Down” functionality to any hardware button (or, for that matter, even special buttons, jog dials and volume sliders with advanced, third-party button enhancer utilities like AE Button Plus.)
Note that, as far as Symbian is concerned, it Nokia S60 Web makes navigation pretty easy with its minimap accessed by pressing and holding the up/down button. So does the built-in Web browser with the latest, 4.5/4.6 version of BlackBerry. Finally, don’t forget that Opera Mini and Opera Mobile support page scrolling using the numeric buttons on phones that do have these – then, you can still use the D-pad to scroll link by link (or, if you use Mobile View [that is, One Column mode] with Opera Mini, left/right to scroll pages).
While certainly not as widely used as Flash content (any more), Java applet support is still nice to have – some (mostly internal and/or enterprise front-end) pages (still) use Java applets. For Windows Mobile, there are several solutions - Java Virtual Machines (JVM's). BB and Symbian have absolutely no applet support.
IEM depends on JVM plug-ins (as is the case with Flash plug-ins). Only two JVM’s have applet support (JVM’s with no Applet support are IBM J9 (it’s MIDlet / Personal Java only) and Mysaifu (it’s application-only)):
* Insignia Jeode; last version dates back to 2003 (came with the iPAQ 5550 – and previous iPAQ models. Most of these are locked to either the iPAQ brand or the given model). Today, as Insignia / Esmertec has stopped developing it (because they have moved to producing MIDlet managers), it can in no way be acquired legally
* CrEme: this is without doubt the best JVM to run applets. Unfortunately, it’s not meant for non-OEM customers, albeit they do have a downloadable 30-day trial on their homepage
Unfortunately, unlike with the Flash (Lite) plug-ins, Opera Mobile can’t make use of these plug-ins.
As far as the other browsers are concerned, the following two browsers have a built-in JVM:
* NetFront 3.1+: acceptable quality / compatibility (unfortunately, worse than Jeode / CrEme – as is the case with Access’ own Flash support in NetFront)
* Thunderhawk: in order to avoid producing a huge install (even older, non-fully-fledged Java runtime libraries easily add 1-2 Mbytes to the static size of the program [let alone newer JDK’s like 1.5+], which is pretty low – around 700 kbytes – with TH) and still provide full (!) JDK 1.5+ compatibility, the BitStream folks have gone for a strictly client-server solution, the server-side actively interpreting and executing the applet and just sending its GUI as a static image to the client. It, while it indeed offers full JDK1.5+ compatibility, has some cons compared to all the other solutions using local code execution: the images are low-res, slow-to-refresh and can cause excess data usage as the image of their GUI needs to be downloaded to the client every, say, second.
There’s absolutely no applet support in Opera Mini/Mobile or Minimo. In addition, currently, the WebKit-based browsers (Iris etc.) don’t support applets either - as with the Flash plug-in. Hope at least this changes in the future.
There’re some additional Web technologies that have become pretty standardized. You may have noticed Internet Explorer, Firefox or Opera don’t contain any kind of a Flash plug-in on the desktop Windows. The situation is exactly the same on mobile operating systems: few browsers or operating systems come with Flash support built-in (the two most important exception being NetFront on Windows Mobile and Symbian S60’s Nokia S60 Web with Flash Lite 2 / 3).
Flash being by far the most important additional technology requiring a plug-in (with most browsers), let’s take a deeper look at the Flash support on all these mobile operating systems. Let’s start with Windows Mobile.
IEM (all versions starting with PPC2k2) and Opera Mobile (as of version 8.65+) both have a somewhat restricted Flash 7 plug-in (and Flash Lite 2, in addition). It’s quite outdated and, of course, doesn’t support the latest technologies. It isn’t particularly efficient either; for example, its YouTube / other Flash video playback performance is plain sub-par.
NetFront has a built-in Flash engine, which is even inferior to the Flash 7 plug-in: it’s buggy, (even) less compliant and has major CPU usage bugs.
There’s absolutely no Flash support in Minimo, Opera Mini and Thunderhawk.
As far as BlackBerry, Symbian and the iPhone are concerned, they have absolutely no full Flash support. Symbian, however, supports Flash Lite 3 (depending on the model and the firmware used) – unlike Windows Mobile. Flash Lite will be discussed in the next slide(s).
(The screenshot shows the full Flash-based Bomberman, one of my favorite real-world Flash tester games, running in IEM.)
Flash Lite 3, which has recently been released for some past and recent Symbian S60 3rd edition models as firmware upgrades, has excellent support for YouTube and other, Flash-based Web video repositories. It’s, unfortunately, not available for Windows Mobile / BlackBerry / iPhone (as yet). For WM, it’s coming; for the other two mobile operating system, nothing is certain.
The two screenshots show Nokia S60 Web on the v21 firmware-based N95 playing back YouTube videos; the bottom left in Landscape (the video shrinked to the QVGA screen size); the one on the right on the original size in Portrait (hence the vastly oversized video). I haven’t provided similar screenshots on Windows Mobile because the Flash 7 plug-in on WM is very slow & inefficient and it’s almost impossible to use it to play back any Flash videos. Fortunately, a lot of alternative methods for playing back YouTube exist for all these operating systems; this is the subject of the several following slides.
As many users spend a lot of time watching YouTube (and other) Web videos, it’s definitely worth elaborating on the alternative technologies of playing them back.
First, let’s elaborate a bit on the two major formats YouTube content is delivered: the high-quality H.264 & FLV (with accordingly high data usage) returned by the firewall-friendly HTTP protocol, and the low-quality, low-(QQCIF) resolution 3GP (returned via the firewall-unfriendly RTSP protocol). We, of course, will mostly be interested in the high-quality version – unless we really need to decrease data usage and/or use a low-resolution mobile device like a MS Smartphone with a 176*220 screen.
The desktop YouTube Web interface isn’t the best for mobile usage (slow, huge – over 300 kbytes – pages; only Symbian + Flash Lite 3 is able to play back inline videos). There is a mobile version created and supported by YouTube, which
* Already supports all the functionalities of the desktop (account, upload etc)
* Is compatible with most mobile platforms having an RTSP / 3GP player like RealOne – no additional player needs to be installed
* Already has all the videos, unlike a year ago when it became public
However, it’s lower-quality 3GP only (no FLV / H.264) and requires RTSP. That is, it can be vastly inferior in most cases and, therefore, should be avoided.
The screenshot shows the results of a search using the native mobile YouTube interface (which, again, should be avoided, unless you absolutely don’t need the vastly enhanced video and audio quality of the FLV / H.264 videos).
Let’s continue with alternate YouTube technologies – ones that don’t depend on the Flash plug-in (because of the slow and flaky Flash plug-in on Windows Mobile) or are usable on other platforms like the BlackBerry. Fortunately, there are several of them; one of the most important is vTap.
vTap has native clients for all mobile platforms. From the Windows Mobile one (see the upper right screenshot), you can even initiate video playback (this client is highly recommended and useful because it’s capable of searching on not only YouTube but also other video sites), while you can’t do the same from the BlackBerry one.
This also means you’ll need to turn to other solutions to stream YouTube videos to your BlackBerry handheld; an example of these solutions is vTap’s Web interface (not the standalone client) depicted in the three screenshots at the bottom, showing searching for clips, opening them as a stream and, finally, the media player rendering it. (Note that the rendered contents is invisible in the screenshot on the bottom right. This isn’t a bug.)
Finally, one of the several alternative YouTube playback solutions is YTPocket, which depends on the external TCPMP FLV playback support (under Windows Mobile). The two screenshots show the results of a search and, then, initiating a download (and the consequent invocation of TCPMP for viewing).
Let’s move on to another, completely different, but, for users of non-unlimited data plans, very important question: reducing data usage. This, incidentally, can prove very helpful for users over unlimited, but very slow (for example, GPRS, like Vodafone’s non-3G dial-up) connections.
There are several ways of optimizations and major data usage saving; this slide discusses the way you can drastically lower the data usage by employing server-side (gzip) encoding, which is supported by all mobile browsers (for example, on WM, starting with the PPC2k PIE; that is, it has had support for eigth years).
As a rule of thumb, if you can, you should check the Accept-Encoding header (telling you whether the client is able to process gzip-compressed responses) along with the User-Agent HTTP header to find out whether it’s a mobile client (should you only want to return GZIP’ed contents for mobile users if you find GZIP compression is using too much CPU on your Web server). If you go this way, keep in mind that several mobile users “spoof” their User-Agent headers so that servers never return mobile-specific contents to them. With some of these clients (most importantly, IEM), you’ll want to look for specific extended (X-) HTTP headers to be able to make a distinction between desktop and mobile clients - that is, correctly identify mobile ones.
Note that several content manager and forum engines (e.g., vBulletin) support GZIP’ing “out of the box” if it identifies the client as a mobile device.
Unfortunately, if you are just a user and can’t ask a webmaster to return compressed (GZIP’ed) contents upon receiving requests from mobile clients but still want to (vastly) decrease your data usage, you’ll need to do some client-side work. There are two main categories of doing this.
The first group, largely consisting of the free Toonel and the commercial (between 30…50 US$ - cheaper for recurring customers) OnSpeed, runs a “proxy” on your Java-capable and/or Windows Mobile-based mobile device and configures (or, forces you to manually configure) your browser to access the Web through it. The proxy takes care of compression by being connected to another, invisible server. The advantage of this solution, compared to the next, is mainly that you 1. don’t need to pay attention to visiting a mediator Web page to do the conversion for you and 2. you will always receive full Web pages, not dumbed-down ones without, for example, scripting.
The second group consists of Web services like Skweezer, MobileLeap, Google Mobile etc. They are easier to initially set up than the apps in the first group (absolutely no need to install third-party apps on your mobile); however, they’re a bit harder to use and, as has already been pointed out, they can royally mess up Web pages. Most IEM plug-ins like MultiIE, PIEPlus and Webby automatically support the online services; the first two (Toonel / OnSpeed) can be used with all Windows Mobile Web browsers allowing for proxy usage (that is, everything except Opera Mini and TH – not a problem though as they’re content-stripped / compressed already).
Let’s turn to an entirely different subject: compliance with different (important) Web standards. Let’s start with AJAX, which is getting more and more ubiquitous. Opera Mobile and Minimo have the best support for it; the two screenshots show these (OM on the left, Minimo on the right) rendering the entirely AJAX-based Google Image.
Unfortunately, IEM is (still) pretty weak when it comes to AJAX support, even as of WM 6.1. So is NetFront as of the currently commercially available 3.3; fortunately, 3.4+ is already much better. (But, again, currently, there’re only restricted Technical Previews of 3.5 you may not want to use because of the restrictions). Thunderhawk and Opera Mini both have rather poor support.
JavaScript support is pretty similar to this. The bad JS support of IEM results in, for example, Yahoo Mail buttons’ not working – a major problem with many users. The same stands for for example address autocompletion in Google Mail; currently, only Opera Mobile and Minimo support it (they have the best JavaScript compliance).
Still on the subject of Web standards compliance, let’s take a look at the compatibility with CSS. In this area, Opera Mobile is without doubt the best as of version 9.xx. Version 8.65 (the one officially and commercially available; screenshot on the left) is a bit worse in this respect. Minimo is the second (screenshot on the right). The slide also shows how the desktop (9.x-series) Opera renders the test page (the only desktop browser to render it without any glitches – see the referenced article for more screenshots of other desktop browsers if interested).
Let’s go on with evaluating the CSS2 (Acid 2) test results. This slide shows how NetFront 3.3 and IEM render the test. As can clearly be seen, they (particularly IEM) have nothing to write home about.
Still on the subject of Web standards compliance, let’s see the results of W3C’s brand new “Web Compatibility Test for Mobile Browsers” suite. First, let’s see how the Windows Mobile-based Web browsers render this suite.
This slide shows IEM in WM6.1 (left), the 5-year-old WM2003 (middle) and 7-year-old PPC2002 (right). As can clearly be seen, the Web standards compliance of IEM is only a tad better than that of its very old PPC2002 ancestor.
Let’s continue with the same W3C test suite, looking at the Opera Mobile and Mini results. The left screenshot shows Opera Mobile 9.33, which delivers almost flawless results (showing it’s indeed based on the new, 9.x-series kernel), as opposed to version 8.65 (2nd shot). Opera Mini 4.1 (on the right) delivers acceptable results – still much better than, say, IEM (see previous slide).
Let’s take a look at the third (and last) Windows Mobile W3C test slide showing the current Techincal Preview of NetFront 3.5 (left); the WebKit-based Iris browser (middle) and Minimo 0.20 (right). As can clearly be seen, none of them really excel – Opera Mobile 9.x is just far better than any of them.
Now, having finished with Windows Mobile, take a look at other mobile platforms. In the lower row, you can see the WebKit-based Symbian Nokia S60 Web (left), iPhone’s Safari (middle). The built-in browser coming with BlackBerry 4.2 (right) follows; the latest (still beta), 4.5 BlackBerry version (topmost) shows the new BB operating system indeed delivers a bit better results than the previous one – but still much-much inferior to even Opera Mini (which, incidentally, runs flawlessly on the BlackBerry).
Finally, in order to give you a complete picture of what you can expect of desktop browsers, an overview of their rendering the same test. (On the bottom: Firefox 3 beta5 (left); Internet Explorer 8 beta (middle); IE7 (right); on the top: Opera 9.5.). As can clearly be seen, Opera is by far the best and even the latest version of IE8 is far-far inferior than even the latest 3-series Firefox.
Now, let’s discuss the techniques needed to avoid certain HTML / page layout constructs that simply can’t be rendered by (some) mobile Web browsers. The most important stumbling block is that of frames: both IFrames and standard ones. First, let’s take a look at the latter.
With IEM (as opposed to most other major browsers) the number of (standard, not i-) frames is restricted (10/12 at most for pre-WM6/WM6+, respectively). One of the most widely known example of the affected pages is freemail.hu. The pictures show IEM (on the left) was simply unable to display the page in its entirety, unlike Opera Mobile (right), which has no frame limitations. Make sure you avoid an excess number of frames if you want to make your portal accessible to even IEM clients and you don’t have a specific mobile version!
Now, let’s take a look at Inline Frames (IFrame). They are in no way supported by pre-WM6 IEM and Thunderhawk. The former is shown in the screenshot on the left, showing the pre-WM6 IEM’s inability to render the contents of the test page. NetFront and Opera Mobile, on the other hand, have no problems rendering this area (neither has Opera Mini).
The lack of IFrame support also means no Gmail / Yahoo Mail dynamic address completion (which works in Opera Mobile and Minimo) is possible because they’re entirely based on IFrames.
This slide shows IEM coming with WM6 has indeed added support for Iframes and has raised the number of standard displayable frames to 12.
This slide explains some common cookie handling-related problems with NetFront and Thunderhawk. The text speaks for itself; no need to explain it further (rather than following the links to my original, lengthy articles and elaboration).
The next few pages elaborate on the language & encoding problems and internationalization (on Windows Mobile), which will be pretty important for you if you display / host / try to access pages not (only) using non-Western languages – or, for that matter, even special punctuation like “.
First, NetFront handles the HTTP character encoding header (Content-Type) vs. meta tag entirely differently from the other browsers. It is, unfortunately, buggy when 8859-1 is used along with special 8859-1 punctuation – for example, if you write your posts in Word and don’t disable its automatic character substitution enabled (and active) by default.
Opera Mobile is pretty problematic at POSTing (NOT displaying /rendering!! Only when user interaction / form-based posting takes place) some contents; for example, special 8859-1 punctuation and everything different from 8859-1.
To easily fix these problems, if you’re a webmaster and know your pages do contain some special punctuation coming from, say, Word and want it to be rendered by NetFront or editable and (re)POSTable by Opera Mobile correctly, do convert dynamically (in the runtime) all these characters to their 8859-1, “plain” equivalents.
If an Opera Mobile client edits a non-8859-1 document (like an article or a forum post), convert all special Unicode characters (like ő and ű) to HTML char entity codes (ő and ű with ő and ű, respectively). These entity codes are correctly POSTed back by the browser.
As has already been mentioned, Thunderhawk uses its own, Western-only character set. It contains absolutely no other characters. Even when the operating system does support the given character set (and is able to render all the characters well), Thunderhawk won’t and just display a hyphen as a placeholder upon encountering them (the text in the screenshot shows some of these). Therefore, in order to correctly display non-Western, but easily 8859-1-mappable languages (typically, Eastern-European languages not using Cyrillic characters belong to this category), as a webmaster, you may want to check for ThunderHawk User-Agents and substitute the characters accordingly when encountering a TH client.
Some Web pages (and Web frameworks / content handlers) allow for easy internationalization – that is, dynamically returning a different-language page upon encountering a special HTTP request header. This slide elaborates on this and lists the two browsers (PIE and Minimo) that do let for setting this particular header. Unfortunately, the other browsers need an external HTTP request header rewriter proxy running anywhere (including your own PDA) to gain access to this functionality.
The two screenshots show IEM rendering b2evo’s login screen in English and Finnish (with automatical swithcing between them; no need for user interactions / language selection via links on the page), depending on the preferred language flag sent by the client.
Unfortunately, several mobile browsers don’t really shine at Web standards compliance either when it comes to downloading and saving binary files to the local file system on these handhelds.
The problems most users face:
* Content-Type: text/plain response problems with binary content: IEM & NF don’t try to decide whether the body is binary and blindly render it – as opposed to IE on desktop Windows. No such problems exist with other Windows Mobile browsers. That is, make sure Content-Type is correctly set on the server to allow for binary downloading to IEM & NF! Alternatively, if you are just a user and have no effect on the webmaster’s correctly setting this header, either use an IEM plug-in allowing for saving link targets, use a standalone HTTP downloader tool like Adisasta WinMobile Download Accelerator 2+ or HandyGet - or switch entirely to a different browser.
* NF and Opera Mobile send out download requests twice, while other browsers – including desktop ones – only do this once. This is why for example downloading from RapidShare doesn’t work in these browsers. If you’re a webmaster, the solution is simple: never reject double download requests. If you’re a mobile client only, switch to IEM – at least for the time of download.
* Referer-related problems: before WM5, PIE (and Thunderhawk even now) don’t pass the Referer header. Therefore, if you’re a webamin, don’t blindly trust the Referer header always being sent in order to deny out-site download requests. Just make a User-Agent test to check whether download requests not containing a Referer header originate from PIE and TH. If they do, you can safely let them download.
Note that you can greatly speed up your Web (and FTP) downloads by using multithreaded downloader clients (like FlashGet on desktop). Currently, two of them are worth mentioning:
* The just-released Adisasta WinMobile Download Accelerator 2.0 (do NOT use older versions because they’re slow!)
* HandyGet 1.6
The final slide discusses the opposite of the previous one: uploading files to Web. File upload is supported by all browsers (except for TH); IEM starting with WM5. As Opera Mini 4.1+ also supports it, you can even upload from the otherwise not very capable BlackBerry platform.
If you have a browser that isn’t upload-capable, then, switch to another browser that can. And, if you’re a webmaster hosting a page with file upload capabilities (like all forum engines, social network pages etc. allowing for attachment / image upload), you will need to ask your mobile clients to do the same. Alternatively, if you’re absolutely sure some of your clients won’t want to touch other browsers, you may also want to provide FTP upload support or, if you only look for text input, a HTML textarea to paste their text to.
The left screenshot shows PIE under WM2003SE. As can clearly be seen, there’s no “Browse” button (and file path field) in it – while the WM5+ screenshot (on the right) already displays (and lets for using) it, showing it (still) didn't have upload support.
That's all, folks - hope you liked this all And, yes, feel free to ask questions even here, even now.
I’ve just published my last roundup, sporting the latest Web browsers available:
Iris 1.0.16 (1.1.0 b3)
Opera Mobile 9.5b2 / b15233 (!)
Opera Mini 4.2.13337
SkyFire 0.85.0.8184
PIE, along with Spb Pocket Plus 4.0.2
Internet Explorer Mobile 6 (IEM6) (!)
NetFront 3.5.009 b729
… and compared all these to the Safari running on the iPhone with firmware v2.2.
The new roundup is available at http://forum.xda-developers.com/showthread.php?p=3130648