Lift on GAE/J



        Get Lift on
Google App Engine for Java.

       - KITAMURA Ryo
       2009/12/26(Fri.)
Self-Introduce

●
    KITAMURA Ryo(@RKTM)
    ●
        Wake up in Mie
    ●
        Work at Nagoya
●
    Programmer
    ●
        Ruby!!! Scala!!
        –   VB6, VB.NET, ASP.NET
Self-Introduce

●
    Love
    ●
        Trekking
Self-Introduce

●
    Love
    ●
        Photography
Talk about ...

●
    What's Scala?
●
    What's Lift?
●
    What's Google App Engine for
    Java(GAE/J)?
●
    How to get Lift on GAE/J
●
    Any Question?
What's Scala?

●
    Scala
    ●
        Is a general purpose programming
        language.
    ●
        stands for "scalable language”
        –   is designed to grow with the
            demands of its users.
What's Scala?

●
    Scala
    ●
        Runs on Java VM.
        –   You can call Scala from Java
        –   and you can call Java from Scala.
    ●
        whose compiler produces
        –   byte code that performs every
            bit as good as comparable Java
            code.
What's Scala?

●
    James Gosling:
    ●
        "Which Programming Language
        would you use *now* on top of
        JVM, except Java?"
    ●
        James Gosling:”Scala.”
           ●
               http://www.adam-
               bien.com/roller/abien/entry/java_net_javaone_
               which_programming
What's Scala?

●
    James Strachan:
    ●
        “I can honestly say if someone had
        shown me the Programming in Scala
        book by by Martin Odersky, Lex
        Spoon & Bill Venners back in 2003
        I'd probably have never created
        Groovy.”
           ●
               http://macstrac.blogspot.com/2009/04/scala-
               as-long-term-replacement-for.html
What's Scala?

●
    Charles Nutter:
      –   “Scala, it must be stated, is the
          current heir apparent to the
          Java throne. No other language
          on the JVM seems as capable of
          being a "replacement for Java"
          as Scala.”
             –   http://blog.headius.com/2009/04/future-
                 part-one.html
What's Scala?

●
    Scala
    ●
        Is a pure object-oriented language.
        –   Type inference
        –   Static typing
        –   Every value is an object.
             val a = 12345
             a.toString
What's Scala?

●
    Scala
    ●
        Is a pure object-oriented language.
        –   Classes and traits.
        –   Extend by subclassing and mixin-
            based composition.
What's Scala?

●
    Scala
    ●
        Is functional.
        –   Every function is a value.
             val func = (x : Int) => x + 1
             func(1)
What's Scala?

●
    Scala
    ●
        Is functional.
        –   Higher-order functions
        –   Nesting functions
        –   Currying
What's Scala?

●
    Scala
    ●
        Is functional.
        –   Case classes and built-in support
            for pattern matching
        –   Built-in support for XML
            processing!
What's Scala?

●
    XML Sample
    val html = <html><head>foo</head>
    <body>hoge</body></html>

    println(html)
Sir, More Scala,
                    Sir!!




  Join “Nagoya Scala”!!
http://groups.google.co.jp/group/NagoyaScala
What's Scala?

●
    More Info For Scala Beginners
      –   http://www.impressjapan.jp/boo
          ks/2745
      –   http://github.com/yuroyoro/scal
          a-hackathon
      –   http://itpro.nikkeibp.co.jp/articl
          e/COLUMN/20080613/307981/
          ?ST=develop
What's Lift?

●
    Lift
    ●
        Scala-based Web App F/W.
    ●
        has cherry-picked the best ideas
        from a number of other
        frameworks,
    ●
        while creating some novel ideas of
        its own.
What's Lift?

●
    Lift
    ●
        Full stack
        –   AP Srv, ORM
    ●
        Convention over Configuration
    ●
        MVC
    ●
        template system like Wicket
        –   built on the XML processing
            capabilities of Scala
What's Lift?

●
    Lift
    ●
        Runs on Java VM.
        –   Many Java libraries
    ●
        Powerful support for
        –   AJAX
        –   Commet
What's Lift?

●
    More Info about Lift
      –   http://codezine.jp/article/detail
          /4310
      –   http://codezine.jp/article/detail
          /4512
GAE/J?

●
    What is Google App Engine?
●
    What is Google App Engine for
    Java?
