Tuesday, November 27, 2007

Smart or Rich Clients

Continuing from the earlier post, we shall discuss the features of Smart or Rich Client. The major problem the smart client solves is the "always on" requirement of the thin clients. Practically it is not possible to assure of connectivity available and to enrich the user experience, its obvious to develop a smart client application with disconnected approach and syncs when connectivity is available. Smart Clients also leverage the use of native PDA/Phone functionality to access low-level device details and also ensuring faster performance compared to thin clients.

Now lets talk about the smart client development environments depending on OS/Platform which runs on the device,
1. Pocket PC or Windows Mobile Smart Phone
Embedded Visual C++ for performance critical applications. .NET Compact Framework for
rapid prototyping and development. Device specific SDKs are available from Microsoft such as Windows Mobile 5.0 SDK provides access to use native device features.
2. Series60 smartphones
Nokia Series60 SDK with Symbian/C++ . These typically are non-stylus based phones. E.g Nokia N and E series
3. UIQ smartPhones
UIQ SDK with Symbian/C++. These typically are stylus based phones. E.g Motorola Z8, Sony Ericsson M600i
4. BREW enabled phones
BREW SDK from Qualcomm used to develop on BREW enabled. E.g. Kyocera
5. JAVA enabled phones
Almost all the phones have light weight JVM (KVM) on top of the OS. These binary run-time helps to develop portable J2ME applications on most of the phones supporting it. Sun Wireless Toolkit along with eclipse or NetBeans IDE provide a good environment for developers.

Following are the characteristics of a typical device which all developers should be aware of,
1. Form factor
Processing power. CPU, Floating point
2. Screen Size
No of lines which can displayed/Resolution
3. Memory
ROM and RAM with extended storage
4. Connectivity Options
Bluetooth, USB, WiFi

For user experience there are several considerations which I shall discuss in my next post.