The AJAX Toolkit Framework (ATF) Project
An Eclipse Incubation Project Proposal
January 2006
1 Introduction
The AJAX Toolkit Framework is a proposed open-source project to be incubated within the Eclipse Web Tools Platform ("WTP") Project. This document describes the content and the scope of the proposed project.
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process document) and is written to declare its intent and scope. This proposal is written to solicit additional participation and input from the Eclipse community. You are invited to comment on and/or join the project. Please send all feedback to the http://www.eclipse.org/newsportal/thread.php?group=eclipse.webtools newsgroup.
2 BackgroundAsynchronous JavaScript And XML, or AJAX, is a web development technique for creating interactive web applications using a combination of:
- XHTML (or HTML) and CSS for marking up and styling information. (XML is commonly used, although any format will work, including preformatted HTML, plain text, JSON and even EBML).
- The Document Object Model manipulated through JavaScript to dynamically display and interact with the information presented
- The XMLHttpRequest object to exchange data asynchronously with the web server. In some Ajax frameworks and in some situations, an IFrame object is used instead of the XMLHttpRequest object to exchange data with the web server.
Like DHTML, LAMP, or SPA, AJAX is not a technology in itself, but a term that refers to the use of a group of technologies together.
3 Project GoalAJAX Toolkit Framework (ATF) will provide extensible frameworks and exemplary tools for building IDEs for the many different AJAX runtime offerings (Dojo, Zimbra, etc) in the market. These frameworks will contain features for developing, deploying, debugging and testing AJAX applications. Tools built upon these frameworks will initially include: enhanced JavaScript editing features such as edit-time syntax checking; an embedded Mozilla web browser; an embedded DOM browser; and an embedded JavaScript debugger. Because it is a framework, ATF will provide for the development and incorporation of additional AJAX development tooling. ATF will use existing Eclipse extensions for web application deployment so that the environment will be "server agnostic" - that is, a developer may easily extend the framework to deploy their AJAX application to an arbitrary new class of server. Initial adapters will include a J2EE / JSP adapter and an Apache / PHP adapter. An additional and unique aspect of the framework is the Personality Builder function, which assists in the construction of arbitrary AJAX runtime frameworks, thus allowing those runtimes to be used with ATF tools.
4 Project DescriptionThe AJAX Toolkit Framework will include the following components:
- ATF Tools
Note that the initial contribution focuses heavily on the use of Mozilla because the Mozilla system offers cross-platform interfaces to enable such things as JavaScript Debugging. However, as a framework, ATF exposes a prototype API that would allow for the incorporation of arbitrary browsers with comparable function as they become available.
- Enhanced JavaScript Editing Features
- Batch and as-you-type syntax validation
- JavaScript Debugger
- Tight integration with Eclipse debug UI to provide flow control in browser runtime and the ability to examine JavaScript code and variables
- Embedded Browser
- Access to browser's DOM, e.g., Mozilla XPCOM
- DOM Inspector / JavaScript Console
- Mozilla tools integration for DHTML developers as Eclipse Views.
- Enhanced JavaScript Editing Features
- ATF Personality Framework
- Personality
A Personality is a collection of IDE features that are specifically targeted to a certain AJAX Runtime Library. This is a core concept of ATF: providing an extensible framework to support AJAX development in arbitrary AJAX runtimes.
- Browser Embedding Framework
- A prototype API that allows for the embedding of high-function web browsers within the ATF framework to support JavaScript debugging, DOM inspection, and other interesting browser-centric tooling.
- A prototype API that allows for the embedding of high-function web browsers within the ATF framework to support JavaScript debugging, DOM inspection, and other interesting browser-centric tooling.
- Personality Builder Framework
The Personality Builder Framework is primarily accessed via the Personality Builder Wizard, which generates the basic Eclipse assets for a new personality. They include:
- Plugin projects - A set of plugin projects that constitute a personality
- Eclipse Extensions - Extensions to existing Eclipse extension points (Wizards, Snippets, etc)
- New Extensions - Extensions to newly defined Extension points:
- Wizard Models: for contributing new AJAX application wizards.
- Snippet Models: for contributing new code snippets.
- Nature Artifacts: to define the source of AJAX runtime artifacts and control where runtime artifacts are placed within the project when a particular AJAX nature is injected.
- Variable Factory: for contributing new variable types to be used in the wizardModel and snippetModel extensions.
- Variable Renderer Factory: for contributing new variable renderers which control how a variable type input is rendered in a wizard or snippet dialog window.
- Operation Factory: for contributing new wizard operations such as file creations.
- A special Plugin project that wraps all the required assets of the Ajax Runtime Library (JavaScript Files, Java Files, HTML, JSP, etc)
A developer seeking to contribute a new Personality will typically begin with the Personality Builder Wizard and then fill in runtime-specific code as necessary.
- Personality
- Integrated Deployment
- Using Eclipse APIs ATF will support J2EE / JSP and Apache / PHP - in practice ATF will be 'server agnostic' to the largest extent possible.
- Rhino, JSLint
- Used for JavaScript syntax validation
- XULRunner with JavaConnect
- Mozilla-specific code to enable the embedding of the Mozilla browser within a Java container (Eclipse)
- AJAX Runtime
ATF is tooling for arbitrary AJAX runtimes. The initial distribution will include tooling support for- Zimbra
- OpenRico
- Dojo
- Eclipse Platform 3.2 and WTP 1.0
The AJAX Toolkit Framework will be built using several Eclipse Web Tools Platform (WTP) project components. The WTP provide generic, extensible and standards-based tools for Web-centric application development. It provides editors for various Web-centric languages such as: HTML, CSS, JavaScript, WSDL, etc. In addition, WTP provides facilities for configuring and connecting to Web Servers. The AJAX Toolkit Framework will use the WTP Server facilities to manage and configure Web Servers. AJAX Toolkit Framework will benefit from the client web development support, already available in the WTP (HTML, CSS, etc) and when necessary will take advantage of server side web deployment. The integration between the AJAX Toolkit Framework and WTP will provide AJAX developers users with a comprehensive solution for Web development.
Main plug-ins:
- Enhanced JavaScript Editing features - providing edit-time and batch syntax checking of JavaScript code.
- Embedded Mozilla Browser - provides cross-platform preview of AJAX application, plus DOM inspector function via XPCOM bridge.
- Embedded JavaScript Debugger - takes advantage of the Mozilla / XPCOM bridge to provide an Eclipse-style debugging experience for JavaScript code.
- Personality Builder - Wizard-driven functions that allow for the easy adaptation of arbitrary AJAX runtimes into the Eclipse / AJAX Toolkit Framework.
IBM will make an initial code contribution that will encompass the core functionality for the AJAX Toolkit Framework project including:
- Enhanced JavaScript editing features including edit-time syntax checking and validation
- Integrated Mozilla environment including browser, DOM inspector, Error console, and debugging
- A Personality Builder that will facilitate the construction of additional personalities to allow arbitrary AJAX runtimes to be used within ATF
- ATF personalities for Zimbra, OpenRico, and Dojo
- Adapters for J2EE / JSP and Apache / PHP
- 1Q2006: Initial Prototype version available, includes stabilization and bug-fixes.
- 2Q2006: Process input from developing community to enhance functionality. Current considered enhancements include:
- Support for additional AJAX runtimes.
- Support for additional server adapters.
- Refinement of prototype browser embedding API.
- Modeling of Widget sets and other components for AJAX runtimes.
- WYSIWYG editing framework for arbitrary AJAX runtimes.
- Enhancing Personality Builder extensions and utility.
9.1 Project Lead
The project lead will be initially the following member:
- Craig Becker, IBM (jlpicard@us.ibm.com)
9.2 Interested Parties
Support has been expressed by:
- BEA
- IBM
- Laszlo
- Oracle
- RedHat
- Genuitec
- Yahoo
- Zend
- Zimbra
9.3 Potential Committers
- Craig Becker, IBM (jlpicard@us.ibm.com)
- Leugim Bustelo, IBM (lbustelo@us.ibm.com)
- Javier Pedemonte, IBM (pedemont@us.ibm.com)
- Adam Peller, IBM (apeller@us.ibm.com)
- Donald Sedota, IBM (sedota@us.ibm.com)
Additional contributors from outside of IBM are being sought.