A Smart Client is a portable device such as a PDA, some mobile phones, Tablet PC, or even a laptop PC as long as the device contains enough local processing power to provide a robust user interface and experience similar to what a user would find on their desktop PC. The term "smart client" predates Microsoft's recent marketing blitz, going back to the age of "dumb terminals" on client/server systems where PCs being introduced on the network were the "smart clients" because they could do processing locally rather than just displaying what was transmitted and relaying back user input as dumb terminals do. And while Microsoft seems to have the corner on "Smart Clients" as a marketing catch phrase, Smart Client development principals can be applied using any development platform.
Beyond local processing power, there are several other factors that categorize whether or not a device can be classified as a smart client. First, a smart client needs to be network connected, and able to connect with other devices on the network, in some way. Mobile phones meet this criteria by default as long as the carrier provides internet connectivity which most do now. And most newer laptops and PDAs come with either the ability to add network connectivity via a PC Card or already built in wireless access. The Microsoft Tablet PC platforms requires network access.
Smart clients also need to continue to work when the network is not available. Through caching of important data and using a transaction model for database updates, when a user goes of the network, the device should continue to function seamlessly. So when a sales rep is using a PDA to check inventory and place an order for a customer, the customer order shouldn't be lost if the device loses its wireless signal.
Another hallmark of a smart client is that an application should be easily tailored to the specific device. It's not very smart to try to display the same web page or data input form on a 3" PDA screen or 1" mobile phone screen that you do on a 17" desktop monitor. Each of these devices has its own unique benefits but also constraints and smart client developers need to be able to target them easily. Along those same lines, smart client applications should be able to be updated easily.
For Microsoft developers, Smart Client development depends on Visual Studio.NET 2003, the .NET Compact Framework, and Windows Forms. Windows Forms is a .NET namespace that provides access to the user interface aspects of Windows for developers to use in their own applications. Microsoft also recommends using Windows Server and Microsoft Systems Management Server to manage and deploy smart client applications. It's important to note that Microsoft makes a distinction between "smart client" applications and browser based applications, stating that browser based applications are not smart clients because they do not make proper use of local computing resources to qualify, relegating most processing to the server instead. Browser based applications are also hard to take offline.
In the Java development model, smart client development depends on using Java 2 Enterprise Edition (J2EE) for the wireless server and Java 2 Mobile Edition (J2ME) on the smart client itself. In the Java world, you're less likely to see the buzz words "smart client" thrown around as frequently as Microsoft does, but rest assured, if you are developing Java applications that meet the smart client criteria outlined earlier, you are developing Java smart client applications.
For more smart client information see:
Jim Minatel is a freelance writer for Developer.com in addition to working with Wiley and WROX publishing.