Welcome!

Open Source Cloud Authors: Zakia Bouachraoui, Elizabeth White, Liz McMillan, Pat Romanski, Yeshim Deniz

Related Topics: Open Source Cloud

Open Source Cloud: Article

AjaxWord: An Open Source Web Word Processor

AjaxWord: An Open Source Web Word Processor

AjaxWord (www.ajaxword.com) is an open source Web-based word processor. It closely mimics Microsoft Word in both look-and-feel and functionality. The application was initially written between 1997 and 1999 using JavaScript/DHTML on the client side with ASP on the server side. It was released on the Web in 2000. In 2005, the application's server-side logic was migrated to Java and released as open source code.

On the client side, the application looks and feels like a typical desktop application, e.g., Microsoft Word. The design features the kind of rich graphical user interface that Microsoft Word users are familiar with, such as hierarchical menus, toolbars, wizards, file dialogs, and a multiple document interface (MDI). (Figure 1)

On the server side, the application is a typical Java-based Web application. It features:

  • User authentication and authorization.
  • User-based file storage system. Once a user is logged in, he is assigned to a user-specific diretory. In this directory, he can create new files, save files, and create new directories. Users can't see or manipulate any server-side file system element beyond this user-specific directory.
  • Services to open server-side files and save files on the server side.
  • Services for a logged-on user to navigate his own directory structure.
From a network communication perspective, the application uses standard HTTP for sending requests and responses asynchronously. Requests/responses are sent and processed in the background without the user having to do full-page "click, wait and refresh."

The following is a list of high-level features offered by AjaxWord:

  • A hierarchical menu that provides file opening, file saving, editing, and formatting; (Figure 2)
  • File dialogs that users can use to navigate directory structure, open files, and save files (note: the file system is actually on the server side); (Figure 3)
  • A toolbar that provides a shortcut to formatting and file manipulation functions. (Figure 4)
A multiple document interface (MDI) that lets a user work on multiple documents at the same time in separate windows.

Document Templates and "New File" Wizard (Figure 5)
In many ways, AjaxWord exhibits the characteristics of AJAX applications:

  • The Web Page as the Application: AjaxWord's start page defines the initial application user interface and downloads a JavaScript-based AJAX engine as well as a significant portion of the application logic asynchronously. Once the initial page is loaded, the application is fully capable of interacting with the user without further server connectivity.
  • Servers Are for Data, Not Pages: Different from other Web applications, AjaxWord's server-side logic delivers data. Once the initial page finishes downloading, subsequent requests to server logic are requests for data.
  • Dynamic and Continuous User Experiences: On the one side, the application delivers a rich user interface and an asynchronous update similar to desktop software. On the other side, it's a native Web application that runs inside popular Web browsers without any installation requirement.
Technical Overview (Figure 6)
AjaxWord is a distributed application that has a client-side component and server-side component: the AjaxWord client and the AjaxWord server.

The AjaxWord client is written using JavaScript and HTML. It leverages an AJAX engine that contains a DHTML user interface toolkit and a way of doing asynchronous communications. The AjaxWord client also contains the application's client-side business logic.

The AjaxWord server is written as a Java Web application. It contains a Java servlet called "ControllerServlet." This servlet gets AjaxWord client requests and dispatches them to different modules for processing. The AjaxWord server handles the following requests:

  • Request to register a new user
  • Request to login a user
  • Request to list all the children of a particular directory
  • Request to open or save a file
All user data is stored in a database that is accessed via JDBC. User files are stored in the server-side file system as files. For deployment purposes, the AjaxWord server requires only a Java servlet engine.

Launching AjaxWord
AjaxWord is a complex application that requires a significant amount of code be downloaded to the client side. The code includes both the AJAX engine as well as application client logic. The application startup experience is an important factor in influencing user adoption that must be optimized.

Figure 7 shows how AjaxWord handles this. When the user launches the application, AjaxWord shows a loading page with a progress bar. In the background, it sends a request to the server to download the JavaScript files of the AJAX engine. When a file is downloaded, the progress bar is updated. After the AJAX engine finishes downloading, the application user interface is downloaded and displayed. In the meantime, requests are sent to the server in the background to download the application logic. When the application user interface is rendered, the application has been downloaded and is ready for user interaction.

Running AjaxWord
After AjaxWord is loaded, it's ready for user input. When a user event occurs, such as a mouse-click or a keyboard action, the event is sent to the application client logic for processing. If the event doesn't require server-side access, the application client logic will process it locally and update the user interface to display the result. A significant amount of events are handled in this way. Using local processing power and minimizing network round trips are reasons that AJAX applications can deliver better performance. (Figure 8)

If the event requires server-side resources, the application client-side logic will call the AJAX engine to send a request to the server in the background without freezing the user interface. The request will go to the server-side "ControllerServlet," which can route the request to different service modules for processing. The processing result will be sent back to the client as part of the response. The AJAX engine will get the response and return it to the application logic. The client logic will then process the response and update the user interface. While the server request is being processed, the user interface is still "live" and the user can still interact with the application. This "asynchronous" behavior is another reason why AJAX is attractive to developers and users.

Exiting AjaxWord (Figure 9)
Most Web applications don't require any special handling on the browser side to exit. If a session is inactive for a certain amount of time, the application is considered to have hit a "session time-out" and the server will terminate it automatically. Since most Web applications don't keep state on the client side, the client-side exit isn't a concern.

The situation can be different for AJAX applications. AJAX applications tend to keep state on the client side and so the client-side exit has to be handled. AjaxWord is a good example. When the user is closing the browser window, there may be unsaved documents on the client side. If the exit event isn't handled, the unsaved document will be lost.

When a user issues an exit command (by clicking the "close" button on the browser window to close the browser), the event is captured by AjaxWord's client logic. The client logic first determines whether there are any opened documents to be saved. If so, it will call the AJAX engine to save these documents to the server, then it will display a confirmation dialog asking the user to confirm the exit. If the user clicks "cancel," the exit event is ignored and the session will continue. If the user clicks "ok," the session will terminate and the browser window will be closed.


More Stories By Coach Wei

Coach Wei is founder and CEO of Yottaa, a web performance optimization company. He is also founder and Chairman of Nexaweb, an enterprise application modernization software company. Coding, running, magic, robot, big data, speed...are among his favorite list of things (not necessarily in that order. His coding capability is really at PowerPoint level right now). Caffeine, doing something entrepreneurial and getting out of sleeping are three reasons that he gets up in the morning and gets really excited.

Comments (2)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


IoT & Smart Cities Stories
Moroccanoil®, the global leader in oil-infused beauty, is thrilled to announce the NEW Moroccanoil Color Depositing Masks, a collection of dual-benefit hair masks that deposit pure pigments while providing the treatment benefits of a deep conditioning mask. The collection consists of seven curated shades for commitment-free, beautifully-colored hair that looks and feels healthy.
The textured-hair category is inarguably the hottest in the haircare space today. This has been driven by the proliferation of founder brands started by curly and coily consumers and savvy consumers who increasingly want products specifically for their texture type. This trend is underscored by the latest insights from NaturallyCurly's 2018 TextureTrends report, released today. According to the 2018 TextureTrends Report, more than 80 percent of women with curly and coily hair say they purcha...
The textured-hair category is inarguably the hottest in the haircare space today. This has been driven by the proliferation of founder brands started by curly and coily consumers and savvy consumers who increasingly want products specifically for their texture type. This trend is underscored by the latest insights from NaturallyCurly's 2018 TextureTrends report, released today. According to the 2018 TextureTrends Report, more than 80 percent of women with curly and coily hair say they purcha...
We all love the many benefits of natural plant oils, used as a deap treatment before shampooing, at home or at the beach, but is there an all-in-one solution for everyday intensive nutrition and modern styling?I am passionate about the benefits of natural extracts with tried-and-tested results, which I have used to develop my own brand (lemon for its acid ph, wheat germ for its fortifying action…). I wanted a product which combined caring and styling effects, and which could be used after shampo...
The platform combines the strengths of Singtel's extensive, intelligent network capabilities with Microsoft's cloud expertise to create a unique solution that sets new standards for IoT applications," said Mr Diomedes Kastanis, Head of IoT at Singtel. "Our solution provides speed, transparency and flexibility, paving the way for a more pervasive use of IoT to accelerate enterprises' digitalisation efforts. AI-powered intelligent connectivity over Microsoft Azure will be the fastest connected pat...
There are many examples of disruption in consumer space – Uber disrupting the cab industry, Airbnb disrupting the hospitality industry and so on; but have you wondered who is disrupting support and operations? AISERA helps make businesses and customers successful by offering consumer-like user experience for support and operations. We have built the world’s first AI-driven IT / HR / Cloud / Customer Support and Operations solution.
Codete accelerates their clients growth through technological expertise and experience. Codite team works with organizations to meet the challenges that digitalization presents. Their clients include digital start-ups as well as established enterprises in the IT industry. To stay competitive in a highly innovative IT industry, strong R&D departments and bold spin-off initiatives is a must. Codete Data Science and Software Architects teams help corporate clients to stay up to date with the mod...
At CloudEXPO Silicon Valley, June 24-26, 2019, Digital Transformation (DX) is a major focus with expanded DevOpsSUMMIT and FinTechEXPO programs within the DXWorldEXPO agenda. Successful transformation requires a laser focus on being data-driven and on using all the tools available that enable transformation if they plan to survive over the long term. A total of 88% of Fortune 500 companies from a generation ago are now out of business. Only 12% still survive. Similar percentages are found throug...
Druva is the global leader in Cloud Data Protection and Management, delivering the industry's first data management-as-a-service solution that aggregates data from endpoints, servers and cloud applications and leverages the public cloud to offer a single pane of glass to enable data protection, governance and intelligence-dramatically increasing the availability and visibility of business critical information, while reducing the risk, cost and complexity of managing and protecting it. Druva's...
BMC has unmatched experience in IT management, supporting 92 of the Forbes Global 100, and earning recognition as an ITSM Gartner Magic Quadrant Leader for five years running. Our solutions offer speed, agility, and efficiency to tackle business challenges in the areas of service management, automation, operations, and the mainframe.