GAE/J?




●
    Tantack did it!
     –I   guess :)
Get Lift on GAE/J

●
    * Skip installing.
●
    Development environment
    ●
        Windows XP SP3
    ●
        Java version: 1.6.0_14
    ●
        Apache maven: 2.2.0
    ●
        Scala 2.7.7 final
    ●
        Appengine SDK: 1.3.0
Get Lift on GAE/J

●
    maven
    mvn archetype:generate -U
     -DarchetypeGroupId=net.liftweb
     -DarchetypeArtifactId=lift-archetype-
    blank
     -DarchetypeVersion=1.1-SNAPSHOT
     -DremoteRepositories=http://scala-
    tools.org/repo-snapshots
     -DgroupId=com.mylift -DartifactId=liftgaej
Get Lift on GAE/J

●
    Create
    –   src/main/webapp/WEB-
        INF/appengine-web.xml
Get Lift on GAE/J

●
    appengine-web.xml
    <?xml version="1.0" encoding="utf-8"?>
    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
     <application>liftgaej</application>
     <version>1</version>
     <system-properties>
       <property name="in.gae.j" value="true" />
     </system-properties>
     <sessions-enabled>true</sessions-enabled>
     <static-files>
       <exclude path="/**" />
     </static-files>
    </appengine-web-app>
Get Lift on GAE/J

●
    compile
mvn package
Get Lift on GAE/J

●
    Run on local machine
[SDK dir]dev_appserver.cmd
 target/liftgaej-1.0-SNAPSHOT
Get Lift on GAE/J

●
    Deploy!
[SDK dir]appcfg.cmd update
 target/liftgaej-1.0-SNAPSHOT
Get Lift on GAE/J

●
    Datastore?
    ●
        JPA sample:
           ●
               http://github.com/ymnk/lift-gae-jpa
    ●
        JDO sample:
           ●
               http://github.com/ymnk/lift-gae-jdo



        * I haven't tried them : (
References

●
    Scala
      –    http://www.scala-lang.org/
      –    http://dl.dropbox.com/u/261418
           /scala-hackathon/index.html
●
    Lift
      –    http://www.liftweb.com/
      –    http://groups.google.com/group/
           the-lift-book/files
References

●
    Lift on GAE/J
      –   http://d.hatena.ne.jp/yuroyoro/
          20090701/1246448458
Q?

●
    Do you have any Questions?
Done!

●
    Thank you!
●
    Join “ Nagoya Scala”
    ●
        @2010/01/22(Fri.)

