ikenna okpala: london java community: wicket and scala - 27/07/2010

15

Click here to load reader

Upload: skills-matter

Post on 28-Jan-2015

104 views

Category:

Documents


0 download

DESCRIPTION

Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010.

TRANSCRIPT

Page 1: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

Wicket  and  Scala  

Okpala Ikenna N. Jr. bit.ly/ikennaokpala

July 27th, 2010

+

“Lightening Talk” on Wicket and Scala

Page 2: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

+ An  Overview    

Page 3: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

What  is  

?

Page 4: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

• Invented by Martin Odersky. • Pizza Into Java http://bit.ly/cudrM4 • Then GJ • Started 2001, First release 2003 • Scala Hybrid (Functional and OOP) Programming Language • Statically typed. • Every value an object (var a = 2) • Every operation a method call ( 1 + (2)) • Compiles to java byte code and runs on the JVM •  println (“Hello, World”) • Variable with var or val… encouraging immutability. • Method with def keyword •  Traits instead of interface • Pattern matching (eg: exceptions) • High Order Function • XML easier parsing • Domain Specific Language(DSL)

Page 5: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

object Ljc extends Application{ ---------------------- 1 println("Hello, London Java Community!”) }

val group = “London Java Community” ------------- 2 def ljc (group: String ) :Unit = println(group)

List(3.5, 2.5, 1.5) map(_* 2) -------------3

Basic Scala Code on REPL:

Page 6: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

trait LjcTrait { ---------------- 4 def doSomething() { println(“Which Group is this: “)} def computeSomething = “London Java Community” .length * 10 } class Ljc extends LjcTrait {-----------5 override def toString = “London Java Community” override def dosomething (){ println(“Which Group is this: “+toString+”!”) }

Basic Scala Code on REPL:

Page 7: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

“Apache Wicket” is component based Java web framework, originally created Jonathan Locke In 2004.

Page 8: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

- Wicket encourages total separation between plain Java code and HTML, with the help of meaningful abstractions. (i.e. allows the java code to handle all the logic)

- Wicket provides excellent support and management of server side state transparently.

- Very little XML configuration is required to get your web application going. this is not the case when compared to some other frameworks that are largely dependent on XML config kind of files.

- And finally, it does not have any special mark up that you would have to learn afresh (i.e. just HTML tags are marked with a simple and very unnoticeable “wicket:id” tag, and you are done).

Why Wicket ?

Page 9: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

+mvn archetype:generate -B -DarchetypeCatalog=http://legup.googlecode.com/svn/repo/archetype-catalog.xml -DarchetypeArtifactId=LegUpScalaWicketQuickStart-archetype -DarchetypeGroupId=com.jweekend.learnscala -DarchetypeVersion=0.8.3 -DgroupId=com.mycompany -DartifactId=mycompany -Dversion=1.0-SNAPSHOT -Dpackage=com.mycompany

Scala Wicket maven archetype @ this address: http://jweekend.co.uk/dev/LegUp

Page 10: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

+class LegUp extends WebApplication { def getHomePage = classOf[HomePage] } class HomePage extends WebPage { var name = "Hello!" val form = new Form[String]("form") add(form) form.add(new TextField[String]("nameField", new ToySafeModel[String](name, {null; name = _}))) form.add(new Label("nameLabel", new ToySafeModel[String](name , null))) } class ToySafeModel[T](accessor: => T, mutator: T => Unit) extends IModel[T]() { override def getObject() = accessor override def setObject(t: T) = mutator(t) override def detach() = Nil }

Basic Wicket and Scala Code:

Page 11: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

+<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" http://java.sun.com/dtd/web-app_2_3.dtd> <web-app> <display-name>Hello, Wicket World!</display-name> <filter><filter-name>HelloWicketWorld</filter-name> <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param><param-name>applicationClassName</param-name> <param-value>com.mycompany.LegUp</param-value> </init-param> </filter> <filter-mapping><filter-name>HelloWicketWorld</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>

Basic Wicket and Scala Code:

Page 12: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

+<html> <body> <p><strong><a href="http://jweekend.com/dev/LegUp">LegUp</a>: <a href="http://wicket.apache.org">Wicket</a> on <a href="http://scala-lang.org">Scala</a></strong></p> <form wicket:id="form"> <label for="nameField">How do you greet people?</label> <input wicket:id="nameField" id="nameField" /> <input type="submit" value="Submit"/> <p wicket:id="nameLabel"></p> </form> </body> </html>

Basic Wicket and Scala Code:

Page 13: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

+Basic Wicket and Scala Code:

Page 14: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

+IDE Support

 Eclipse and a lot more  Ensime for scala on emacs  IntelliJ IDEA  Netbeans  JRebel

Page 15: Ikenna Okpala: London Java Community: Wicket and Scala - 27/07/2010

THANKS