5 Jul
Since Groupon introduced the concept of online daily deals to the masses two years ago, scores of like-minded sites in Chicago alone have entered what is now a multi-billion dollar industry.
So if you are thinking about joining the fray, understand that having killer mobile applications for the iPhone and Android devices is just as important as launching a website. Daily deal services in particular rely on impulse buys and the ability to capture potential customers in the exact time and location of their choosing. A happy hour, for example, is better promoted through a smartphone push notification when a prospect is passing a bar than it is via an email when they are sitting behind a desk in their office.
These Chicago-based companies excel at offering local deals to smartphones owners.
Groupon
It’s absurd to write a list like this without profiling the elephant in the arena. The company’s hope of raising billions in an IPO could hinge on the success of its Groupon Now service, available as iPhone and Android applications. Groupon Now is all about location-based instant gratification, and consumers in Chicago and select markets across the country are taking advantage of multiple deals near them that are offered (and expire) at different times of the day.
Poggled
Of course, no new company can expect to capture Groupon’s lightning-in-a-bottle success. Being funded by the people behind Groupon, however, is still pretty good place to start. Poggled was able to raise $5.6 million from Groupon co-founders Eric Lefkofsky and Brad Keywell because of its laser focus on one particular area – drink specials!
While the website is nice, for most users it’s more practical to see a beer tasting deal when walking by Fizz Bar and Grill on Lincoln Avenue or a discount on Bottle service at The MID when in the West Loop. Poggled also has apps for the iPhone and Android phones.
DealRadar
With new daily deal providers emerging seemingly everyday, smartphone owners need to determine the services that are best for them or risk messing up their screens with icons only used once or twice. DealRadar is a handy app and website that broadcasts deals from several providers that are happening near you. Currently, it’s only available as an iPhone app.
Dealavue
The developers behind Dealavue say they focus more on their mobile apps (currently only available on iPhone with an Android app coming), than their website. This allows them to have creative promotions like sending push notifications for cheaper cell phone options just as a customer walks into a rival store.While this by no means is a complete list of local daily deal services with mobile apps (not to mention providers from outside of Chicago that offer local deals), it illustrates the variety of approaches entrepreneurs and young companies are making in this white hot industry.
Do you have a novel idea for a daily deal app? If so, what are you waiting for?
This article was first published by our friends at NBC Chicago and the Inc Well Blog how-to blog for Chicago business.
14 Dec
In the last few years, smartphones have rapidly progressed into a must-have for business workers who rely on the extensive communications devices to conduct their daily business activity. Smartphones allow users to be more efficient because they can continue working while away from their desks. In a recent survey by RingCentral, 80 percent said that they conduct most of their business with their smartphone. Users are so reliant that 83 percent even said they would give up their morning coffee before giving up their smartphone.
Clearly, smartphones are essential to business users as they are hastily becoming a necessity in the working world. This infiltration of smart devices gives companies the opportunity to manage these phones to increase communication and collaboration within the company. Smartphones can change the business environment altogether and could help make companies more productive. But, (and there is always a “but”), there are many difficulties and challenges involved in managing employee smartphones.
Security is always an issue. If users have important data on their phone and it gets hacked or lost, there can be major consequences. Also, managing smart devices for a business setting is not as easy as it seems. Workers use different devices and different networks, which can make it hard for administrators to integrate the phones into one system. Also, maintenance is an issue that IT administrators have to take into account when deciding to manage smartphones for businesses.
Let’s break down the pros and cons of different smartphones for businesses.
Blackberry:

Windows Mobile:


iPhone:


Android:


Overall, smartphones for businesses are a great way for companies to control and manage their employees. There are many different ways to go- businesses just have to weigh the pros and cons to decide what fits their needs best.
12 Dec
Cursos LINUX LPI – GREEN www.green.com.br
Modo texto/terminal, Debian, RedHat Sistemas, Redes, Samba, Firewall
Still using Accpac Plus? www.adagio-accounting.com
Modo texto/terminal, Debian, RedHat No data conversion. Free webinar.
Printer Software PrinterSoftware.AfricaPrint.com
Modo texto/terminal, Debian, RedHat For South African Printing Industry
ECM output www.riptideserver.com/
Modo texto/terminal, Debian, RedHat popular ECM platforms

