Qooxdoo
Encyclopedia
qooxdoo is an open source
Ajax
web application framework
. It is an LGPL- and/or EPL
-licensed multipurpose framework
that includes support for professional JavaScript
development, a graphical user interface
(GUI) toolkit
and high-level client-server communication.
and does not modify or extend native JavaScript types. Most modern browsers are supported, including Gecko
(Firefox, Mozilla
, SeaMonkey
), Presto
(Opera
), Trident
(Internet Explorer
, RealPlayer
, Winamp
), WebKit
(Chrome
, Safari
). It includes an API reference that is auto-generated from Javadoc
-like comments. Among the accompanying tool set is a comprehensive JavaScript parser that is an integral part of the automatic build process and is used to optimize, compress
, link and deploy
custom applications
, and generate documentation. Internationalization and localization
of applications are supported. qooxdoo can be downloaded as a comprehensive SDK.
(SWT) and others with respect to implementing user interface
s. It offers a rich set of widgets that resemble elements of native desktop applications. Built-in support for keyboard navigation, focus and tab handling and drag & drop is provided. Dimensions can be specified as static, auto-sizing, stretching, percentage, weighted flex or min/max or even as combinations of these. All widgets are based on flexible layout managers, which are instrumental to many advanced layout abilities. Interface description is done programmatically in JavaScript for enhanced performance.
Defining the user interface needs no HTML
, and styling the interface needs no Cascading Style Sheets
(CSS). Simple appearance themes are used to style colors, icons and other visual properties; they also support runtime switching.
The following application skeleton gives an impression of how that works. The code will create a small application with a button that features a tooltip and opens an alert box when pressed. You can also run and edit this code in an online Playground:
Interfaces
and mixin
s are defined and used in a similar fashion.
server implementations (currently in Java
, PHP
, Perl
and Python
) to demonstrate client-server communication. An abstract transport layer supports queues, timeouts and implementations via XMLHttpRequest
, Iframes and Scripts. Like the rest of qooxdoo, this layer relies on event-based programming to simplify asynchronous communication.
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
Ajax
Ajax (programming)
Ajax is a group of interrelated web development methods used on the client-side to create asynchronous web applications...
web application framework
Web application framework
A web application framework is a software framework that is designed to support the development of dynamic websites, web applications and web services. The framework aims to alleviate the overhead associated with common activities performed in Web development...
. It is an LGPL- and/or EPL
Eclipse Public License
The Eclipse Public License is an open source software license used by the Eclipse Foundation for its software. It replaces the Common Public License and removes certain terms relating to litigations related to patents....
-licensed multipurpose framework
Software framework
In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...
that includes support for professional JavaScript
JavaScript
JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....
development, a graphical user interface
Graphical user interface
In computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...
(GUI) toolkit
Toolkit
A toolkit is an assembly of tools; set of basic building units for graphical user interfaces.Things called toolkits include:* Abstract Window Toolkit* Accessibility Toolkit* Adventure Game Toolkit* B-Toolkit* Battlefield Mod Development Toolkit...
and high-level client-server communication.
Framework
qooxdoo is entirely class-based and tries to leverage the features of object-oriented JavaScript. It is based on namespacesNamespace (computer science)
A namespace is an abstract container or environment created to hold a logical grouping of unique identifiers or symbols . An identifier defined in a namespace is associated only with that namespace. The same identifier can be independently defined in multiple namespaces...
and does not modify or extend native JavaScript types. Most modern browsers are supported, including Gecko
Gecko (layout engine)
Gecko is a free and open source layout engine used in many applications developed by Mozilla Foundation and the Mozilla Corporation , as well as in many other open source software projects....
(Firefox, Mozilla
Mozilla
Mozilla is a term used in a number of ways in relation to the Mozilla.org project and the Mozilla Foundation, their defunct commercial predecessor Netscape Communications Corporation, and their related application software....
, SeaMonkey
SeaMonkey
SeaMonkey is a free and open source cross-platform Internet suite. It is the continuation of the former Mozilla Application Suite, based on the same source code...
), Presto
Presto (layout engine)
Presto is the layout engine for later versions of the Opera web browser . After several public betas and technical previews, it was released on January 28, 2003 in Opera 7 for Windows, and as of Opera 11 it is still in use. Presto is dynamic: the page or parts of it can be re-rendered in response...
(Opera
Opera (web browser)
Opera is a web browser and Internet suite developed by Opera Software with over 200 million users worldwide. The browser handles common Internet-related tasks such as displaying web sites, sending and receiving e-mail messages, managing contacts, chatting on IRC, downloading files via BitTorrent,...
), Trident
Trident (layout engine)
Trident is the name of the layout engine for the Microsoft Windows version of Internet Explorer.It was first introduced with the release of Internet Explorer version 4.0 in October 1997; it has been steadily upgraded and remains in use today...
(Internet Explorer
Internet Explorer
Windows Internet Explorer is a series of graphical web browsers developed by Microsoft and included as part of the Microsoft Windows line of operating systems, starting in 1995. It was first released as part of the add-on package Plus! for Windows 95 that year...
, RealPlayer
RealPlayer
RealPlayer is a cross-platform media player by RealNetworks that plays a number of multimedia formats including MP3, MPEG-4, QuickTime, Windows Media, and multiple versions of proprietary RealAudio and RealVideo formats.-History:...
, Winamp
Winamp
Winamp is a media player for Windows-based PCs and Android devices, written by Nullsoft, now a subsidiary of AOL. It is proprietary freeware/shareware, multi-format, extensible with plug-ins and skins, and is noted for its graphical sound visualization, playlist, and media library features.Winamp...
), WebKit
WebKit
WebKit is a layout engine designed to allow web browsers to render web pages. WebKit powers Google Chrome and Apple Safari and by October 2011 held over 33% of the browser market share between them. It is also used as the basis for the experimental browser included with the Amazon Kindle ebook...
(Chrome
Google Chrome
Google Chrome is a web browser developed by Google that uses the WebKit layout engine. It was first released as a beta version for Microsoft Windows on September 2, 2008, and the public stable release was on December 11, 2008. The name is derived from the graphical user interface frame, or...
, Safari
Safari (web browser)
Safari is a web browser developed by Apple Inc. and included with the Mac OS X and iOS operating systems. First released as a public beta on January 7, 2003 on the company's Mac OS X operating system, it became Apple's default browser beginning with Mac OS X v10.3 "Panther". Safari is also the...
). It includes an API reference that is auto-generated from Javadoc
Javadoc
Javadoc is a documentation generator from Sun Microsystems for generating API documentation in HTML format from Java source code.The "doc comments" format used by Javadoc is the de facto industry standard for documenting Java classes. Some IDEs, such as Netbeans and Eclipse automatically generate...
-like comments. Among the accompanying tool set is a comprehensive JavaScript parser that is an integral part of the automatic build process and is used to optimize, compress
Data compression
In computer science and information theory, data compression, source coding or bit-rate reduction is the process of encoding information using fewer bits than the original representation would use....
, link and deploy
Deployment
Deployment may refer to:* Deployment flowchart, a process mapping tool used to articulate the steps and stakeholders of a given process* System deployment, transforming a mechanical, electrical, or computer system from a packaged form to an operational state* Software deployment, all of the...
custom applications
Application software
Application software, also known as an application or an "app", is computer software designed to help the user to perform specific tasks. Examples include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with...
, and generate documentation. Internationalization and localization
Internationalization and localization
In computing, internationalization and localization are means of adapting computer software to different languages, regional differences and technical requirements of a target market...
of applications are supported. qooxdoo can be downloaded as a comprehensive SDK.
GUI toolkit
Despite being a pure JavaScript framework, qooxdoo is quite on par with GUI toolkits like Qt, Standard Widget ToolkitStandard Widget Toolkit
The Standard Widget Toolkit is a graphical widget toolkit for use with the Java platform. It was originally developed by IBM and is now maintained by the Eclipse Foundation in tandem with the Eclipse IDE...
(SWT) and others with respect to implementing user interface
User interface
The user interface, in the industrial design field of human–machine interaction, is the space where interaction between humans and machines occurs. The goal of interaction between a human and a machine at the user interface is effective operation and control of the machine, and feedback from the...
s. It offers a rich set of widgets that resemble elements of native desktop applications. Built-in support for keyboard navigation, focus and tab handling and drag & drop is provided. Dimensions can be specified as static, auto-sizing, stretching, percentage, weighted flex or min/max or even as combinations of these. All widgets are based on flexible layout managers, which are instrumental to many advanced layout abilities. Interface description is done programmatically in JavaScript for enhanced performance.
Defining the user interface needs no HTML
HTML
HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....
, and styling the interface needs no Cascading Style Sheets
Cascading Style Sheets
Cascading Style Sheets is a style sheet language used to describe the presentation semantics of a document written in a markup language...
(CSS). Simple appearance themes are used to style colors, icons and other visual properties; they also support runtime switching.
Object-oriented programming
qooxdoo uses a closed form to define new classes. The global class constructor takes two arguments, the name of the new class and a map that provides values for a set of predefined keys, like 'construct' (the constructor method hook), 'statics' (for static class attributes and methods), 'members' (for instance attributes and methods) and 'destruct' (for the destructor). This (possibly large) map represents the class definition. Classes can be derived from other classes using the 'extend' keyword.The following application skeleton gives an impression of how that works. The code will create a small application with a button that features a tooltip and opens an alert box when pressed. You can also run and edit this code in an online Playground:
Interfaces
Interface (computer science)
In the field of computer science, an interface is a tool and concept that refers to a point of interaction between components, and is applicable at the level of both hardware and software...
and mixin
Mixin
In object-oriented programming languages, a mixin is a class that provides a certain functionality to be inherited or just reused by a subclass, while not meant for instantiation , Mixins are synonymous functionally with abstract base classes...
s are defined and used in a similar fashion.
Ajax
While being a client-side and server-agnostic solution, the qooxdoo project does include optional RPCRemote procedure call
In computer science, a remote procedure call is an inter-process communication that allows a computer program to cause a subroutine or procedure to execute in another address space without the programmer explicitly coding the details for this remote interaction...
server implementations (currently in Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
, PHP
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...
, Perl
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...
and Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...
) to demonstrate client-server communication. An abstract transport layer supports queues, timeouts and implementations via XMLHttpRequest
XMLHttpRequest
XMLHttpRequest is an API available in web browser scripting languages such as JavaScript. It is used to send HTTP or HTTPS requests directly to a web server and load the server response data directly back into the script. The data might be received from the server as XML text or as plain text...
, Iframes and Scripts. Like the rest of qooxdoo, this layer relies on event-based programming to simplify asynchronous communication.
See also
- JavaScriptJavaScriptJavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....
- Ajax (programming)Ajax (programming)Ajax is a group of interrelated web development methods used on the client-side to create asynchronous web applications...
- Comparison of JavaScript frameworksComparison of JavaScript frameworks- Rationale :There are many JavaScript frameworks available. The intention of this comparison is to show some examples of JavaScript frameworks with their different features.- Table of Javascript Frameworks :- External links :* * * * * * * *...