20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』

  • 1.
    Lift on GAE/J Get Lift on Google App Engine for Java. - KITAMURA Ryo 2009/12/26(Fri.)
  • 2.
    Self-Introduce ● KITAMURA Ryo(@RKTM) ● Wake up in Mie ● Work at Nagoya ● Programmer ● Ruby!!! Scala!! – VB6, VB.NET, ASP.NET
  • 3.
    Self-Introduce ● Love ● Trekking
  • 4.
    Self-Introduce ● Love ● Photography
  • 5.
    Talk about ... ● What's Scala? ● What's Lift? ● What's Google App Engine for Java(GAE/J)? ● How to get Lift on GAE/J ● Any Question?
  • 6.
    What's Scala? ● Scala ● Is a general purpose programming language. ● stands for "scalable language” – is designed to grow with the demands of its users.
  • 7.
    What's Scala? ● Scala ● Runs on Java VM. – You can call Scala from Java – and you can call Java from Scala. ● whose compiler produces – byte code that performs every bit as good as comparable Java code.
  • 8.
    What's Scala? ● James Gosling: ● "Which Programming Language would you use *now* on top of JVM, except Java?" ● James Gosling:”Scala.” ● http://www.adam- bien.com/roller/abien/entry/java_net_javaone_ which_programming
  • 9.
    What's Scala? ● James Strachan: ● “I can honestly say if someone had shown me the Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy.” ● http://macstrac.blogspot.com/2009/04/scala- as-long-term-replacement-for.html
  • 10.
    What's Scala? ● Charles Nutter: – “Scala, it must be stated, is the current heir apparent to the Java throne. No other language on the JVM seems as capable of being a "replacement for Java" as Scala.” – http://blog.headius.com/2009/04/future- part-one.html
  • 11.
    What's Scala? ● Scala ● Is a pure object-oriented language. – Type inference – Static typing – Every value is an object. val a = 12345 a.toString
  • 12.
    What's Scala? ● Scala ● Is a pure object-oriented language. – Classes and traits. – Extend by subclassing and mixin- based composition.
  • 13.
    What's Scala? ● Scala ● Is functional. – Every function is a value. val func = (x : Int) => x + 1 func(1)
  • 14.
    What's Scala? ● Scala ● Is functional. – Higher-order functions – Nesting functions – Currying
  • 15.
    What's Scala? ● Scala ● Is functional. – Case classes and built-in support for pattern matching – Built-in support for XML processing!
  • 16.
    What's Scala? ● XML Sample val html = <html><head>foo</head> <body>hoge</body></html> println(html)
  • 17.
    Sir, More Scala, Sir!! Join “Nagoya Scala”!! http://groups.google.co.jp/group/NagoyaScala
  • 18.
    What's Scala? ● More Info For Scala Beginners – http://www.impressjapan.jp/boo ks/2745 – http://github.com/yuroyoro/scal a-hackathon – http://itpro.nikkeibp.co.jp/articl e/COLUMN/20080613/307981/ ?ST=develop
  • 19.
    What's Lift? ● Lift ● Scala-based Web App F/W. ● has cherry-picked the best ideas from a number of other frameworks, ● while creating some novel ideas of its own.
  • 20.
    What's Lift? ● Lift ● Full stack – AP Srv, ORM ● Convention over Configuration ● MVC ● template system like Wicket – built on the XML processing capabilities of Scala
  • 21.
    What's Lift? ● Lift ● Runs on Java VM. – Many Java libraries ● Powerful support for – AJAX – Commet
  • 22.
    What's Lift? ● More Info about Lift – http://codezine.jp/article/detail /4310 – http://codezine.jp/article/detail /4512
  • 23.
    GAE/J? ● What is Google App Engine? ● What is Google App Engine for Java?
  • 24.
    GAE/J? ● Tantack did it! –I guess :)
  • 25.
    Get Lift onGAE/J ● * Skip installing. ● Development environment ● Windows XP SP3 ● Java version: 1.6.0_14 ● Apache maven: 2.2.0 ● Scala 2.7.7 final ● Appengine SDK: 1.3.0
  • 26.
    Get Lift onGAE/J ● maven mvn archetype:generate -U -DarchetypeGroupId=net.liftweb -DarchetypeArtifactId=lift-archetype- blank -DarchetypeVersion=1.1-SNAPSHOT -DremoteRepositories=http://scala- tools.org/repo-snapshots -DgroupId=com.mylift -DartifactId=liftgaej
  • 27.
    Get Lift onGAE/J ● Create – src/main/webapp/WEB- INF/appengine-web.xml
  • 28.
    Get Lift onGAE/J ● appengine-web.xml <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>liftgaej</application> <version>1</version> <system-properties> <property name="in.gae.j" value="true" /> </system-properties> <sessions-enabled>true</sessions-enabled> <static-files> <exclude path="/**" /> </static-files> </appengine-web-app>
  • 29.
    Get Lift onGAE/J ● compile mvn package
  • 30.
    Get Lift onGAE/J ● Run on local machine [SDK dir]dev_appserver.cmd target/liftgaej-1.0-SNAPSHOT
  • 31.
    Get Lift onGAE/J ● Deploy! [SDK dir]appcfg.cmd update target/liftgaej-1.0-SNAPSHOT
  • 32.
    Get Lift onGAE/J ● Datastore? ● JPA sample: ● http://github.com/ymnk/lift-gae-jpa ● JDO sample: ● http://github.com/ymnk/lift-gae-jdo * I haven't tried them : (
  • 33.
    References ● Scala – http://www.scala-lang.org/ – http://dl.dropbox.com/u/261418 /scala-hackathon/index.html ● Lift – http://www.liftweb.com/ – http://groups.google.com/group/ the-lift-book/files
  • 34.
    References ● Lift on GAE/J – http://d.hatena.ne.jp/yuroyoro/ 20090701/1246448458
  • 35.
    Q? ● Do you have any Questions?
  • 36.
    Done! ● Thank you! ● Join “ Nagoya Scala” ● @2010/01/22(Fri.)