qooxdoo framework features
qooxdoo is an entirely object-oriented framework based on JavaScript. This framework is properly organized on the basis of namespaces. It supports most of the modern browsers, provides utilities to generate documentation based on javadocs such as comments, and also supports themes and internationalization. In this section, you will learn about all these features.
Let's check all the features provided by the qooxdoo framework. This will improve your knowledge on qooxdoo and help you further understand the qooxdoo framework.
Language
- The qooxdoo application runs in most of the modern web browsers, including:
- Internet Explorer 6+
- Firefox 2+
- Opera 9+
- Safari 3.0+
- Chrome 2+
- No plugins (ActiveX, Java, Flash, or Silverlight) are required. It is completely based on JavaScript.
- Non-critical modifications of the native JavaScript objects to allow for easy integration with other libraries and custom code.
- Cross-browser JavaScript 1.6 (string/array generics).
Object-orientation
- Framework is fully class-based
- Framework uses namespaces. It avoids the conflicts in global variables
- Besides regular classes, it offers
abstract, static
, orsingleton
classes - Constructor and destructor support
- Multiple access specifiers—
public, protected
, andprivate
- Single inheritance and full polymorphism
- Java-like interfaces
- Ruby-like mixins
- So-called dynamic properties, a very convenient and powerful way to have optimized
setter
andgetter
methods generated from simple configuration
Programming
- Purely client-side JavaScript
- No need to know HTML, DOM, or CSS
- Complete support for event-based programming
- Development of qooxdoo applications fully supported on all platforms; for example, Windows, Linux, all flavors of Unix, and Mac OS X
- Quick start for easy evaluation of the framework without the need to install any software
- Skeletons are pre-configured for full-featured custom applications
- Many sample applications and examples
- Designed for high performance
- Framework has no issue of memory leak
- Aids in developing memory-leak free user applications
- Extensive logging capabilities (for example, different log appenders and Firebug support)
- Straightforward debugging (for example, object introspection and benchmarking)
- Browser history management, that is, browser back/forward button, bookmarks
- Cookies
- Generic JavaScript pretty printer/code formatter for unified code style
Internationalization
- Built-in internationalization (i18n) and localization (l10n) support
- Support for all languages and locales, at least on this planet
- Based on the comprehensive Common Language Data Repository (CLDR)
- Internally using the mature GNU
gettext
tools - Well-known translation file format (
.po
) - Support by professional, free translation tools (PO editors) on all platforms
API reference
- Extended javadoc-like source code comments
- Full API reference for both framework and custom applications
- Online (http://api.qooxdoo.org/) and offline API viewer applications
Testing
Deployment
- Generation of a self-contained and easily-deployable build version
- Complexity of the build process hidden behind user-friendly commands
- JavaScript compression (removal of whitespaces, and so on)
- Automatic dependency resolution of JavaScript classes; no need for manual
require()
statements or tweaking a custom build - Automatic linking of JavaScript classes (JS linker)
- Copying of required static resources like images or other external files into a self-contained build
- String extraction (tremendous performance improvement for IE6)
- Shortening and obfuscating local variables and/or private members
- Optional browser-specific variant for each supported browser (For example, Firefox-only build)
- Generation of build versions depending on user-defined variants, which allows for different products from the same code base
- Removal of debug statements within the application code before deployment
Migration
- Support for easy migration of custom applications from one framework release to another
- Migration in the qooxdoo framework is painless as it is technically easy to carry out
- Fully integrated into the regular build system
- All non-ambiguous changes are done automatically for maximum convenience and to avoid manual find/replace errors
- All ambiguous or semantic changes that require some developer decision are put into a comprehensive checklist
Alternative programming models
In addition to the JavaScript programming model, you can also develop qooxdoo applications using one of the following alternative programming models or development platforms. Some are not quite stable, some are not active, and some are pretty new. This book focuses only on the JavaScript programming model, which is the built-in development model of the qooxdoo framework.
- Java/Eclipse: Eclipse Rich Ajax Platform (RAP); for more information, see http://eclipse.org/rap
- Java: qooxdoo Web Toolkit (QWT); for more information, see http://qooxdoo.org/contrib/project/qwt
- QxWT: JSNI wrapper for the qooxdoo JavaScript library; for more information, see http://www.ufacekit.org/index.php?cat=02_qooxdoo&page=01_QxWT
- LISP (qooxlisp): LISP programming for web applications; for more information, see https://github.com/kennytilton/qooxlisp/wiki/
- XML: XML-based GUI description; for more information, see http://qxtransformer.org/
The list of alternative programming models is growing. You can check the updated list at http://qooxdoo.org/documentation/general/development_platforms