Mobile printing is something that still needs to be worked on. We’ve got a small computer in our pockets, but the files are practically locked in. With mobile office suites on the rise, printing is something that can be no longer ignored.
We’ve covered a number of mobile printing solutions in the past, but they were often less than ideal.
Today, with the use of some simple, free tools we often use and love, we’ll show you to create an automated mobile printing queue. Best of all? It costs nothing, except for your your carrier’s internet costs.
1. Install Dropbox on your Computer
You’ve probably heard all about Dropbox by now. If you haven’t, it’s about time. Dropbox can be best described as a folder in the cloud. This means you can access this same folder on your desktop computer, your laptop and your cellphone. It’s a great way to share documents and photos across computers.
If you want to learn more about Dropbox, MakeUseOf recently published The First Unofficial Guide to Dropbox, by Matt Smith

Dropbox plays a central part in this mobile printing tutorial. Make sure to install it on a computer that’s connected to your printer.
If you’re using Mac OS X, create a folder called Print in your Dropbox folder, with two sub-folders PrintQueue and Log. Folders like these will be created automatically using the Windows routine.
2a. Set Up a Printing Queue on Windows
This is not nearly as difficult as it sounds. You can download this zip file containing a VBA script from Digital Inspiration. Double-clicking this file will put the aforementioned PrintQueue and Log files directly in your Dropbox folder and set up a printing queue. You can skip ahead to step three.
2b. Set Up a Printing Queue on Mac OS X
If you’re using Mac OS X, it takes a bit more effort on your side. We have Bbedell to thank for this workaround, which was originally posted in the comment section at Lifehacker.
Fire up the Automator application and choose to create a Folder Action. Type “printer” in the search field and drag “Print Finder Items” to the main window pane. Type “Trash” in the search field and drag the “Move Finder Items to Trash” to the main window pane.
Alternatively, if you want to keep the files after they’re printed, use the “Move Finder Items” workflow, to Dropbox -> Print -> Logs.

Finally, make sure to set Folder Action receives files and folders added to the PrintQueue folder you created earlier on. Save the workflow and give it a name. That’s all!
3. Move Mobile Files to Dropbox
To print a file, all you need to do is move a file on your phone to the PrintQueue folder. If your computer is turned on and connected to a printer, it’ll finish the job. On newer smartphone models, you can use the native Dropbox application, available for iPhone, iPad, Android, BlackBerry, Nokia and Palm.

