Scala for Sling. Building RESTful Web Applications with Scala for Sling. LOGO SPEAKER S COMPANY
|
|
- Oscar Lyons
- 6 years ago
- Views:
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 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 informationAPACHE 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 informationRapid 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 informationScala. 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 informationG 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 informationScala : 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 informationAPACHE 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 informationAPACHE 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
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 informationApache 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 informationSCALAMODULES 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 informationHOW 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 informationA 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 informationCourse 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 informationScala, 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 informationAxiomatic 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 informationMastering 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 informationJCR 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 informationn 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 informationAdobe 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 informationTailorDev 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 informationDeveloping 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 informationweb.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 informationIntelliJ 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 informationA. 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 informationScala 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.
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 informationForm 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 informationServer-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 informationExtending 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 informationJBPM 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 informationJava 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 informationClojure 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 informationThe 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 informationWeb 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 informationNETB 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 informationScala 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 informationArne 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 informationContent 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 informationCS4HS 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 informationManaging 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 informationBibliography. 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 informationScala, 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 informationBuilding 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 informationOptimizing 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 informationJAVA 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 informationF# 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
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 informationAdvanced 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 informationA 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 informationCOMP9321 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 informationEMC 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 information2 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 informationGetting 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 informationTapestry. 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 informationHigh-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 informationExtensible 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 informationCOURSE 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 informationPrintShop 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 informationCourse 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 informationINF 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 informationLecture 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 informationAdding 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 informationOSGi. 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 informationAn 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 informationOracle 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 informationWeb 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 informationBuilding 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 informationAN 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 informationRails: 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 informationFunctional 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 informationScala. 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 informationAdvances 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 informationINF 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 informationCOMP9321 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 informationThe 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 informationType 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 informationCSE 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 informationPYTHON 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 informationHarnessing 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 informationFunctional 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 informationScripting 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 informationWho 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 informationCE212 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 informationSnap 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 informationStatic 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 informationJavaServer 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 informationFreeMarker 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 informationEnforcing 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 informationINTRODUCTION. 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 informationJava 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 informationScala. ~ 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 informationNotes 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 informationUnderstanding the Dumper Program Google Application Engine University of Michigan Informatics
UnderstandingtheDumperProgram GoogleApplicationEngine UniversityofMichigan Informatics Thishandoutdescribesaverysimpleandlow levelgoogleapplicationengine applicationcalled Dumper thatjustdumpsoutthedatafromahttprequest.
More informationApache 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 informationWeb 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 informationDSL 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 informationJavaServer 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 informationCISH-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 informationSpring 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