Scala for Sling. Building RESTful Web Applications with Scala for Sling. LOGO SPEAKER S COMPANY

Size: px
Start display at page:

Download "Scala for Sling. Building RESTful Web Applications with Scala for Sling. LOGO SPEAKER S COMPANY"

Transcription

1 Scala for Sling Building RESTful Web Applications with Scala for Sling Michael Dürig Day Software AG LOGO SPEAKER S COMPANY

2 AGENDA 2 > Introduction > What is Apache Sling? > What is Scala? > Scala for Sling > Summary and questions

3 Introduction 3 > Michael Dürig Developer for Day Software > Michael Marth Technology Evangelist for Day Software

4 Overview 4 > What to expect Proof of concept Experimental code > What not to expect Product showcase, tutorial Live coding (demo code available from > Prerequisites Basic understanding of Java content repositories (JCR) Prior exposure to Scala a plus

5 AGENDA 5 > Introduction > What is Apache Sling? > What is Scala? > Scala for Sling > Summary and questions

6 Sling builds on JCR 6 > Web application framework for JCR JCR (JSR-170/JSR-283): Apache Jackrabbit OSGi-based: Apache Felix > Scriptable application layer for JCR JSR-223: Scripting for the Java platform > REST over JCR Content resolution for mapping request URLs to JCR nodes Servlet resolution for mapping JCR nodes to request handlers (i.e. scripts)

7 URL decomposition 7 GET /forum/scala4sling.thread.html

8 URL decomposition 8 GET /forum/scala4sling.thread.html Repository

9 URL decomposition 9 GET /forum/scala4sling.thread.html Repository Repository path

10 URL decomposition 10 GET /forum/scala4sling.thread.html Repository Repository path Application selection

11 URL decomposition 11 GET /forum/scala4sling.thread.html Repository Repository path Script selection Application selection

12 AGENDA 12 > Introduction > What is Apache Sling? > What is Scala? > Scala for Sling > Summary and questions

13 Scala builds on the JVM 13 > Multi-paradigm language for the JVM Conceived by Martin Odersky and his group (EPFL, Lausanne) Fully interoperable with Java IDE plugins for Eclipse and IntelliJ IDEA > Concise, elegant, and type safe Touch and feel of a genuine scripting language Smoothly integrates object oriented and functional features Great for creating DSLs

14 Type inference: the scripting touch 14 > Values val x = 42 // x has type Int val s = x.tostring // s has type String val q = s.substring(s) // type mismatch; found String, required Int > Type parameters class Pair[S, T](s: S, t: T) def makepair[s, T](s: S, t: T) = new Pair(s, t) val p = makepair(42.0, "Scala") // p has type Pair[Double, String]

15 Type inference: the scripting touch 15 > Values val x = 42 // x has type Int val s = x.tostring // s has type String val q = s.substring(s) class Pair<S, // T> type { mismatch; found String, required Int public final S s; public final T t; > Type parameters public Pair(S s, T t) { super(); class Pair[S, T](s: this.s S, t: = T) s; def makepair[s, T](s: this.t S, t: = t; T) = new Pair(s, t) val p = makepair(42.0, "Scala") // p has type Pair[Double, String] public <S, T> Pair<S, T> makepair(s s, T t) { return new Pair<S, T>(s, t); public final Pair<Double, String> p = makepair(42.0, "Scala");

16 XML <pre>literals</pre> 16 > HTML? Scala! val title = "Hello Jazoon 09" println { <html> <body> <h1>{ title </h1> { (for (c <- title) yield c).mkstring(" ") </body> </html>

17 XML <pre>literals</pre> 17 > HTML? Scala! val title = "Hello Jazoon 09" println { <html> println { <body> Elem(null, "html", Null, TopScope, <h1>{ title Elem(null, </h1> "body", Null, TopScope, { Elem(null, "h1", Null, TopScope, (for (c <- title) Text(title) yield c) </body> </html>.mkstring(" ), ") ) ) Text( (for (c <- title) yield c).mkstring(" ") )

18 XML <pre>literals</pre> 18 > HTML? Scala! val title = "Hello Jazoon 09" println { <html> <body> <h1>{ title </h1> { (for (c <- title) yield c).mkstring(" ") </body> </html> <html> <body> <h1>hello Jazoon 09</h1> H e l l o J a z o o n 0 9 </body> </html>

19 Implicits: pimp my library 19 > Implicit conversion implicit def translate(s: String) = new { def togerman = s match { case "Example" => "Beispiel" //... case _ => throw new Exception("No translation for " + s) val german = "Example".toGerman > Déjà vu? Similar to extension methods in C# Similar to conversion constructors in C++ Equivalent to type classes in Haskell

20 Objects are functions are objects 20 > Object as function object Twice { def apply(n: Int) = 2*n println(twice(21)) // prints 42 > Function as object def twice(n: Int) = 2*n val doubler = twice(_) println(doubler(21)) // prints 42

21 AGENDA 21 > Introduction > What is Apache Sling? > What is Scala? > Scala for Sling > Summary and questions

22 Demo application: Forum 22

23 Forum: html.scala 23 package forum { object html { import html_bindings._ //... println { <html> <body> Welcome to the { currentnode("name") forum { Calendar.getInstance.getTime { ThreadNewForm.render { ThreadOverview.render(currentNode) </body> </html>

24 Forum: html.scala 24 package forum { object html { import html_bindings._ //... GET /forum.html println { <html> <body> Welcome to the { currentnode("name") forum { Calendar.getInstance.getTime { ThreadNewForm.render { ThreadOverview.render(currentNode) </body> </html>

25 Forum: html.scala 25 package forum { object html { import html_bindings._ //... Put Sling variables into scope (currentnode, request, response, etc.) println { <html> <body> Welcome to the { currentnode("name") forum { Calendar.getInstance.getTime { ThreadNewForm.render { ThreadOverview.render(currentNode) </body> </html>

26 Forum: html.scala 26 package forum { object html { import html_bindings._ /** //... * Print out an object followed by a new line character. x the object to print. */ println { def println(x: Any): Unit = out.println(x) <html> <body> Welcome to the { currentnode("name") forum { Calendar.getInstance.getTime { ThreadNewForm.render { ThreadOverview.render(currentNode) </body> </html>

27 Forum: html.scala 27 package forum { object html { import html_bindings._ /** //... * Print out an object followed by a new line character. x the object to print. */ println { def println(x: Any): Unit = out.println(x) <html> <body> Welcome to the { currentnode("name") forum { Calendar.getInstance.getTime { ThreadNewForm.render { ThreadOverview.render(currentNode) </body> </html>

28 Forum: html.scala 28 package forum { object html { import html_bindings._ // implicit... def rich(node: Node) = new { def apply(property: String) = node.getproperty(property).getstring... println { <html> <body> Welcome to the { currentnode("name") forum { Calendar.getInstance.getTime { ThreadNewForm.render { ThreadOverview.render(currentNode) </body> </html>

29 Forum: thread overview 29 object ThreadOverview { // imports omitted def render(node: Node) = emptyunless(node.hasnodes) { <h1>threads</h1> <ul>{ node.nodes map tolistitem </ul> private def tolistitem(node: Node) = { <li> { node("subject") (<a href={ node.path + ".thread.html">show thread</a>) </li>

30 Forum: thread overview 30 object ThreadOverview { def emptyunless(condition: Boolean)(block: => NodeSeq) = // imports omitted if (condition) block else Empty def render(node: Node) = emptyunless(node.hasnodes) { <h1>threads</h1> <ul>{ node.nodes map tolistitem </ul> private def tolistitem(node: Node) = { <li> { node("subject") (<a href={ node.path + ".thread.html">show thread</a>) </li>

31 Forum: form data 31 object ThreadNewForm { def render = { <h1>start a new thread</h1> <form action="/content/forum/*" method="post" enctype="multipart/form-data"> subject <input name="subject" type="text" /> <textarea name="body"></textarea> logo <input name="logo type="file" /> <input type="submit" value="save" /> <input name=":redirect" value="/content/forum.html" type="hidden" /> </form>

32 Forum: form data 32 object ThreadNewForm { def render = { <h1>start a new thread</h1> <form action="/content/forum/*" method="post" enctype="multipart/form-data"> subject <input name="subject" type="text" /> <textarea name="body"></textarea> logo <input name="logo type="file" /> <input type="submit" value="save" /> <input name=":redirect" value="/content/forum.html" type="hidden" /> </form>

33 Forum: form data 33 object ThreadNewForm { def render = { <h1>start a new thread</h1> <form action="/content/forum/*" method="post" enctype="multipart/form-data"> POST should add new child node to /content/forum/ subject <input name="subject" type="text" /> <textarea name="body"></textarea> logo <input name="logo type="file" /> <input type="submit" value="save" /> <input name=":redirect" value="/content/forum.html" type="hidden" /> </form>

34 Forum: form data 34 object ThreadNewForm { def render = { <h1>start a new thread</h1> <form action="/content/forum/*" method="post" enctype="multipart/form-data"> String, POST should add new child node to /content/forum/... with properties subject and body of subject <input name="subject" type="text" /> <textarea name="body"></textarea> logo <input name="logo type="file" /> <input type="submit" value="save" /> <input name=":redirect" value="/content/forum.html" type="hidden" /> </form>

35 Forum: form data 35 object ThreadNewForm { def render = { <h1>start a new thread</h1> <form action="/content/forum/*" method="post" enctype="multipart/form-data"> String, POST should add new child node to /content/forum/... with properties subject and body of subject <input name="subject" type="text" />... and a child node logo of type nt:file. <textarea name="body"></textarea> logo <input name="logo type="file" /> <input type="submit" value="save" /> <input name=":redirect" value="/content/forum.html" type="hidden" /> </form>

36 Forum: form data 36 object ThreadNewForm { def render = { <h1>start a new thread</h1> <form action="/content/forum/*" method="post" enctype="multipart/form-data"> subject <input name="subject" type="text" /> <textarea name="body"></textarea> logo <input name="logo type="file" /> <input type="submit" value="save" /> <input name=":redirect" value="/content/forum.html" type="hidden" /> </form> Redirect to forum.html on success

37 Extracting form fields 37 > Sling post servlet No action required: used by default Creates nodes and properties for form fields Tweaked with hidden form fields Sensible defaults > Custom POST request handler Write a script POST.scala Process form fields in code Full control over request processing

38 Forum: custom POST request handler package forum { object POST { import POST_Bindings._ // val node = addnodes(session.root, newpath) node.setproperty("body", request("body")) node.setproperty( subject", request( subject")) if (request("logo")!= "") { val logonode = node.addnode("logo", "nt:file") val contentnode = logonode.addnode("jcr:content", "nt:resource") val logo = request.getrequestparameter("logo") contentnode.setproperty("jcr:lastmodified", Calendar.getInstance) contentnode.setproperty("jcr:mimetype", logo.getcontenttype) contentnode.setproperty("jcr:data", logo.getinputstream) session.save response.sendredirect(request(":redirect"))

39 Forum: custom POST request handler package forum { object POST { import POST_Bindings._ //... POST /forum.html 39 val node = addnodes(session.root, newpath) node.setproperty("body", request("body")) node.setproperty( subject", request( subject")) if (request("logo")!= "") { val logonode = node.addnode("logo", "nt:file") val contentnode = logonode.addnode("jcr:content", "nt:resource") val logo = request.getrequestparameter("logo") contentnode.setproperty("jcr:lastmodified", Calendar.getInstance) contentnode.setproperty("jcr:mimetype", logo.getcontenttype) contentnode.setproperty("jcr:data", logo.getinputstream) session.save response.sendredirect(request(":redirect"))

40 Forum: custom POST request handler package forum { object POST { import POST_Bindings._ //... Add node for this post 40 val node = addnodes(session.root, newpath) node.setproperty("body", request("body")) node.setproperty( subject", request( subject")) if (request("logo")!= "") { val logonode = node.addnode("logo", "nt:file") val contentnode = logonode.addnode("jcr:content", "nt:resource") val logo = request.getrequestparameter("logo") contentnode.setproperty("jcr:lastmodified", Calendar.getInstance) contentnode.setproperty("jcr:mimetype", logo.getcontenttype) contentnode.setproperty("jcr:data", logo.getinputstream) session.save response.sendredirect(request(":redirect"))

41 Forum: custom POST request handler package forum { object POST { import POST_Bindings._ //... Set properties for body and subject val node = addnodes(session.root, newpath) 41 node.setproperty("body", request("body")) node.setproperty( subject", request( subject")) if (request("logo")!= "") { val logonode = node.addnode("logo", "nt:file") val contentnode = logonode.addnode("jcr:content", "nt:resource") val logo = request.getrequestparameter("logo") contentnode.setproperty("jcr:lastmodified", Calendar.getInstance) contentnode.setproperty("jcr:mimetype", logo.getcontenttype) contentnode.setproperty("jcr:data", logo.getinputstream) session.save response.sendredirect(request(":redirect"))

42 Forum: custom POST request handler package forum { object POST { import POST_Bindings._ // val node = addnodes(session.root, newpath) node.setproperty("body", request("body")) node.setproperty( subject", request( subject")) if (request("logo")!= "") { val logonode = node.addnode("logo", "nt:file") val contentnode = logonode.addnode("jcr:content", "nt:resource") val logo = request.getrequestparameter("logo") contentnode.setproperty("jcr:lastmodified", Calendar.getInstance) contentnode.setproperty("jcr:mimetype", logo.getcontenttype) contentnode.setproperty("jcr:data", logo.getinputstream) session.save response.sendredirect(request(":redirect")) If the request contains a logo

43 Forum: custom POST request handler package forum { object POST { import POST_Bindings._ // val node = addnodes(session.root, newpath) node.setproperty("body", request("body")) node.setproperty( subject", request( subject")) if (request("logo")!= "") { val logonode = node.addnode("logo", "nt:file") val contentnode = logonode.addnode("jcr:content", "nt:resource") val logo = request.getrequestparameter("logo") contentnode.setproperty("jcr:lastmodified", Calendar.getInstance) contentnode.setproperty("jcr:mimetype", logo.getcontenttype) contentnode.setproperty("jcr:data", logo.getinputstream) session.save response.sendredirect(request(":redirect")) If the request contains a logo... add a child node logo of type nt:file

44 Forum: custom POST request handler package forum { object POST { import POST_Bindings._ // val node = addnodes(session.root, newpath) node.setproperty("body", request("body")) node.setproperty( subject", request( subject")) if (request("logo")!= "") { val logonode = node.addnode("logo", "nt:file") val contentnode = logonode.addnode("jcr:content", "nt:resource") jcr:mimetype and jcr:data val logo = request.getrequestparameter("logo") contentnode.setproperty("jcr:lastmodified", Calendar.getInstance) contentnode.setproperty("jcr:mimetype", logo.getcontenttype) contentnode.setproperty("jcr:data", logo.getinputstream) session.save response.sendredirect(request(":redirect")) If the request contains a logo... add a child node logo of type nt:file... and set properties jcr:lastmodified,

45 Forum: custom POST request handler package forum { object POST { import POST_Bindings._ // val node = addnodes(session.root, newpath) node.setproperty("body", request("body")) node.setproperty( subject", request( subject")) if (request("logo")!= "") { val logonode = node.addnode("logo", "nt:file") val contentnode = logonode.addnode("jcr:content", "nt:resource") val logo = request.getrequestparameter("logo") contentnode.setproperty("jcr:lastmodified", Calendar.getInstance) contentnode.setproperty("jcr:mimetype", logo.getcontenttype) contentnode.setproperty("jcr:data", Save changes and send logo.getinputstream) redirect session.save response.sendredirect(request(":redirect"))

46 Forum: unit testing 46 object html_bindings extends MockBindings { override def currentnode = new MockNode with MockItem override def request = new MockSlingHttpServletRequest with MockHttpServletRequest with MockServletRequest object Test extends Application { forum.html

47 Forum: unit testing 47 object html_bindings extends MockBindings { override def currentnode = new MockNode with MockItem override def request = new MockSlingHttpServletRequest with MockHttpServletRequest with MockServletRequest object Test extends Application { forum.html

48 Forum: unit testing 48 object html_bindings extends MockBindings { override def currentnode = new MockNode with MockItem override def request = new MockSlingHttpServletRequest with MockHttpServletRequest with MockServletRequest object Test extends Application { forum.html

49 Forum: unit testing object html_bindings </head> extends MockBindings { override def currentnode = new MockNode with MockItem override def <p>search request all = threads: new MockSlingHttpServletRequest object Test extends Application { forum.html <html> <head> <link href="/apps/forum/static/blue.css" rel="stylesheet"></link> <body> <div id="header"> Welcome to the forum Wed Jun 17 17:12:48 CEST 2009 </div> <div id="menu"> <form action="/content/forum.search.html" enctype="multipart/form-data" with MockHttpServletRequest method="get"> <input value="" type="text" size="10" name="query"></input> with MockServletRequest <input value="search" type="submit"></input> </form> </p> </div> <div id="content"> <h1>start a new thread</h1> <span id="inp"> <form action="/content/forum/*" enctype="multipart/form-data" method="post"> <p>subject</p> <p><input type="text" name="subject"></input></p> <p><textarea name="body"></textarea></p> <p>logo</p> <p><input type="file" name="logo"></input></p> <p><input value="save" type="submit"></input></p> <input value="/content/forum.html" type="hidden" name=":redirect"></input> </form> </span> </div> </body> </html> 49

50 AGENDA 50 > Introduction > What is Apache Sling? > What is Scala? > Scala for Sling > Summary and questions

51 Conclusion 51 > Advantages Scala! No language boundary Tool support (i.e. IDE, ScalaDoc, safe refactoring, unit testing) > Disadvantages IDE support shaky, improves quickly though Not much refactoring support as of today

52 Conclusion 52 > Advantages Scala! No language boundary Tool support (i.e. IDE, ScalaDoc, safe refactoring, unit testing) > Disadvantages IDE support shaky, improves quickly though Not much refactoring support as of today

53 Conclusion 53 > Advantages Scala! No language boundary Tool support (i.e. IDE, ScalaDoc, safe refactoring, unit testing) <p>welcome to { currentnode("name") forum</p> { Calendar.getInstance.getTime { ThreadNewForm.render { ThreadOverview.render(currentNode) > Disadvantages IDE support shaky, improves quickly though Not much refactoring support as of today

54 Conclusion 54 > Advantages Scala! No language boundary Tool support (i.e. IDE, ScalaDoc, safe refactoring, unit testing) > Disadvantages IDE support shaky, improves quickly though Not much refactoring support as of today

55 Conclusion 55 > Advantages Scala! No language boundary Tool support (i.e. IDE, ScalaDoc, safe refactoring, unit testing) > Disadvantages IDE support shaky, improves quickly though Not much refactoring support as of today

56 Conclusion 56 > Advantages Scala! No language boundary Tool support (i.e. IDE, ScalaDoc, safe refactoring, unit testing) > Disadvantages IDE support shaky, improves quickly though Not much refactoring support as of today object html_bindings { def currentnode = new MockNode... object Test extends Application { forum.html

57 Conclusion 57 > Advantages Scala! No language boundary Tool support (i.e. IDE, ScalaDoc, safe refactoring, unit testing) > Disadvantages IDE support shaky, improves quickly though Not much refactoring support as of today

58 Summary 58 > Apache Sling Great for building RESTful web applications Pluggable scripting support (JSR-223) > Scala Great for scripting Supports «on the fly» templates through XML literals Easy unit testing

59 Michael Dürig Michael Marth Day Software AG References: Scala for Sling: The Scala programming language: Apache Sling: LOGO SPEAKER S COMPANY

Rapid JCR applications development with Apache Sling

Rapid JCR applications development with Apache Sling Rapid JCR applications development with Apache Sling Bertrand Delacrétaz Senior R&D Developer, Day Software, www.day.com Member and Director, ASF bdelacretaz@apache.org blog at http://grep.codeconsult.ch

More information

APACHE SLING & FRIENDS TECH MEETUP BERLIN, SEPTEMBER Sling Rookie Session. Sebastian Schlick, pro!vision GmbH

APACHE SLING & FRIENDS TECH MEETUP BERLIN, SEPTEMBER Sling Rookie Session. Sebastian Schlick, pro!vision GmbH APACHE SLING & FRIENDS TECH MEETUP BERLIN, 22-24 SEPTEMBER 2014 Sling Rookie Session Sebastian Schlick, pro!vision GmbH About the Speaker CQ5/AEM6 Developer Apache Sling User Lead dev pro!vision GmbH http://www.pro-vision.de

More information

Rapid JCR applications development with Apache Sling

Rapid JCR applications development with Apache Sling Rapid JCR applications development with Apache Sling Bertrand Delacrétaz, Senior R&D Developer, Day Software bdelacretaz@apache.org - grep.codeconsult.ch Slides revision: 2008-11-05 Slides theme design:

More information

Scala. Introduction. Scala

Scala. Introduction. Scala Scala Introduction 1 Scala Scala was proposed by Professor Martin Odersky and his group at EPFL in 2003 to provide a highperformance, concurrent-ready environment for functional programming and object-oriented

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Week 13 - Part 1 Thomas Wies New York University Review Last lecture Object Oriented Programming Outline Today: Scala Sources: Programming in Scala, Second

More information

Scala : an LLVM-targeted Scala compiler

Scala : an LLVM-targeted Scala compiler Scala : an LLVM-targeted Scala compiler Da Liu, UNI: dl2997 Contents 1 Background 1 2 Introduction 1 3 Project Design 1 4 Language Prototype Features 2 4.1 Language Features........................................

More information

APACHE SLING & FRIENDS TECH MEETUP BERLIN, SEPTEMBER Hypermedia API Tools for Sling (HApi) Andrei Dulvac, Adobe

APACHE SLING & FRIENDS TECH MEETUP BERLIN, SEPTEMBER Hypermedia API Tools for Sling (HApi) Andrei Dulvac, Adobe APACHE SLING & FRIENDS TECH MEETUP BERLIN, 28-30 SEPTEMBER 2015 Hypermedia API Tools for Sling (HApi) Andrei Dulvac, Adobe ToC HatEoAS, Hypermedia formats, and semantic data Hypermedia API tools (HApi)

More information

APACHE SLING & FRIENDS TECH MEETUP BERLIN, SEPTEMBER Rookie Session: JCR & Sling Andres Pegam, Stefan Seifert pro!

APACHE SLING & FRIENDS TECH MEETUP BERLIN, SEPTEMBER Rookie Session: JCR & Sling Andres Pegam, Stefan Seifert pro! APACHE SLING & FRIENDS TECH MEETUP BERLIN, 23-25 SEPTEMBER 2013 Rookie Session: JCR & Sling Andres Pegam, Stefan Seifert pro!vision GmbH JCR adaptto() 2013 2 What is a JCR? Content Repository API for Java

More information

(800) Toll Free (804) Fax Introduction to Java and Enterprise Java using Eclipse IDE Duration: 5 days

(800) Toll Free (804) Fax   Introduction to Java and Enterprise Java using Eclipse IDE Duration: 5 days Course Description This course introduces the Java programming language and how to develop Java applications using Eclipse 3.0. Students learn the syntax of the Java programming language, object-oriented

More information

Apache Wicket. Java Web Application Framework

Apache Wicket. Java Web Application Framework Apache Wicket Java Web Application Framework St. Louis - Java User s Group Luther Baker September 2009 What is Wicket? Web Application Framework Component-based Framework Wicket 1.4 is Java 1.5+ compliant

More information

SCALAMODULES A Scala DSL to ease OSGi development Heiko Seeberger, WeigleWilczek

SCALAMODULES A Scala DSL to ease OSGi development Heiko Seeberger, WeigleWilczek SCALAMODULES A Scala DSL to ease OSGi development Heiko Seeberger, WeigleWilczek WHAT S SCALA? mature object-functional statically typed lightweight WHAT S SCALA? expressive concise pragmatic interoperabel

More information

HOW WE MOVED FROM JAVA TO SCALA

HOW WE MOVED FROM JAVA TO SCALA HOW WE MOVED FROM JAVA TO SCALA Graham Tackley guardian.co.uk @tackers mostly HOW WE MOVED FROM ^ JAVA TO SCALA Graham Tackley guardian.co.uk @tackers History Java shop since 2006 guardian.co.uk: java

More information

A Whirlwind Tour of Scala. Kevin Kilroy October 2014

A Whirlwind Tour of Scala. Kevin Kilroy October 2014 A Whirlwind Tour of Scala Kevin Kilroy October 2014 A Brief History of Scala... Created in 2001 by javac author 1995 created Pizza with 1998 created GJ with 1999 Joined EPFL Created Funnel 2001 Scala 2003

More information

Course Topics. The Three-Tier Architecture. Example 1: Airline reservations. IT360: Applied Database Systems. Introduction to PHP

Course Topics. The Three-Tier Architecture. Example 1: Airline reservations. IT360: Applied Database Systems. Introduction to PHP Course Topics IT360: Applied Database Systems Introduction to PHP Database design Relational model SQL Normalization PHP MySQL Database administration Transaction Processing Data Storage and Indexing The

More information

Scala, Lift and the Real Time Web

Scala, Lift and the Real Time Web Scala, Lift and the Real Time Web David Pollak Benevolent Dictator for Life Lift Web Framework dpp@liftweb.net All about me (David Pollak) Sometimes strict, mostly lazy Lead developer for Lift Web Framework

More information

Axiomatic Rules. Lecture 18: Axiomatic Semantics & Type Safety. Correctness using Axioms & Rules. Axiomatic Rules. Steps in Proof

Axiomatic Rules. Lecture 18: Axiomatic Semantics & Type Safety. Correctness using Axioms & Rules. Axiomatic Rules. Steps in Proof Lecture 18: Axiomatic Semantics & Type Safety CSCI 131 Fall, 2011 Kim Bruce Axiomatic Rules Assignment axiom: - {P [expression / id]} id := expression {P} - Ex: {a+47 > 0} x := a+47 {x > 0} - {x > 1} x

More information

Mastering Spring MVC 3

Mastering Spring MVC 3 Mastering Spring MVC 3 And its @Controller programming model Get the code for the demos in this presentation at http://src.springsource.org/svn/spring-samples/mvc-showcase 2010 SpringSource, A division

More information

JCR in Action. Content-based Applications with Apache Jackrabbit. Carsten Ziegeler.

JCR in Action. Content-based Applications with Apache Jackrabbit. Carsten Ziegeler. JCR in Action Content-based Applications with Apache Jackrabbit Carsten Ziegeler cziegeler@apache.org Apache Con US Presentation November 2009 - Oakland About Member of the ASF Sling, Felix, Cocoon, Portals,

More information

n n Official Scala website n Scala API n

n   n Official Scala website n Scala API n n Quiz 8 Announcements n Rainbow grades: HW1-8, Quiz1-6, Exam1-2 n Still grading: HW9, Quiz 7 Scala n HW10 due today n HW11 out today, due Friday Fall 18 CSCI 4430, A Milanova 1 Today s Lecture Outline

More information

Adobe Experience Manager

Adobe Experience Manager Adobe Experience Manager Extend and Customize Adobe Experience Manager v6.x Student Guide: Volume 1 Contents CHAPTER ONE: BASICS OF THE ARCHITECTURAL STACK... 10 What is Adobe Experience Manager?... 10

More information

TailorDev Contact Documentation

TailorDev Contact Documentation TailorDev Contact Documentation Release 0.3 Julien Maupetit November 06, 2013 Contents 1 Django TailorDev Contact 3 1.1 Dependencies............................................... 3 1.2 Installation................................................

More information

Developing Ajax Applications using EWD and Python. Tutorial: Part 2

Developing Ajax Applications using EWD and Python. Tutorial: Part 2 Developing Ajax Applications using EWD and Python Tutorial: Part 2 Chapter 1: A Logon Form Introduction This second part of our tutorial on developing Ajax applications using EWD and Python will carry

More information

web.py Tutorial Tom Kelliher, CS 317 This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment.

web.py Tutorial Tom Kelliher, CS 317 This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment. web.py Tutorial Tom Kelliher, CS 317 1 Acknowledgment This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment. 2 Starting So you know Python and want to make

More information

IntelliJ IDEA Static Code Analysis Hamlet D'Arcy

IntelliJ IDEA Static Code Analysis Hamlet D'Arcy IntelliJ IDEA Static Code Analysis Hamlet D'Arcy Canoo Engineering AG @HamletDRC http://hamletdarcy.blogspot.com Static Code Analysis Code Inspections JSR 305 and 308 Annotations Duplicate Detection Stack

More information

A. Add a property called debugclientlibs to the js.txt and set the value to true.

A. Add a property called debugclientlibs to the js.txt and set the value to true. Volume: 60 Questions Question No: 1 You want to debug a CQ HTML client library in the author instance. You want to avoid compressing the JavaScript file. What must you do? A. Add a property called debugclientlibs

More information

Scala Actors. Scalable Multithreading on the JVM. Philipp Haller. Ph.D. candidate Programming Methods Lab EPFL, Lausanne, Switzerland

Scala Actors. Scalable Multithreading on the JVM. Philipp Haller. Ph.D. candidate Programming Methods Lab EPFL, Lausanne, Switzerland Scala Actors Scalable Multithreading on the JVM Philipp Haller Ph.D. candidate Programming Methods Lab EPFL, Lausanne, Switzerland The free lunch is over! Software is concurrent Interactive applications

More information

...something useful to do with the JVM.

...something useful to do with the JVM. Scala Finally... ...something useful to do with the JVM. Image source: http://www.tripadvisor.com/locationphotos-g187789-lazio.html Young Developed in 2003 by Martin Odersky at EPFL Martin also brought

More information

Form Processing in PHP

Form Processing in PHP Form Processing in PHP Forms Forms are special components which allow your site visitors to supply various information on the HTML page. We have previously talked about creating HTML forms. Forms typically

More information

Server-Side Web Programming: Java. Copyright 2017 by Robert M. Dondero, Ph.D Princeton University

Server-Side Web Programming: Java. Copyright 2017 by Robert M. Dondero, Ph.D Princeton University Server-Side Web Programming: Java Copyright 2017 by Robert M. Dondero, Ph.D Princeton University 1 Objectives You will learn about: Server-side web programming in Java, via Servlets The Spark web app framework

More information

Extending the JavaScript Development Toolkit

Extending the JavaScript Development Toolkit Extending the JavaScript Development Toolkit Bradley Childs IBM Software Group childsb@us.ibm.com 3/19/2008 Agenda Overview JSDT Feature Highlights Benefit of Extending JSDT JSDT Platform What can you

More information

JBPM Course Content. Module-1 JBPM overview, Drools overview

JBPM Course Content. Module-1 JBPM overview, Drools overview JBPM Course Content Module-1 JBPM overview, Drools overview JBPM overview Drools overview Community projects Vs Enterprise projects Eclipse integration JBPM console JBPM components Getting started Downloads

More information

Java Server Pages. JSP Part II

Java Server Pages. JSP Part II Java Server Pages JSP Part II Agenda Actions Beans JSP & JDBC MVC 2 Components Scripting Elements Directives Implicit Objects Actions 3 Actions Actions are XML-syntax tags used to control the servlet engine

More information

Clojure Web Security. FrOSCon Joy Clark & Simon Kölsch

Clojure Web Security. FrOSCon Joy Clark & Simon Kölsch Clojure Web Security FrOSCon 2016 Joy Clark & Simon Kölsch Clojure Crash Course (println "Hello Sankt Augustin!") Lisp + JVM Functional programming language Simple programming model Immutable Data Structures

More information

The State of Apache Sling

The State of Apache Sling The State of Apache Sling Carsten Ziegeler cziegeler@apache.org adaptto() 2012 Berlin 1 About Member of the ASF Current PMC Chair of Apache Sling Apache Sling, Felix, Portals, Incubator RnD Team at Adobe

More information

Web Programming. Based on Notes by D. Hollinger Also Java Network Programming and Distributed Computing, Chs.. 9,10 Also Online Java Tutorial, Sun.

Web Programming. Based on Notes by D. Hollinger Also Java Network Programming and Distributed Computing, Chs.. 9,10 Also Online Java Tutorial, Sun. Web Programming Based on Notes by D. Hollinger Also Java Network Programming and Distributed Computing, Chs.. 9,10 Also Online Java Tutorial, Sun. 1 World-Wide Wide Web (Tim Berners-Lee & Cailliau 92)

More information

NETB 329 Lecture 13 Python CGI Programming

NETB 329 Lecture 13 Python CGI Programming NETB 329 Lecture 13 Python CGI Programming 1 of 83 What is CGI? The Common Gateway Interface, or CGI, is a set of standards that define how information is exchanged between the web server and a custom

More information

Scala Where It Came From Where It is Going

Scala Where It Came From Where It is Going Scala Where It Came From Where It is Going Scala Days San Francisco Martin Odersky Scala Where It Came From Scala Days San Francisco Martin Odersky Scala is going nowhere Scala is a gateway drug to Haskell

More information

Arne Brüsch Philipp Wille. Pattern Matching Syntax

Arne Brüsch Philipp Wille. Pattern Matching Syntax Scala Enthusiasts BS Arne Brüsch Philipp Wille Pattern Matching Syntax Scala Modular programming language Some used to call it objectfunctional 2 Scala Modular programming language Some used to call it

More information

Content Repository API for Java (JCR) & ModeShape. Jozef JBoss Community Team

Content Repository API for Java (JCR) & ModeShape. Jozef JBoss Community Team Content Repository API for Java (JCR) & ModeShape Jozef Chocholáček @jchochol JBoss Community Team Agenda JCR what is it (good for) ModeShape beyond JCR How do we use JCR and ModeShape JCR Content Repository

More information

CS4HS Using Google App Engine. Michael Parker

CS4HS Using Google App Engine. Michael Parker CS4HS Using Google App Engine Michael Parker (michael.g.parker@gmail.com) So what is it? What's it for? Building and running web applications Why use it? Handles serving web pages, efficiently storing

More information

Managing Installations and Provisioning of OSGi Applications. Carsten Ziegeler

Managing Installations and Provisioning of OSGi Applications. Carsten Ziegeler Managing Installations and Provisioning of OSGi Applications Carsten Ziegeler cziegeler@apache.org About Member of the ASF Current PMC Chair of Apache Sling Apache Sling, Felix, ACE, Portals (Incubator,

More information

Bibliography. Analyse et Conception Formelle. Lesson 5. Crash Course on Scala. Scala in a nutshell. Outline

Bibliography. Analyse et Conception Formelle. Lesson 5. Crash Course on Scala. Scala in a nutshell. Outline Bibliography Analyse et Conception Formelle Lesson 5 Crash Course on Scala Simply Scala. Onlinetutorial: http://www.simply.com/fr http://www.simply.com/ Programming in Scala, M. Odersky, L. Spoon, B. Venners.

More information

Scala, Your Next Programming Language

Scala, Your Next Programming Language Scala, Your Next Programming Language (or if it is good enough for Twitter, it is good enough for me) WORLDCOMP 2011 By Dr. Mark C. Lewis Trinity University Disclaimer I am writing a Scala textbook that

More information

Building Vaadin Applications With Pure Scala

Building Vaadin Applications With Pure Scala Building Vaadin Applications With Pure Scala Henri Kerola Vaadin Expert at Vaadin Ltd ? Vaadin is a UI framework for rich web applications java html Internet Explorer Chrome Firefox Safari Opera

More information

Optimizing Higher-Order Functions in Scala

Optimizing Higher-Order Functions in Scala Optimizing Higher-Order Functions in Scala Iulian Dragos EPFL Outline A quick tour of Scala Generalities Extension through libraries Closure translation in Scala Cost Optimizations in the Scala compiler

More information

JAVA SERVLET. Server-side Programming PROGRAMMING

JAVA SERVLET. Server-side Programming PROGRAMMING JAVA SERVLET Server-side Programming PROGRAMMING 1 AGENDA Passing Parameters Session Management Cookie Hidden Form URL Rewriting HttpSession 2 HTML FORMS Form data consists of name, value pairs Values

More information

F# for Industrial Applications Worth a Try?

F# for Industrial Applications Worth a Try? F# for Industrial Applications Worth a Try? Jazoon TechDays 2015 Dr. Daniel Egloff Managing Director Microsoft MVP daniel.egloff@quantalea.net October 23, 2015 Who are we Software and solution provider

More information

/ / JAVA TRAINING

/ / JAVA TRAINING www.tekclasses.com +91-8970005497/+91-7411642061 info@tekclasses.com / contact@tekclasses.com JAVA TRAINING If you are looking for JAVA Training, then Tek Classes is the right place to get the knowledge.

More information

Advanced Authoring Templates for WebSphere Portal content publishing

Advanced Authoring Templates for WebSphere Portal content publishing By David Wendt (wendt@us.ibm.com) Software Engineer, IBM Corp. October 2003 Advanced Authoring Templates for WebSphere Portal content publishing Abstract This paper describes some advanced techniques for

More information

A Long Time Ago 2 / 64

A Long Time Ago 2 / 64 ndertow 1 / 64 A Long Time Ago 2 / 64 A Long Time Ago 3 / 64 A Long Time Ago 4 / 64 Undertow 5 / 64 Features HTTP/HTTPS HTTP/2 WebSockets 6 / 64 Hello, World! Undertow.builder().addHttpListener(8080, "localhost")

More information

COMP9321 Web Application Engineering

COMP9321 Web Application Engineering COMP9321 Web Application Engineering Semester 2, 2015 Dr. Amin Beheshti Service Oriented Computing Group, CSE, UNSW Australia Week 3 http://webapps.cse.unsw.edu.au/webcms2/course/index.php?cid=2411 1 Review:

More information

EMC White Paper. BPS http Listener. Installing and Configuring

EMC White Paper. BPS http Listener. Installing and Configuring EMC White Paper BPS http Listener Installing and Configuring March 2006 Copyright 2005 EMC Corporation. All rights reserved. EMC believes the information in this publication is accurate as of its publication

More information

2 Java Content Repository (JCR)

2 Java Content Repository (JCR) Oracle Fusion Middleware JCR Adapter Guide for Content Server 11g Release 1 (11.1.1) E17158-01 May 2010 The Oracle Fusion Middleware JCR Adapter Guide for Content Server describes the JCR adapter for Oracle

More information

Getting Started with Kotlin. Commerzbank Java Developer Day

Getting Started with Kotlin. Commerzbank Java Developer Day Getting Started with Kotlin Commerzbank Java Developer Day 30.11.2017 Hello! Alexander Hanschke Hello! Alexander Hanschke CTO at techdev Solutions GmbH in Berlin Hello! Alexander Hanschke CTO at techdev

More information

Tapestry. Code less, deliver more. Rayland Jeans

Tapestry. Code less, deliver more. Rayland Jeans Tapestry Code less, deliver more. Rayland Jeans What is Apache Tapestry? Apache Tapestry is an open-source framework designed to create scalable web applications in Java. Tapestry allows developers to

More information

High-level Parallel Programming: Scala on the JVM

High-level Parallel Programming: Scala on the JVM High-level Parallel Programming: Scala on the JVM Contents of Lecture 4 The Scala programming language Parallel programming using actors Jonas Skeppstedt (jonasskeppstedt.net) Lecture 4 2017 1 / 40 Purpose

More information

Extensible Components with Sling Models and HTL

Extensible Components with Sling Models and HTL APACHE SLING & FRIENDS TECH MEETUP BERLIN, 25-27 SEPTEMBER 2017 Extensible Components with Sling Models and HTL Vlad Băilescu & Burkhard Pauli, Adobe About us: ref-squad 2 Agenda WCM Components in AEM

More information

COURSE DETAILS: CORE AND ADVANCE JAVA Core Java

COURSE DETAILS: CORE AND ADVANCE JAVA Core Java COURSE DETAILS: CORE AND ADVANCE JAVA Core Java 1. Object Oriented Concept Object Oriented Programming & its Concepts Classes and Objects Aggregation and Composition Static and Dynamic Binding Abstract

More information

PrintShop Mail Web. Web Integration Guide

PrintShop Mail Web. Web Integration Guide PrintShop Mail Web Web Integration Guide Copyright Information Copyright 1994-2010 Objectif Lune Inc. All Rights Reserved. No part of this publication may be reproduced, transmitted, transcribed, stored

More information

Course Topics. IT360: Applied Database Systems. Introduction to PHP

Course Topics. IT360: Applied Database Systems. Introduction to PHP IT360: Applied Database Systems Introduction to PHP Chapter 1 and Chapter 6 in "PHP and MySQL Web Development" Course Topics Relational model SQL Database design Normalization PHP MySQL Database administration

More information

INF 212 ANALYSIS OF PROG. LANGS Type Systems. Instructors: Crista Lopes Copyright Instructors.

INF 212 ANALYSIS OF PROG. LANGS Type Systems. Instructors: Crista Lopes Copyright Instructors. INF 212 ANALYSIS OF PROG. LANGS Type Systems Instructors: Crista Lopes Copyright Instructors. What is a Data Type? A type is a collection of computational entities that share some common property Programming

More information

Lecture 9. Forms & APIs 1 / 38

Lecture 9. Forms & APIs 1 / 38 Lecture 9 Forms & APIs 1 / 38 Final Project Proposal Due November 12th 11:59PM Should include: A summary of your idea A diagram with the db tables you plan to use& the relationships between them You can

More information

Adding a Module System to Java

Adding a Module System to Java Adding a Module System to Java Rok Strniša Computer Laboratory, University of Cambridge Email: Rok.Strnisa@cl.cam.ac.uk URL: http://www.cl.cam.ac.uk/~rs456/ May 8, 2008 @ The British Computer Society Joint

More information

OSGi. Tales from the Trenches. OSGitales from the trenches

OSGi. Tales from the Trenches. OSGitales from the trenches OSGi Tales from the Trenches Bertrand Delacretaz Senior R&D Developer, Day Software, www.day.com Apache Software Foundation Member and Director bdelacretaz@apache.org blog: http://grep.codeconsult.ch twitter:

More information

An Overview of Scala. Philipp Haller, EPFL. (Lots of things taken from Martin Odersky's Scala talks)

An Overview of Scala. Philipp Haller, EPFL. (Lots of things taken from Martin Odersky's Scala talks) An Overview of Scala Philipp Haller, EPFL (Lots of things taken from Martin Odersky's Scala talks) The Scala Programming Language Unifies functional and object-oriented programming concepts Enables embedding

More information

Oracle Corporation

Oracle Corporation 1 2011 Oracle Corporation Making heads and tails of Project Coin, Small language changes in JDK 7 Joseph D. Darcy Presenting with LOGO 2 2011 Oracle Corporation Project Coin is a suite of language and

More information

Web development using PHP & MySQL with HTML5, CSS, JavaScript

Web development using PHP & MySQL with HTML5, CSS, JavaScript Web development using PHP & MySQL with HTML5, CSS, JavaScript Static Webpage Development Introduction to web Browser Website Webpage Content of webpage Static vs dynamic webpage Technologies to create

More information

Building Web Applications With The Struts Framework

Building Web Applications With The Struts Framework Building Web Applications With The Struts Framework ApacheCon 2003 Session TU23 11/18 17:00-18:00 Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc. Slides: http://www.apache.org/~craigmcc/

More information

AN ISO 9001:2008 CERTIFIED COMPANY ADVANCED. Java TRAINING.

AN ISO 9001:2008 CERTIFIED COMPANY ADVANCED. Java TRAINING. AN ISO 9001:2008 CERTIFIED COMPANY ADVANCED Java TRAINING www.webliquids.com ABOUT US Who we are: WebLiquids is an ISO (9001:2008), Google, Microsoft Certified Advanced Web Educational Training Organisation.

More information

Rails: Views and Controllers

Rails: Views and Controllers Rails: Views and Controllers Computer Science and Engineering College of Engineering The Ohio State University Lecture 18 Recall: Rails Architecture Wiring Views and Controllers A controller is just an

More information

Functional Objects. Christopher Simpkins CS 3693, Fall Chris Simpkins (Georgia Tech) CS 3693 Scala / 1

Functional Objects. Christopher Simpkins CS 3693, Fall Chris Simpkins (Georgia Tech) CS 3693 Scala / 1 Functional Objects Christopher Simpkins csimpkin@spsu.edu CS 3693, Fall 2011 Chris Simpkins (Georgia Tech) CS 3693 Scala 2011-08-29 1 / 1 Functional Objects Functional objects have immutable state. Immutable

More information

Scala. Fernando Medeiros Tomás Paim

Scala. Fernando Medeiros Tomás Paim Scala Fernando Medeiros fernfreire@gmail.com Tomás Paim tomasbmp@gmail.com Topics A Scalable Language Classes and Objects Basic Types Functions and Closures Composition and Inheritance Scala s Hierarchy

More information

Advances in Programming Languages

Advances in Programming Languages O T Y H Advances in Programming Languages APL5: Further language concurrency mechanisms David Aspinall (including slides by Ian Stark) School of Informatics The University of Edinburgh Tuesday 5th October

More information

INF 212/CS 253 Type Systems. Instructors: Harry Xu Crista Lopes

INF 212/CS 253 Type Systems. Instructors: Harry Xu Crista Lopes INF 212/CS 253 Type Systems Instructors: Harry Xu Crista Lopes What is a Data Type? A type is a collection of computational entities that share some common property Programming languages are designed to

More information

COMP9321 Web Application Engineering

COMP9321 Web Application Engineering COMP9321 Web Application Engineering Semester 2, 2017 Dr. Amin Beheshti Service Oriented Computing Group, CSE, UNSW Australia Week 3 http://webapps.cse.unsw.edu.au/webcms2/course/index.php?cid=2465 1 Review:

More information

The Trouble with Types

The Trouble with Types The Trouble with Types Martin Odersky EPFL and Typesafe Types Everyone has an opinion on them Industry: Used to be the norm (C/C++, Java). Today split about evenly with dynamic. Academia: Static types

More information

Type of Classes Nested Classes Inner Classes Local and Anonymous Inner Classes

Type of Classes Nested Classes Inner Classes Local and Anonymous Inner Classes Java CORE JAVA Core Java Programing (Course Duration: 40 Hours) Introduction to Java What is Java? Why should we use Java? Java Platform Architecture Java Virtual Machine Java Runtime Environment A Simple

More information

CSE 154 LECTURE 19: FORMS AND UPLOADING FILES

CSE 154 LECTURE 19: FORMS AND UPLOADING FILES CSE 154 LECTURE 19: FORMS AND UPLOADING FILES Exercise: Baby name web service JSON Modify our babynames.php service to produce its output as JSON. For the data: Morgan m 375 410 392 478 579 507 636 499

More information

PYTHON CGI PROGRAMMING

PYTHON CGI PROGRAMMING PYTHON CGI PROGRAMMING http://www.tutorialspoint.com/python/python_cgi_programming.htm Copyright tutorialspoint.com The Common Gateway Interface, or CGI, is a set of standards that define how information

More information

Harnessing Java with Scala

Harnessing Java with Scala Harnessing Java with Scala OSCON 2010 July 21, 2010 Thomas Lockney @tlockney or thomas@lockney.net Trenton Lipscomb trentonl@amazon.com Introduction Understand the capabilities of sbt and Scala Demonstrate

More information

Functional programming

Functional programming Functional programming Functional programming In functional programming, functions are the core building blocks In pure functional programming, functions are like mathematical functions Mathematical functions

More information

Scripting Languages in OSGi. Thursday, November 8, 12

Scripting Languages in OSGi. Thursday, November 8, 12 Scripting Languages in OSGi Frank Lyaruu CTO Dexels Project lead Navajo Framework Amsterdam www.dexels.com Twitter: @lyaruu Navajo Framework TSL XML based script language Compiled to Java Recently ported

More information

Who am I? Harlan Iverson. Programming enthusiast. Seeker of truth. Imperfect. I'll be wrong about some things. Please correct me if you can.

Who am I? Harlan Iverson. Programming enthusiast. Seeker of truth. Imperfect. I'll be wrong about some things. Please correct me if you can. Who am I? Harlan Iverson. Programming enthusiast. Seeker of truth. Imperfect. I'll be wrong about some things. Please correct me if you can. P.S... I hate boring presentations. Please, engage and stay

More information

CE212 Web Application Programming Part 3

CE212 Web Application Programming Part 3 CE212 Web Application Programming Part 3 30/01/2018 CE212 Part 4 1 Servlets 1 A servlet is a Java program running in a server engine containing methods that respond to requests from browsers by generating

More information

Snap und Heist - HaL7 Halle (Saale), Germany July Matthias Fischmann & Sönke Hahn

Snap und Heist - HaL7 Halle (Saale), Germany July Matthias Fischmann & Sönke Hahn Snap und Heist - HaL7 Halle (Saale), Germany July 13 2012 Matthias Fischmann & Sönke Hahn {sh,mf}@zerobuzz.net Installation darcs get http://patch-tag.com/r/shahn/hal-snap-2012/ (or open it in browser)

More information

Static Webpage Development

Static Webpage Development Dear Student, Based upon your enquiry we are pleased to send you the course curriculum for PHP Given below is the brief description for the course you are looking for: - Static Webpage Development Introduction

More information

JavaServer Faces Technology, AJAX, and Portlets: It s Easy if You Know How!

JavaServer Faces Technology, AJAX, and Portlets: It s Easy if You Know How! TS-6824 JavaServer Faces Technology, AJAX, and Portlets: It s Easy if You Know How! Brendan Murray Software Architect IBM http://www.ibm.com 2007 JavaOne SM Conference Session TS-6824 Goal Why am I here?

More information

FreeMarker in Spring Web. Marin Kalapać

FreeMarker in Spring Web. Marin Kalapać FreeMarker in Spring Web Marin Kalapać Agenda Spring MVC view resolving in general FreeMarker what is it and basics Configure Spring MVC to use Freemarker as view engine instead of jsp Commonly used components

More information

Enforcing Singularity

Enforcing Singularity Dr. Michael Eichberg Software Engineering Department of Computer Science Technische Universität Darmstadt Software Engineering Enforcing Singularity For details see Gamma et al. in Design Patterns Enforcing

More information

INTRODUCTION. SHORT INTRODUCTION TO SCALA INGEGNERIA DEL SOFTWARE Università degli Studi di Padova

INTRODUCTION. SHORT INTRODUCTION TO SCALA INGEGNERIA DEL SOFTWARE Università degli Studi di Padova SHORT INTRODUCTION TO SCALA INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2014 2015 rcardin@math.unipd.it INTRODUCTION Object/functional

More information

Java Training JAVA. Introduction of Java

Java Training JAVA. Introduction of Java Java Training Building or rewriting a system completely in Java means starting from the scratch. We engage in the seamless and stable operations of Java technology to deliver innovative and functional

More information

Scala. ~ a tragedy in two parts ~ the tragedy being we aren t using it all the time

Scala. ~ a tragedy in two parts ~ the tragedy being we aren t using it all the time e Scala ~ a tragedy in two parts ~ the tragedy being we aren t using it all the time w g I The Scala Language Praise for Scala j s gi can honestly say if someone had shown me the Programming in Scala...

More information

Notes from a Short Introductory Lecture on Scala (Based on Programming in Scala, 2nd Ed.)

Notes from a Short Introductory Lecture on Scala (Based on Programming in Scala, 2nd Ed.) Notes from a Short Introductory Lecture on Scala (Based on Programming in Scala, 2nd Ed.) David Haraburda January 30, 2013 1 Introduction Scala is a multi-paradigm language that runs on the JVM (is totally

More information

Understanding the Dumper Program Google Application Engine University of Michigan Informatics

Understanding the Dumper Program Google Application Engine University of Michigan Informatics UnderstandingtheDumperProgram GoogleApplicationEngine UniversityofMichigan Informatics Thishandoutdescribesaverysimpleandlow levelgoogleapplicationengine applicationcalled Dumper thatjustdumpsoutthedatafromahttprequest.

More information

Apache Tamaya Configuring your Containers...

Apache Tamaya Configuring your Containers... Apache Tamaya Configuring your Containers... BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENF HAMBURG KOPENHAGEN LAUSANNE MÜNCHEN STUTTGART WIEN ZÜRICH About Me Anatole Tresch Principal Consultant,

More information

Web Architecture and Development

Web Architecture and Development Web Architecture and Development SWEN-261 Introduction to Software Engineering Department of Software Engineering Rochester Institute of Technology HTTP is the protocol of the world-wide-web. The Hypertext

More information

DSL vs. Library API Shootout

DSL vs. Library API Shootout DSL vs. Library API Shootout Rich Unger Salesforce.com Jaroslav Tulach Oracle Agenda What do we mean by DSL? What do we mean by library? When is it good to use a DSL? When is it a bad idea? Evolution Versioning

More information

JavaServer Pages (JSP)

JavaServer Pages (JSP) JavaServer Pages (JSP) The Context The Presentation Layer of a Web App the graphical (web) user interface frequent design changes usually, dynamically generated HTML pages Should we use servlets? No difficult

More information

CISH-6510 Web Application Design and Development. JSP and Beans. Overview

CISH-6510 Web Application Design and Development. JSP and Beans. Overview CISH-6510 Web Application Design and Development JSP and Beans Overview WeatherBean Advantages to Using Beans with JSPs Using Beans Bean Properties Weather Example Sharing Beans Timer Example 2 1 WeatherBean

More information

Spring 2014 Interim. HTML forms

Spring 2014 Interim. HTML forms HTML forms Forms are used very often when the user needs to provide information to the web server: Entering keywords in a search box Placing an order Subscribing to a mailing list Posting a comment Filling

More information