# qooxdoo

Home » Manual (v2.0.1) » qx.Server » Server Overview

# Server Overview

This page is an overview of qooxdoo's server capabilities. It shows which parts of qooxdoo can be used in a server environment or comparable scenario. It also serves as an introduction to all interested in using qooxdoo on a JavaScript server environment.

## Included Features

This listing shows the core features of the qooxdoo qx.Server package. If you build your own package with the skeleton way of using qooxdoo, the feature set might be extended depending on your application code.

- Object Orientation
    - Classes
    - Mixins
    - Interfaces
    - Properties

- Events

- Single Value Binding

Most of the features can be found in qooxdoo's core layer and should be familiar to qooxdoo developers.

## Supported Runtimes

We currently support two types of runtimes:

- node.js
- Rhino

## Installation

See Requirements for details on how to obtain and install qooxdoo qx.Server.

## Basic Example

The following example shows how to use the qooxdoo qx.Server package in a node environment, having installed the package via npm.

    var qx = require('qooxdoo');

    // create anmial class
    qx.Class.define("my.Animal", {
      extend : qx.core.Object,
      properties : {
        legs : {init: 4}
      }
    });

    // create dog class
    qx.Class.define("my.Dog", {
      extend : my.Animal,
      members : {
        bark : function() {
          console.log("ARF! I have " + this.getLegs() + " legs!");
        }
      }
    });

    var dog = new my.Dog();
    dog.bark();

Only two lines in this example are specific to the server environment: The first one, where you include the qooxdoo package and the implementation of the `bark` function, which uses node's `console` object. To run the example in Rhino, simply change the first line to something like this:

>     load(["path/to/qx-oo-2.0.1.js"]);

and replace `console.log` with `print`.

The rest of the code is plain qooxdoo-style JavaScript which can be run in a browser, too. For more information on that topic, take a look at the documentation about Object Orientation.

## Additional Scenarios

The qooxdoo qx.Server package does not contain any server-dependent code so it can also be used in a browser e.g. to have the features described above without the need to use the rest of qooxdoo. Another interesting scenario might be to use the package in a web worker, which is also a DOM-less environment.