Archiwum Szsz.pl: maja 2009
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: gae, javascript, programowanie, R
Red 22:49