Framework
A typical qooxdoo application is created by leveraging the integrated development tools and the client-side programming model based on object-oriented JavaScript. Since no HTML, CSS nor DOM knowledge is needed, developers can fully concentrate on creating application classes without worrying about low-level cross-browser issues.
Custom application development should be based on the provided "skeleton". This skeleton is a pre-configured sample application that nicely integrates the built-in development tool chain.
Quicklink: qooxdoo feature list
Language
- Support for all major browsers, e.g.
- Firefox 1.5, 2.0, 3.0
- Internet Explorer 6, 7
- Opera 8, 9
- WebKit/Safari 3.0
- No plugins required (neither ActiveX, Java, Flash nor Silverlight needed)
- No modification of the native JavaScript Object to allow for easy integration with other libraries or custom code
- Cross-browser JavaScript 1.6 string/array generics
Object-orientation
- Framework is fully class-based (currently about 350 classes)
- No pollution by global variables due to namespacing
- Besides regular classes, it offers abstract, static or singleton classes
- Constructors and destructors
- Public, protected and private members by naming convention, that can (partly) be enforced during development
- Single inheritance, full polymorphism
- Java-like interfaces
- Ruby-esque mixins
- So-called dynamic properties, a very convenient and powerful way to have optimized setter and getter methods generated from simple configuration
Programming
- Purely client-side JavaScript
- No HTML knowledge required
- No CSS knowledge required
- No DOM knowledge required
- Complete support for event-based programming
- Development of qooxdoo applications fully supported on all platforms, e.g. Windows, Linux, all Unixes, Mac OS X
- Quickstart for easy evaluation of the framework without the need to install any software
- Skeletons as pre-configured basis for full-featured custom applications
- Many sample applications and examples
- Designed for high performance
- Framework is memory-leak free
- Aid in developing memory-leak free user applications
- Extensive logging capabilities (e.g. different log appenders, Firebug support)
- Straightforward debugging (e.g. object introspection, benchmarking)
- Browser history management, i.e. browser back/forward button, bookmarks
- Cookies
- Generic JavaScript pretty printer / code formatter for unified code style
Alternative programming models
- Java/Eclipse: Eclipse Rich Ajax Platform (RAP)
- PHP/Visual: Borland/CodeGear "Delphi For PHP"
- ASP.NET: ASP.NET RIA AJAX Framework
Internationalization
- Built-in internationalization (i18n) and localization (l10n) support
- Supporting 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 application
- Online and offline API viewer application
Testing
- Integrated unit testing framework "Test Runner"
- Integrated functional testing framework "Simulator"
- Functional testing is also supported by the excellent commercial product "Squish"
Deployment
- Generation of a self-contained and easily deployable “build” version
- Complexity of the build process hidden behind user-friendly “make” commands
- JavaScript compression (removal of whitespaces, etc.)
- 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 (e.g. Firefox-only build)
- Generation of build versions depending on user-defined variants, which allows for different products from 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
- As painless as technically feasible
- 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
