GAE/J - Javascript

środa, 6 maja 2009

Moje pierwsze eksperymenty z App Engine, pomijając nacisk na serializację, były w miarę typowe.

Tym razem, chcę zaprezentować coś ciekawszego: Javascript po stronie serwera.

Możliwość pisania programu w całości (klient, serwer) w jednym języku, wydaje się być szczególnie atrakcyjna. Wystarczy pomyśleć o weryfikacji formularzy..

Przeglądając istniejące rozwiązania, początkowo nie potrafiłem znaleźć kodów źródłowych. Kluczem do zrozumienia tej zagadki jest stopień integracji Javascript i Java..
Podczas gdy w innych środowiskach, opartych o język C, konieczne jest pisanie mniej lub bardziej skomplikowanych wrapperów, języki skryptowe w JVM zazwyczaj posiadają bezpośredni dostęp do wszystkich klas i obiektów. To oznacza że próżno szukać frameworków Javascript pisanych w innym języku.

Narzędzia

Silnikiem Javascript działającym w JVM jest Mozilla Rhino Został on dołączony do Java SDK 1.6, jednak polecam ściągnięcie nowszej wersji.

Potrzebne rzeczy:

Rhino
Silnik Javascript. Do pracy wystarczy plik js.jar
JLine
Biblioteka będąca odpowiednikiem readline dla Java. Polecam dla własnej wygody..
Dokumentacja
Podana tu strona zawiera wszystkie potrzebne informacje. Jeśli ktoś zna Javascript, może z marszu zacząć pisać programy, w międzyczasie poznając API.

Start

Polecenie java -jar js.jar, pozwala rozpocząć zabawę z interpreterem. Shell uruchomiony w ten sposób nie jest komfortowy, dla tego proponuję odpowiednie skrypy:

rhino
Interaktywny shell - niezbędnik
rhinoc.js, rhinoc
Prosty frontend do kompilatora, który napisałem by uprościć sobie życie. Korzystając z niego możliwa jest kompilacja dowolengo pliku .js. Pierwszy komentarz może zawierać odpowiednie opcje kompilatora w formacie
package blablabla class NazwaKlasy extends KlasaNadrzędna implements Inne,Interfejsy
RhinoC_Task
Dodatkowo w repozytorium zamieściłem plugin do Mrówki (Apache Ant), ułatwiający kompilację Javascript. Niestety, tego kawałka kodu nie dało się napisać w Javascript. Plugin jest daleki od doskonałości ale działa, aby z niego skorzystać wystarczy odpowiednio zmodyfikować build.xml

Hello, world

Mając to można wreszcie napisać pierwszy servlet w Javascript: HelloJS.js

/**
 * package pl.szsz
 * class HelloJS extends javax.servlet.http.HttpServlet
 * */

function doGet(req, resp) {
        resp.getWriter().println("Hello, world");
}

Porównanie z HelloWorld.java, w zupełności wystarczy by wszystko zrozumieć.

To wszystko, powodzenia i miłej zabawy z Javascript.
Jeśli zaprezentowany tu kod okaże się przydatny, to proszę informację.

Etykiety: , , ,

Red 22:49

Komentarze

Prześlij komentarz

Archiwum

Subskrybuj

RSS / Atom