Qooxdoo

Qooxdoo to w zupełności uniwersalny framework stworzony dla JavaScript. Może być udostępniany na licencji GNU Lesser General Public License (LGPL) oraz na Public License EPL (EPL). Jest frameworkiem zorientowanym obiektowo, który umożliwia programistom tworzenie aplikacji dla wielu platform. Oznacza to, że niezależnie od wybranej platformy docelowej - w jej rdzeniu wszystkie warianty qooxdoo używają tego samego modelu programowania obiektowego, który będzie odszukany w komponencie Core. Zapewnia to spójność pomiędzy projektami i ułatwia ponowne wczytywanie kodu. Ten model programowania pozwala na tworzenie aplikacji interaktwnych (RIA), lekkich aplikacji sieciowych, aplikacji działających poza przeglądarką ale także natywnych aplikacji na urządzeniach mobilnych. Posiada mnóstwo narzędzi do rozwijania i wdrażania tych aplikacji wykorzystując takie technologie sieciowe jak CSS3 czy HTML5. Rdzeń qooxdo opiera się na klasach i wykorzystuje funkcje JavaScriptu. Przede wszystkim opiera się na przestrzeniach nazw tak by pozwolić na łatwą integrację z innymi bibliotekami oraz istniejącym kodem użytkownika.

Mimo że jest to czysty framework JavaScript, jest zgodny z zestawami narzędzi GUI (Graphical user interface- graficzny interfejs użytkownika), między innymi z Qt (zestaw przenośnych bibliotek i narzędzi programistycznych dla języków Java, C++ czy QML) czy SWT (Standard Widget Toolkit). Dodatkowo qooxdoo oferuje zestaw widżetów, które są oparte na zaawansowanych i elastycznych menadżerach layoutów. Oprócz tego zapewnia pełną obsługę nawigacji, klawiatury czy ustawiania ostrości. Ciekawym aspektem jest to, że programiści właściwie nie muszą znać CSS aby nadać mu styl. Proste do skonfigurowania motywy, kolory, czcionki czy ikonki umożliwiają stworzenie pełnowartościowej stylistyki.

Qooxdoo posługuje się zamkniętą formą tak by definiować nowe klasy. Jednym z rozwiązań po stronie klienta i serwer-agnostic jest to, że framework ten zawiera opcjonalne implementacje serwerów RPC (aktualnie w językach: PHP, Java, Python czy Perl). Ma to na celu wykazanie komunikacji z klientem i serwerem. Warstwa abstrakcyjna w qooxdoo polega na programowaniu zdarzeń tak by uprościć komunikację asynchroniczną. Dzieje się to dzięki obsłudze kolejek, limitów czasu oraz implementacji za pośrednictwem XMLHttpRequest (jest to interfejs API w postaci obiektu, jego metody przesyłają dane pomiędzy serwerem a przeglądarką), Iframes oaz skryptów. Oprócz tego framework wyposażony jest w bogaty edytor tekstu, narzędzie do generowania HTML czy magazyn offline. Dodatkowo posiada wsparcie dla wielu przeglądarek, między innymi dla: Chrome 2+, Internet Explorer 6+, Opera 9+, Mozilla Firefox 2+ oraz Safari 3+.

Przykładowy kod w qooxdoo

Qooxdoo Przykład #1

  qx.Class.define("mobiletweets.page.Tweets",
  {
    extend : qx.ui.mobile.page.NavigationPage,
  
    construct : function() {
      this.base(arguments);
      this.set({
        title : "",
        showBackButton : true,
        backButtonText : "Back"
      });
    }
  });
  
Qooxdoo Przykład #2

  members : {
    _initialize : function() {
      this.base(arguments);
      /** Create a new button instance and set the title of the button to "Show" */
      var button = new qx.ui.mobile.form.Button("Show");
      /** Add the "tap" listener to the button */
      button.addListener("tap", this._onTap, this);
      /** Add the button the content of the page */
      this.getContent().add(button);
    }
  }