Smart client isn't a technology, and it isn't any specific architecture. It is a concept and a style of application that combines the best of both Windows applications and Web applications. They combine the best features of Windows desktop applications, such as rich user experiences and the ability to use local resources, with the best features of Web applications, namely the ability to be centrally deployed and managed.
Smart client means different things to different people. However, these four characteristics define a Smart Client application:
- Offline Capable: Smart clients provide users the ability to access critical business functions regardless of the availability or quality of a user’s network connection.
- Rich User Experience: Smart clients provide an interactive and highly responsive user interface. By moving some of the processing to the client, smart clients minimize the need to contact the server. Such applications are also called rich Internet applications (RIA)
- Intelligent Install and Update: Smart client applications manage their deployment and update in a much more intelligent way than traditional rich client applications. Applications can be updated while running and can be deployed on demand by clicking on a URL.
- Access Local Resources: A smart client may take advantage of the local CPU, memory, disk, or any local devices connected to the client, such as a scanner, telephone, or bar-code/RFID reader. But it may also take advantage of local software, such as Microsoft Office applications, or any installed line-of-business (LOB) applications that interact with it.
These are typically open source libraries that can be incorporated into a Web application development environment with minimal effort. They provide innovative widgets, animation abilities, and developer functionality to simplify development of Rich Internet Applications. Some frameworks are more elaborate than others, and some of them even provide an IDE for development and test, which is typically not free. These libraries are browser independent.
Examples include JQuery, SmartClient, Prototype, script.aculo.us, MooTools, dojo, ASP.NET AJAX, and many more.
Plug-ins are components that run within a browser and provide a sandboxed environment for the client application to function in. Plug-ins come with development frameworks to create Rich Internet Applications. These are typically commercial products and not Free Open Source Software (FOSS). They come with an extensive array of easy to use widgets integrated in the IDE, but sometimes they are very specialized for a specific purpose, like animation. They may also provide plug-ins for multiple operating systems, browsers, and devices. Because these are sandboxed environments, they do not provide direct access to local devices and resources.
Use of these technologies as the main UI development framework entails total redevelopment of the entire UI layer and retraining of developers in a new development paradigm. It also couples us very tightly to a vendor-specific technology.
- Microsoft Silverlight: Microsoft Silverlight enables features, such as animation, vector graphics, and audio-video playback, that characterize rich Internet applications. It is compatible with multiple Web browser products used on Microsoft Windows and Mac OS X operating systems. A third-party free software implementation named Moonlight is under development to bring compatible functionality to GNU/Linux.
- Adobe Flex: This is a collection of technologies released by Adobe Systems for the development and deployment of cross platform rich Internet applications based on the proprietary Adobe Flash platform. Traditional application programmers found it challenging to adapt to the animation metaphors, upon which the Flash Platform was originally designed. Flex seeks to minimize this problem by providing a workflow and programming model that is familiar to these developers. MXML, an XML-based markup language, offers a way to build and lay out graphic user interfaces. Interactivity is achieved through the use of ActionScript, the core language of Flash Player.
- Sun JavaFX: JavaFX is a family of software products for creating rich Internet applications. The JavaFX products can build applications for desktop, mobile, TV, and other platforms. The primary component of JavaFX is JavaFX Script, a declarative language intended to make UI development easier to for programmers.
Mixed Mode Development Model
Other Vendor Technologies
These technologies are significantly different from each other and cannot be categorized with others.
- Windows Presentation Foundation (WPF)
Microsoft’s WPF provides an entirely new programming model for building applications with a clear separation between the presentation layer and business logic. It provides the necessary tools and structure for UI designers and developers to collaborate effectively. WPF applications can be deployed on the desktop or hosted in a Web server. WPF provides an integrated multimedia development framework, resolution independence, smoother graphics through use of vector graphics, and usage of newer hardware features, like Graphical Processing Unit (GPU). For all these reasons, this can be considered a leapfrogging technology.
- Adobe AIR (Adobe Integrated Runtime)
Adobe AIR is a cross-platform runtime environment for building rich Internet applications using Adobe Flash, Adobe Flex, HTML, or AJAX, that can be deployed as a desktop application. Adobe positions it as a browser-less runtime for rich Internet applications that can be deployed onto the desktop, rather than a fully-fledged application framework. Adobe AIR applications have to be packaged and installed on the client machines, and this can be done manually or via standard browser functionality.
- GWT (Google Web Toolkit)
Google Web Toolkit is an open source software development framework to create applications in Java. These applications can be compiled into either Java byte code or AJAX applications. They can be run as desktop applications in the Java Virtual Machine or as Web applications.
Choice of technology is dependent on a variety of factors:
- New development vs. upgrading existing project.
- Available technical expertise
- Application usage paradigm
- In-house application vs. ISV model
and many more....