Opera 9.0 SDK for Windows CE
Saturday, 30. December 2006, 05:12:16
Opera has officially announced availability of Opera web browser on Windows CE 5.0 in October 2006. We, as a branch of "Opera for Devices" department, have been working on Opera 9.0 SDK for Windows CE, targeting hardware or software vendors would like to integrate Opera 9.0 to their platform or application. As I mentioned before, what this SDK does is, basically, bringing desktop experience we know to hand-held devices.
Scott Hedrick, Executive VP of Opera for Devices department, has given some abstract information before and my intention is to give technical insight for curious engineers.
At "Opera 9 browser targets Windows CE gadgets" titled page of windowsfordevices.com, article emphasises Opera widgets, AJAX, advanced rendering options and similar cool features of Opera web browser.
Source level compatibility
I love this part! It's nothing but wonderful news for both developers and customers. One of the really cool things we have done is maintaining almost-complete source level compatibility between Opera 9.0 SDK for Linux and Opera 9.0 SDK for Windows CE. In other words, if you already have got Opera 9.0 SDK for your Linux platform, and you would like to run your application on your new, cool Windows CE device, you can grab your existing source code, make couple of "must" (or, "have to") changes and that's it. We have preserved same function names, prototypes, features (almost all), events and the way samples behave between Linux and Windows CE SKDs. This will cut off all the porting effort a company has to spend to port their existing souce base to another platform, developers don't have to read a new documentation or spend nights with liters of coffee to port their product for Linux to Windows CE.
GOGI API
GOGI (Generic Opera Graphics Interface - mentioned at the block diagram in the article, also at http://linuxdevices.com/news/NS2909868515.html) is our API set, specially used on devices. Whatever platform you use (also shown on the diagram) - Windows CE, Linux, VxWorks, your company's proprietary OS), GOGI deals with it. This is how we have preserved source-level compatibility across two platforms. All you need to do is to tell GOGI how to and where to draw web page, some files' paths, etc. Operating system support and number of frameworks change across platforms (and devices). One of the challanges to get Opera running on a different platform is to dealing with screen buffer; where and how should Opera draw web pages? For example, on Windows CE you can use GDI (or DirectX, if you are lucky, on some platforms and devices) to obtain a screen buffer. "I don't care what's your platform, graphics library or anything; just provide the information I need and I will let you know of every step I take", says GOGI.
AJAX, SVG and similar hi-tech stuff
AJAX and SVG are core features of Opera 9.0 product line and are built into Windows CE SDK. If you, for example, go to Google Suggest and start typing your search keywords, it auto-suggests and auto-completes while you are typing. It's done with AJAX and this page, widgets using AJAX are supported on Windows CE SDK.
Native JavaScript extensions
These are special plug-ins that enable customers to write some JavaScript code in web pages that uses their own custom objects. For example, a set-top-box manufacturer writes a native JavaScript extension implementing some TVChannelController object, which is talking with set-top-box's tuner API, instantiate and use the object in a JavaScript code in a web page and then change TV channels through some buttons on that page.
Widgets, anyone?
Widgets are small client-side web applications, usually intended to perform small and light tasks. Widgets on desktop version can't make a complete plug-in (mostly) due to security issues today, as far as I know. I don't know plans of desktop team, may be they have different concerns and plans. We have similar options on devices; you can get almost all of those widgets running on your device, develop and enhance your own widgets with native JavaScript extensions! Imagine above TVChannelController example has a widget UI, or a phone pad...
Rendering modes
Opera is the only web browser that does zooming correctly on mobile devices. We support various rendering modes for different screen types and sizes. But our primary purpose is to bringing the proper, desktop rendering to devices. Most of the web is not ready for mobile devices yet. Not "off the record", but in fact, most of the web has no idea about web page designs, anyway. They don't care/know about standards and just write "street HTML" to get something displayed on Internet Explorer. That's the only purpose; if a page works on IE, then the job's done. As a friend said before; "practically, everybody uses IE, we don't have to care for others". Therefore, I don't expect street HTML designers to make mobile friendly web pages. If you have a VGA screen, Opera recommends desktop rendering. If you have a smaller screen, you can choose a smaller rendering mode. Our rendering engine is re-building/rendering/layouting page in different ways according to your choice. Rendering modes are important, because each device has different screen size or mode. One device can have, for example, a portrait and a landscape mode, much like Windows Mobile 5.0 based Pocket PCs. If you choose portrait mode, screen will be narrower; content has to be reinterpreted to fit to screen but still be readable. The other way around, if you switch to landscape mode, screen will be wider and there will be more space to fit more text or figures, may be it'd be better to use desktop mode in this case. There are many samples of comparison between Pocket IE and Opera 8.5 for Windows Mobile, as far as I remember, showing how different rendering modes perform compared to each other and IE's modes. Opera doesn't just break words apart or shrinks images, but it tries to reinterpret the page in such a way that still shows, for example, tables bigger than the screen size look readable. Check out Nintendo DS; it's one of the distinct rendering technologies ever made by man.
Aside:Let me give you one name here; Türkiye İş Bankası, unfortunately, my account is at this bank. Their web page doesn't work with Opera. They have sent me an email saying they support only IE and Firefox. In other words, they said; "we don't care about standards, we do pages for browsers not for standards.". IE 7.0 didn't work for them at the beginning, then they've fixed their page. Well, needless to say their site doesn't work on my PDA. I was at Ankara, capital of Turkey, in last winter and I needed money in 20minutes. Their web site didn't work (neither on Opera 8.6 nor on Pocket IE) and I had to call the customer hotline from my cell phone to do my operations with assistance of a human, waiting 10 minutes on the queue to talk to a customer representative. I am planning to cut all my relations with this bank at mid April 2007.
NS4Plugin Support
We do support NS4 plugin API. With one condition; all plugins must be windowless. The plugin can interact with Opera, or vice versa, the way everybody knows from NS4 plugin API.
Supported CPUs
We currently support: x86, ARM, SH4 and MIPS.
Opera 9.0 SDK for Windows CE is fully documented and supported with samples. My purpose was to give you some flavor of available options and their technical background. Contact with customer support for further information.