Even on older phones, you can print a file via email by using a mail-to-Dropbox service like Habilis. And if your phone doesn’t have email functionality, you probably don’t have anything that needs printing.
What do you think of mobile printing? How do you do it? Let us know in the comments
8 Dec
Mobile application development is the process by which applications are developed for small low-power handheld devices such as personal digital assistants, enterprise digital assistants or mobile phones. These applications are either pre-installed on phones during manufacture, or downloaded by customers from app stores and other mobile software distribution platforms.
Mobile software development
Mobile software development is the process of transforming existing software used by computers into software which can be used in any mobile device. It also refers to the creation of new software such as mobile web and mobile applications for mobile devices. Mobile software can be developed by using different platforms and programming languages based on the type of mobile device the software is being developed for. Different mobile devices uses different hardware components; therefore, their mobile software and mobile applications have to be developed using different software architectures. Mobile software development is a difficult process because users of mobile applications have different preferences; therefore, mobile services providers have to develop applications based on the demand of the users. In consequence, extensive improvements to traditional systems development methodologies need to be done in order to keep up with the demand from the users of mobile systems. Most of the systems being used are based on the model-driven software which has three different aspects for the development of the application: the application itself and its structure, the business logic and the graphical user interface of the application.
Platforms supporting devices by multiple manufacturers
Java ME This platform generally produces portable applications, although sometimes device-specific libraries exist (commonly used for games), making them non-portable. It is often used to provide simple applications on feature phones. Applications (including their data) cannot be larger than around 1 MB if they are to run on most phones. They must also be cryptographically signed in order to use APIs such as the file system access API. This is relatively expensive and is rarely done, even for commercial applications. Java ME runs atop a Virtual Machine (called the KVM) which allows reasonable, but not complete, access to the functionality of the underlying phone. The JSR process serves to incrementally increase the functionality that can be made available to Java ME, while also providing Carriers and OEMs the ability to prevent access, or limit access to provisioned software.
Symbian platform Designed from the start for mobile devices, the Symbian platform is a real time, multi-tasking OS specifically architected to run well on resource-constrained systems, maximising performance and battery life whilst minimising memory usage. The Symbian Foundation maintains the code for the open source software platform based on Symbian OS and software assets contributed by Nokia, NTT DOCOMO, and Sony Ericsson, including the S60 and MOAP(S) user interfaces. The platform is fully open source, mostly supplied under the Eclipse Public License. Over 300 million Symbian OS-based units have been shipped and Symbian holds more than a 50% market share globally.
Android Android is a Linux-based platform from the Open Handset Alliance, whose 34 members include Google, HTC, Motorola, Qualcomm, and T-Mobile. It is supported by over 34 major software, hardware and telecoms companies. The Linux kernel is used as a hardware abstraction layer (HAL). Application programming is primarily done in Java. The Android specific Java SDK is required for development although any Java IDE may be used. Performance critical code can be written in C, C++ or other native code languages using the Android Native Development Kit (NDK).
Windows Mobile is a variant of Windows CE for mobile phones. Windows CE was originally developed for palmtop computers and Pocket PC PDAs with stylus-touch screens, and later adapted for use with keyboard-equipped smartphones. Phones have become the largest installed base for CE, though market share has fallen since the introduction of Android and IPhone. Windows Mobile supports a subset of the win32 programming interface, and a simplified GUI with one window on the screen at a time. Applications can use the .NET Compact Framework Devices are compatible with applications on Pocket PC/Windows Mobile devices. Windows Mobile 6.5 introduced IPhone-like finger-based touch interfaces, while Windows Phone 7 is a substantial redesign that uses Silverlight and XNA for rich user interfaces.
Qt (framework) Qt uses standard C++ but makes extensive use of a special pre-processor (called the Meta Object Compiler, or moc) to enrich the language. Qt can also be used in several other programming languages via language bindings. It runs on all major platforms and has extensive internationalization support. Non-GUI features include SQL database access, XML parsing, thread management, network support, and a unified cross-platform API for file handling.
BREW Used for deploying applications on CDMA devices (but also supports GPRS/GSM models). Distributed via a Brew Content Platform. Little penetration in Europe. BREW can provide complete control of the handset and access to all its functionality. However the power provided by native code with direct access to the handset APIs, has caused the BREW development process to be tailored largely towards recognized software vendors. While the BREW SDK (Software Development Kit) is freely available, running software on real mobile hardware (as opposed to the provided emulator) requires a digital signature which can only be generated with tools issued by a handful of parties, namely mobile content providers and Qualcomm themselves. Even then, the software will only work on test enabled devices. To be downloadable on regular phones the software must be checked, tested and given approval by Qualcomm via their TRUE BREW Testing program.
Palm OS formerly had a strong enterprise following in the important US market, based on Palm PDAs
Palm webOS is Palm’s follow-on proprietary mobile operating system running on a Linux kernel which supports multitasking. Launched with Palm Pre and Pixi, now owned by Hewlett Packard.
Flash Lite Used for devices that support the Flash Lite player.
Microbrowser based. Lightweight functionality provided via a web-interface
Platforms supporting devices by one manufacturer
BlackBerry Supports push e-mail, mobile telephone, text messaging, internet faxing, web browsing and other wireless information services as well as a multi-touch interface. It has a built-in QWERTY keyboard, optimized for “thumbing”, the use of only the thumbs to type. The BlackBerry devices soon took a dominating position on the North American smartphone market. Also important for BlackBerry are the BES (BlackBerry Enterprise Server) and the Mobile Data System (BlackBerry MDS).
iOS (Apple) The iPhone and iPod Touch SDK uses Objective-C, based on the C programming language. Currently, is only available on Mac OS X 10.5 and is the only way to write an iPhone application. All applications must be cleared by Apple before being hosted on the AppStore, the sole distribution channel for iPhone and iPod touch applications. However, non-Apple approved applications can be released to jailbroken iPhones via Cydia or Installer. This system is also used for the iPad tablet computer.
Execution environments
Windows Mobile, Palm OS, Symbian OS and iOS support typical application binaries as found on personal computers with code which executes in the native machine format of the processor (the ARM architecture is a dominant design used on many current models). Windows Mobile can also be compiled to x86 executables for debugging on a PC without a processor emulator, and also supports the Portable Executable (PE) format associated with the .NET Framework. Windows Mobile, Palm OS and iOS offer free SDKs and Integrated Development Environments to developers. Machine language executables offer considerable performance advantages over Java.
Platform development environment
Each of the platforms for mobile applications also has a development environment which provides tools to allow a developer to write, test and deploy applications into the target platform environment.
The following table summarises the elements in each of the development environments.
31 Mar
Ajax4jsf was a project for an open source framework that added AJAX capabilities to the JavaServer Faces web application framework.
It was an early entrant to the JSF space, but did implement a still-rare feature, that of skinning.
Ajax4jsf is now contained entirely within the RichFaces project.
History
Ajax4jsf was created by Alexander Smirnov in early 2005. “Hot” new technologies of the time were AJAX and JavaServer Faces. Smirnov figured to merge the two, so that it would then be easy to have AJAX functionality within a JSF application.
The project began on SourceForge.net under the name Telamon (from the Shakespeare play, Antony and Cleopatra).
Later that same year, Smirnov joined Exadel and continued to develop the framework. The first version was released in March 2006, as part of Exadel Visual Component Platform or Exadel VCP. Later in 2006 it was split into the Ajax4jsf framework and RichFaces. While RichFaces provided a “component-centric” AJAX approach (components do everything you need), Ajax4jsf provided what’s called “page-oriented” AJAX support. The developer specifies what parts of the page should be processed on the server after some client-side user actions, and what client-side parts should be updated afterwards. Ajax4jsf became an open source project hosted on Java.net, while RichFaces became a commercial JSF component library.
In March 2007, JBoss and Exadel agreed a partnership where Ajax4jsf and RichFaces would now be under the JBoss umbrella and be called JBoss Ajax4jsf and JBoss RichFaces. RichFaces would now also be open sourced and free. In September 2007, JBoss and Exadel decided to merge Ajax4jsf and RichFaces under the RichFaces name. This made sense as both libraries now had the same free, open source licence. Having just one product also simplified versioning and compatibility issues.
Although now part of JBoss RichFaces, the code still contains references to the identifier ‘a4j’ .
31 Mar
AJAX.OOP is an open source JavaScript framework distributed under MIT License. Providing with OOP-style coding engine and AJAX requests handling functionality to create web2.0 components. Due to OOP paradigm AJAX.OOP library can be easily extended with additional functionality or used as core for other projects.
The JavaScript OOP Library
AJAX.OOP is a fast and scalable JavaScript Library for create JavaScript/AJAX components in an object oriented way.
Main feature – strong OOP paradigm implementation.AJAX.OOP engine allows the programmer to:
Create classes with object-like defining syntax
Inherit classes (both AJAX.OOP-style defined and created with native JavaScript code)
Aggregate classes (including aggregation of self and parent class with special operators this.$_self and this.$_super)
Define constructors as they are (name = ‘constructor’)
Override parent class properties and methods (but call parent if you need by using special access operator this.$super)
Access/call any parent properties and/or methods from any method of child class (just use this.$super accessor whenever you need to access parent properties and methods)
Use strict defined objects with workable ‘instanceof’ operator on them when instantiating an exemplar of AJAX.OOP classes
31 Mar
Reverse Ajax refers to an Ajax design pattern that uses long-lived HTTP connections to enable low-latency communication between a web server and a browser. Basically it is a way of sending data from client to server and a mechanism for pushing server data back to the browser.
This server–client communication takes one of two forms:
Client polling: the client repeatedly queries (polls) the server and waits for an answer.
Server pushing: a connection between a server and client is kept open and the server sends data when available.
Reverse Ajax describes the implementation of either of these models, or a combination of both. The design pattern is also known as Ajax Push, Full Duplex Ajax and Streaming Ajax.
Examples
The following is a simple example. Imagine we have 2 clients and 1 server, and client1 wants to send the message “hello” to every other client.
With traditional Ajax (polling):
client1 sends the message “hello”
server receives the message “hello”
client2 polls the server
client2 receives the message “hello”
client1 polls the server
client1 receives the message “hello”
With reverse Ajax (pushing):
client1 sends the message “hello”
server receives the message “hello”
server sends the message “hello” to all clients
Less traffic is generated with Reverse Ajax and messages are transferred with less delay (low-latency).
31 Mar
ASP.NET AJAX is a set of extensions to ASP.NET developed by Microsoft for implementing Ajax functionality. It is released under the Microsoft Public License.
Road Map
In its early development stages, ASP.NET AJAX was given the code name Atlas. Initial releases were made public to the development community in the form of CTPs (Community Technical Previews). The production version, ASP.NET AJAX 1.0 RTM; was released on January 23, 2007 as an extension to ASP.NET 2.0.
Important release milestones for ASP.NET AJAX are as follows:
CTPs – October, December 2005, January, March, April, June, July 2006
Beta – October, November 2006
Release Candidate (RC) – December 2006
ASP.NET AJAX 1.0 RTM – January 23, 2007
ASP.NET AJAX 3.5 – November 19, 2007 (as part of ASP.NET 3.5)
The next version, ASP.NET AJAX 4.0; will be part of the ASP.NET 4.0 framework release.
Browser support
ASP.NET AJAX runs on the following browsers:
Microsoft Internet Explorer (>= 6.0)
Mozilla Firefox (>= 1.5)
Opera (>= 9.0)
Apple Safari (>= 2.0)
Google Chrome
ASP.NET AJAX Suite
At present, the ASP.NET AJAX suite consists of the following components and packages:
Microsoft Ajax Library 3.5, which is a JavaScript library that provides the client-side features of the ASP.NET AJAX framework. Integrated in ASP.NET 3.5, the library is also available as a separate download for use in other environments, such as PHP.
A server framework – included in ASP.NET 3.5 – for building Ajax-enabled ASP.NET server controls. These components are also available for ASP.NET 2.0 in a separate package called ASP.NET 1.0 Extensions.
ASP.NET 2.0 AJAX Templates, a package with a set of Visual Studio templates for building ASP.NET AJAX applications with ASP.NET 2.0 and Visual Studio 2008.
ASP.NET AJAX Preview, a package with the new features that will be part of the future versions of the framework.
Microsoft Ajax Library
The Microsoft Ajax Library is a JavaScript library that provides the features for the client portion of the ASP.NET AJAX framework.
Components. The library provides an infrastructure to build either visual or non-visual JavaScript components. A global JavaScript object – Sys.Application – is responsible for managing the lifecycle of client components.
JavaScript extensions – An enhanced type system is introduced to emulate object-oriented constructs such as namespaces, classes and interfaces; and to perform reflection on client types.
Abstraction API – Common operations on the DOM (retrieving elements, setting styles and other manipulations) are automatically translated by the library into browser-specific calls.
Ajax – A set of client components is provided to handle Ajax requests and web-service calls.
Application Services – The library allows accessing the ASP.NET Membership, Authentication, Roles and Profile services from the client side.
Recently, new features have been announced as part of the ASP.NET AJAX 4.0 release:
Template Engine – Allows displaying data on the client side by using HTML templates and a custom binding notation. This approach avoids to perform page rendering on the server side.
Declarative instantiation of client components – Allows registration, instantiation and configuration of client components using markup code, without writing any imperative JavaScript code.
Live Bindings – Synchronize element properties.
The UpdatePanel Control
The UpdatePanel is an ASP.NET server control that updates portions of a web page without reloading it. Through a mechanism called asynchronous postback, the HTML for the region of the page wrapped by the control is sent by the server asynchronously through an Ajax request.
The ASP.NET controls that have been specified as content in an UpdatePanel are able to cause either synchronous (traditional) or asynchronous postbacks, by means of triggers.
A trigger is an event coming from an ASP.NET control that causes an UpdatePanel to refresh its contents. Through triggers, an asynchronous postback can be started also by controls that are declared outside the region of the ASP.NET page wrapped by the UpdatePanel control.
In the following code, only the content of the UpdatePanel control (the span element that displays the current date and time) is re-rendered every time the button is clicked.
<asp:Button ID=”Button1″ runat=”server” Text=”Refresh” />
<asp:UpdatePanel ID=”UpdatePanel1″ runat=”server”>
<Triggers>
<asp:AsyncPostBackTrigger ControlID=”Button1″ EventName=”Click” />
</Triggers>
<ContentTemplate>
<span><%= DateTime.Now %></span>
</ContentTemplate>
</asp:UpdatePanel>
Script Controls and Extenders
The server portion of the ASP.NET AJAX framework introduces two categories of ASP.NET server controls for adding client capabilities to server controls.
An Extender is used to add client functionality to an existing ASP.NET control, without the need to create a new server control.
A Script Control is a standalone ASP.NET control that offers both server and client functionality.
Web-services and JSON
ASP.NET AJAX framework brings JSON serialization features to the ASP.NET web-services and allows calling web-services from client-side Javascript, even using third-party Javascript-libraries like jQuery.
31 Mar
An Ajax framework is a framework that helps to develop web applications that use Ajax, a collection of technologies used to build dynamic web pages on the client side. Data is read from the server or sent to the server by JavaScript requests. However, some processing at the server side may be required to handle requests, such as finding and storing the data. This is accomplished more easily with the use of a framework dedicated to process Ajax requests. The goal of the framework is to provide the Ajax engine and associated server and client-side functions.
Types of frameworks
Ajax frameworks can be loosely grouped into categories according to the features they offer and the skills required of the user:
Direct Ajax frameworks
These frameworks require HTML, CSS and Ajax expertise: a developer is expected to author pages directly in HTML, and framework APIs deal directly with HTML elements. Cross-browser APIs are provided for a variety of purposes, commonly including communications, DOM manipulation, event handling, and sizing/moving/animating HTML elements.
These frameworks are generally smaller. They are commonly used for a web site such as a shopping experience, but not for a web application such as web-based email, at least not without further frameworks layered on top.
Indirect Ajax frameworks
These frameworks are based on compiler technology, where, instead of writing direct Ajax and Javascript, a high-level language is used instead, along with a compiler that turns the high-level language into Javascript. Indirect frameworks therefore require knowledge of the high-level language, CSS and HTML, and do not necessarily require a great deal of Ajax or Javascript expertise. The Indirect frameworks are typically accompanied by convenient libraries, modules and classes (written in the high-level language) that take care of communications, DOM manipulation including HTML element manipulation, and event handling.
The advantages of Indirect Ajax frameworks – compilation to Javascript – are:
the developer can effectively create their own Ajax framework using programming concepts and techniques appropriate to the high-level language (e.g. modules and classes) which are simply not present in the Javascript language.
the to-javascript compiler can enforce strong type-checking and definition rules that standalone javascript does not
a developer can program the web front-end in the same programming language as that which the server-side code is written in.
the high-level web widget sets of the Indirect Ajax frameworks have far more in common with Desktop widgets than they do with “traditional” web development.
the framework, through the compiler, can create code that takes care of browser incompatibilities at run-time, and thus can present a common browser-independent API to the developer.
Indirect Ajax frameworks have distinct and significant advantages:
Compared to Ajax component frameworks, the developer can use the available base class widgets to create their own widgets, in the high-level language with which they are familiar, instead of trying to get to grips with javascript.
The developer is therefore neither burdened by the bloat of Ajax component frameworks nor bound by their rigidity.
The developer has both the advantages of the Ajax component frameworks, and their associated widgets, as well as the advantages of the freedom of Direct Ajax frameworks.
Indirect Ajax frameworks can be used to even greater effect in combination with a Server-driven framework (typically using JSONRPC or XMLRPC).
Interestingly, Python and Ruby are a good match for compilation to Javascript, and a far better match than Java, because Java (and Java Virtual Machines) lack some of the run-time dynamic capabilities of Javascript, Python and Ruby. Fortunately for Java (and for GWT), it’s Java that is less dynamically capable than Javascript. The “class” capability of these high-level languages can be emulated using Javascript “prototype”. kalpesh
Ajax component frameworks
These frameworks offer pre-built components, such as tabbed panes, which automatically create and manage their own HTML. Components are generally created via JavaScript or XML tags, or by adding special attributes to normal HTML elements. These frameworks are generally larger, and intended for web applications rather than web sites.
Some component frameworks require the developer to have extensive HTML/CSS/Ajax experience and to do cross-browser testing. For example, grids, tabs, and buttons may be provided, but user input forms are expected to be authored directly in HTML/CSS and manipulated via Ajax techniques. Other frameworks provide a complete component suite such that only general XML and/or JavaScript abilities are required.
Ajax component frameworks can enable more rapid development than direct Ajax frameworks, but with less control, hence it is key that an Ajax component framework provides the following:
customization APIs, e.g., an event that fires when the user stops editing within a grid
skinning facilities, where appearance can be changed without affecting behavior or layout
programmatic control, e.g., dynamically adding tabs or dynamically creating components based on user data
extensibility—creation of new components based on other components, so that the benefits of a component-based framework are not lost
Server-driven Ajax frameworks
Several frameworks offer a server-side component-based development model with some degree of Ajax support.
Components are created and manipulated on the server using a server-side programming language. Pages are then rendered by a combination of server-side and client-side HTML generation and manipulation. User actions are communicated to the server via Ajax techniques, server-side code manipulates a server-side component model, and changes to the server component model are reflected on the client automatically.
These frameworks offer familiarity and efficiency for server-side developers at the possible expense of power and performance. Ajax frameworks that handle presentation completely within the browser may offer greater responsiveness if they handle more user interactions without server involvement. In a server-driven model, some UI interactions can react slowly, for example when an input field is dynamically enabled based on server-requests. Furthermore, server-dependent Ajax frameworks can not offer offline support. The approach is still popular for situations where the benefits of a full Ajax architecture can’t be captured or where server interaction is needed anyway.
Extending a framework may require the developer to understand which parts of the presentation are handled on the client vs on the server, and to code in JavaScript/Ajax as well as server-side code (an issue which can be overcome through the use of an Indirect Ajax framework, by choosing an Indirect Ajax framework with a compiler that accepts the same language as the server-side code).
31 Mar
Ajax (shorthand for asynchronous JavaScript and XML) is a group of interrelated web development techniques used on the client-side to create interactive web applications. With Ajax, web applications can retrieve data from the server asynchronously in the background without interfering with the display and behavior of the existing page. The use of Ajax techniques has led to an increase in interactive or dynamic interfaces on web pages. Data are usually retrieved using the XMLHttpRequest object. Despite the name, the use of XML is not actually required, nor do the requests need to be asynchronous.
Like DHTML and LAMP, Ajax is not a technology in itself, but a group of technologies. Ajax uses a combination of HTML and CSS to mark up and style information. The DOM is accessed with JavaScript to dynamically display, and to allow the user to interact with, the information presented. JavaScript and the XMLHttpRequest object provide a method for exchanging data asynchronously between browser and server to avoid full page reloads.
History
In the 1990s, web browsers and web sites were based on static pages and each user action required that the page be re-loaded from the server (or a new page loaded). This could slow down user interaction considerably.
Asynchronous loading of content first became practical when Java applets were introduced in the first version of the Java language in 1995. These allow compiled client-side code to load data asynchronously from the web server after a web page is loaded.[3] In 1996, Internet Explorer introduced the IFrame element to HTML, which also enables this to be achieved. In 1999, Microsoft created the XMLHTTP ActiveX control in Internet Explorer 5, which is now supported by Mozilla, Safari, Opera and other browsers as the native XMLHttpRequest object. The utility of background HTTP requests to the server and asynchronous web technologies remained fairly obscure until Google made a wide deployment of Ajax with Gmail (2004) and Google Maps (2005).
The term “Ajax” was coined in 2005 by Jesse James Garrett. However, a patent application covering this type of user interface was filed on September 3, 2003, thus predating the term itself by two years. This application resulted in US Patent #7,523,401 being issued to Greg Aldridge of Kokomo, IN.
On April 5, 2006 the World Wide Web Consortium (W3C) released the first draft specification for the object in an attempt to create an official web standard.
Technologies
The term Ajax has come to represent a broad group of web technologies that can be used to implement a web application that communicates with a server in the background, without interfering with the current state of the page. In the article that coined the term Ajax, Jesse James Garrett explained that the following technologies are required:
HTML or XHTML and CSS for presentation
the Document Object Model for dynamic display of and interaction with data
XML and XSLT for the interchange, and manipulation and display, of data, respectively
the XMLHttpRequest object for asynchronous communication
JavaScript to bring these technologies together
Since then, however, there have been a number of developments in the technologies used in an Ajax application, and the definition of the term Ajax. In particular, it has been noted that:
JavaScript is not the only client-side scripting language that can be used for implementing an Ajax application. Other languages such as VBScript are also capable of the required functionality. However JavaScript is the most popular language for Ajax programming due to its inclusion in and compatibility with the majority of modern web browsers.
XML is not required for data interchange and therefore XSLT is not required for the manipulation of data. JavaScript Object Notation (JSON) is often used as an alternative format for data interchange, although other formats such as preformatted HTML or plain text can also be used.
Classic Ajax involves writing ad hoc JavaScript on the client. A simpler if cruder alternative is to use standard JavaScript libraries that can partially update a page, such as ASP.Net’s UpdatePanel. Tools such as Echo2 and ZK enable fine grained control of a page from the server, using only standard JavaScript libraries.
Rationale
In many cases, related pages on a website consist of much content that is common between them. Using traditional methods, that content would have to be reloaded on every request. However, using Ajax, a web application can request only the content that needs to be updated, thus drastically reducing bandwidth usage and load time.
The use of asynchronous requests allows the client’s Web browser UI to be more interactive and to respond quickly to inputs, and sections of pages can also be reloaded individually. Users may perceive the application to be faster or more responsive, even if the application has not changed on the server side.
The use of Ajax can reduce connections to the server, since scripts and style sheets only have to be requested once.
State can be maintained throughout a Web site. JavaScript variables will persist because the main container page need not be reloaded
Drawbacks
Owing to their dynamic nature, Ajax interfaces are often harder to develop when compared to static pages.
Pages dynamically created using successive Ajax requests do not automatically register themselves with the browser’s history engine, so clicking the browser’s “back” button may not return the user to an earlier state of the Ajax-enabled page, but may instead return them to the last full page visited before it. Workarounds include the use of invisible IFrames to trigger changes in the browser’s history and changing the anchor portion of the URL (following a #) when Ajax is run and monitoring it for changes.
Dynamic web page updates also make it difficult for a user to bookmark a particular state of the application. Solutions to this problem exist, many of which use the URL fragment identifier (the portion of a URL after the ‘#’) to keep track of, and allow users to return to, the application in a given state.
Because most web crawlers do not execute JavaScript code, publicly indexable web applications should provide an alternative means of accessing the content that would normally be retrieved with Ajax, to allow search engines to index it.
Any user whose browser does not support JavaScript or XMLHttpRequest, or simply has this functionality disabled, will not be able to properly use pages which depend on Ajax. Similarly, devices such as mobile phones, PDAs, and screen readers may not have support for the required technologies. Screen readers that are able to use Ajax may still not be able to properly read the dynamically generated content. The only way to let the user carry out functionality is to fall back to non-JavaScript methods. This can be achieved by making sure links and forms can be resolved properly and do not rely solely on Ajax. In JavaScript, form submission could then be halted with “return false”.
The same origin policy prevents some Ajax techniques from being used across domains, although the W3C has a draft of the XMLHttpRequest object that would enable this functionality.
Like other web technologies, Ajax has its own set of vulnerabilities that developers must address. Developers familiar with other web technologies may have to learn new testing and coding methods to write secure Ajax applications.
Ajax-powered interfaces may dramatically increase the number of user-generated requests to web servers and their back-ends (databases, or other). This can lead to longer response times and/or additional hardware needs.