Scalalla helposti Googlen App Engine -pilveen



Scala on fiksu ohjelmointikieli ja Google App Engine on helppo tapa pyörittää web-sovelluksia pilvessä. Siitä hyvästä että Scala on Javan virtuaalikoneelle kääntyvä ohjelmointikieli se toimii mainiosti myös Google App Enginen Java-ympäristössä.

Miten Scalasta utelias pääsee nopeimmin kokeilemaan koodiaansa Googlen App Engine -pilvessä? Alla on minimaalinen projekti jonka avulla saa Scalassa toteutetun Hello World -tyylisen web-sovelluksen nopeasti pilveen. Ainoa käsin asennettava riippuvuus on Apache Maven – muut riippuvuudet kuin Scala ja Google App Enginen tarvittavat kirjastot haetaan automaattisesti verkosta Mavenin avulla. Toimi seuraavasti, esimerkeissä olettaen Ubuntu-ympäristöä:

$ sudo aptitude install maven2 # Asenna Apache Maven
$ tar xzf example.tar.gz       # Pura esimerkkikoodi
$ cd example
$ mvn gae:unpack               # Pura App Engine SDK

Jatkossa sovellusta kehitetään ja julkaistaan seuraavasti:

$ vi src/main/scala/ExampleServlet.scala
$ mvn gae:deploy               # Vie sovellus App Engineen

Yllä mainitut komennot kääntävät ja vievät siis sovelluksen App Engineen asti jokaisen muutoksen jälkeen. Julkaiseminen App Engineen vaatii App Engine -tilin, jonka kuitenkin saa hankittua ilmaiseksi.

Jos haluaa vain kokeilla sovellusta paikallisessa koneessa App Engine -simulaattorissa ilman App Engine -tilin hankkimista se onnistuu seuraavalla komennolla:

$ mvn gae:run                  # http://localhost:8080/

Siitä vaan kokeilemaan!

Ja mitä tiedostoja tämä minimaalinen App Engine -projekti sitten sisältää?

  • pom.xml – Yksinkertaisen Maven-projektin määrittely jossa on riippuvuudet App Engine -kirjastoihin sekä Scala-kääntäjään.
  • src/main/scala/ExampleServlet.scala – Hello World -tyylinen yksinkertainen Java Servlet toteutettu Scala-ohjelmointikielessä.
    import javax.servlet.http._
    
    class ExampleServlet extends HttpServlet {
      override def doGet(request: HttpServletRequest,
                         response: HttpServletResponse) =
        response.getWriter().println(<html>Hello World!</html>)
    }
  • src/main/webapp/WEB-INF/web.xml – Yksinkertaisen web-sovelluksen määrittely jossa yllä mainittu esimerkkiservlet vastaa pyyntöihin kaikeissa URL:eissa.
    <?xml version="1.0" encoding="utf-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
      <servlet>
        <servlet-name>ExampleServlet</servlet-name>
        <servlet-class>ExampleServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>ExampleServlet</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    </web-app>
  • src/main/webapp/WEB-INF/appengine-web.xml – Määrittelee App Engine -sovelluksen ominaisuudet, kuin sovelluksen nimi ja versio.
    <?xml version="1.0" encoding="utf-8"?>
    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
      <application>example</application>
      <version>1</version>
    </appengine-web-app>

Siinä kaikki, enempää ei tarvita.

Tämän artikkelin on kirjoittanut Markus Holmberg  ja sitä ovat sittemmin muokanneet muut Codenton työntekijät.

Yksi kommentti artikkeliin ”Scalalla helposti Googlen App Engine -pilveen

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *