Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
01
About me
02
Andrey Adamovich
Bio: Developer, coach, speaker, author
Company: Aestas/IT (http://aestasit.com)
E­mail: andrey@aestasit.c...
Quick Start!
04
0. Prerequisites
Install Java 8+
Install Groovy 2.4+
(Optionally) install Gradle 2+ (or just use Gradle Wrapper)
•
•
•
05
1. Type in...
@Grab("org.slf4j:slf4j‐simple:1.7.10")
@Grab("io.ratpack:ratpack‐groovy:0.9.11")
import static ratpack.groov...
1. Continue...
ratpack {
  handlers {
    get {
      response.send new Date().toString()
    }
  }
}
01.
02.
03.
04.
05.
...
2. Save as...
ratpack.groovy01.
08
3. Start!
groovy ratpack.groovy 01.
09
4. Enable some more logging
JAVA_OPTS=‐Dgroovy.grape.report.downloads=true01.
10
Ratpack facts I
Ratpack is a toolset that combines several Java libraries that allows
efficiently developing performant an...
Ratpack facts II
Inspired by Sinatra framework
Requires Java 8
Does not require a container
Does not implement Servlet API...
Ratpack facts III
Core is very minimal and is only based on few abstractions (Handler
and Registry)
Many additional module...
Stack
14
It's alive and
very active!
15
Release history
0.5.2 ­ Jul 21, 2012
0.6.1 ­ Nov 29, 2012
0.9.0 ­ Jan 02, 2014
0.9.1 ­ Feb 01, 2014
0.9.2 ­ Mar 01, 2014
0...
Release history
0.9.7 ­ Aug 01, 2014
0.9.8 ­ Sep 01, 2014
0.9.9 ­ Oct 01, 2014
0.9.10 ­ Nov 02, 2014
0.9.11 ­ Dec 01, 2014...
Commit history
18
Heroes
19
Modules I
Asynch: reactor, rx
Authentication: pac4j
Build/Packaging: gradle
Common: config, session
Database: h2, hikari
•...
Modules II
Dependency Injection: guice, spring­boot
JSON: jackson
Language: groovy, kotlin
Reliability: hystrix, codehale­...
Java + Groovy = ?
Has similar performance to Java when using  invokeDynamic
Supports static compilation and compile­time t...
IDE support
IntelliJ IDEA recommended
Eclipse has poor support for Groovy and @DelegatesTo
NetBeans ­ haven't even tried
•...
Diving deeper
24
Handlers
All request processing is done via composition of  Handler s.
Each  Handler  in the  Chain  is asked to respond t...
A handler can
Send a  Response  to the  Request .
Delegate to the next  Handler  in the  Chain .
Insert  Handler s into th...
Flow
27
Paths
prefix('api') {
  get('user/:id') {
    render getUser(pathTokens.id)
  }
  get('friends') {
    render getFriendLis...
Verbs
handler('user') {
  byMethod {
    get { ... }
    post { ... }
    put { ... }
    delete { ... }
  }
}
01.
02.
03....
Content types
handler('user') {
  byContent {
    json { ... }
    xml { ... }
    type("application/vnd.app.org+json;v=1"...
Static content
assets "public"
assets "index.html"
01.
02.
31
Templates
32
Enough!
33
Demo 1
34
Demo 2
35
Summary
36
Take­aways
Ratpack can be used to quickly prototype web APIs and applications.
Learning curve is really small, you can sta...
Reading material
http://ratpack.io
http://www.slideshare.net/search/slideshow?q=ratpack
https://github.com/ratpack
•
•
•
38
Questions?
39
Thank you!
40
Happy
coding!
41
Prochain SlideShare
Chargement dans…5
×

Rapid web application development with Groovy & Ratpack for JavaLand 2015

1 990 vues

Publié le

Ratpack is yet another kid in the block of web application development frameworks. Why is it different? It gives you an ability of rapid prototyping of web UIs and APIs. Non-blocking implementation, which includes testing, dependency injection, monitoring, streaming are all (as well as many others) built-in features and are easy to use. You can start as small as a single script, or split your application into several source code files organically when it grows bigger. Also, the conciseness of Groovy programming language and elegant API gives it an outstanding charm that's worth a try for your next small or big project. This presentation gives a demo of how to quickly create a web application with Ratpack.

Publié dans : Technologie
  • Soyez le premier à commenter

Rapid web application development with Groovy & Ratpack for JavaLand 2015

  1. 1. 01
  2. 2. About me 02
  3. 3. Andrey Adamovich Bio: Developer, coach, speaker, author Company: Aestas/IT (http://aestasit.com) E­mail: andrey@aestasit.com Linkedin: http://www.linkedin.com/in/andreyadamovich Lanyrd: http://lanyrd.com/profile/andrey­adamovich GitHub: https://github.com/aadamovich SO: http://stackoverflow.com/users/162792/andrey­adamovich Twitter: @codingandrey, @aestasit • • • • • • • • 03
  4. 4. Quick Start! 04
  5. 5. 0. Prerequisites Install Java 8+ Install Groovy 2.4+ (Optionally) install Gradle 2+ (or just use Gradle Wrapper) • • • 05
  6. 6. 1. Type in... @Grab("org.slf4j:slf4j‐simple:1.7.10") @Grab("io.ratpack:ratpack‐groovy:0.9.11") import static ratpack.groovy.Groovy.ratpack 01. 02. 03. 06
  7. 7. 1. Continue... ratpack {   handlers {     get {       response.send new Date().toString()     }   } } 01. 02. 03. 04. 05. 06. 07. 07
  8. 8. 2. Save as... ratpack.groovy01. 08
  9. 9. 3. Start! groovy ratpack.groovy 01. 09
  10. 10. 4. Enable some more logging JAVA_OPTS=‐Dgroovy.grape.report.downloads=true01. 10
  11. 11. Ratpack facts I Ratpack is a toolset that combines several Java libraries that allows efficiently developing performant and testable HTTP applications. 11
  12. 12. Ratpack facts II Inspired by Sinatra framework Requires Java 8 Does not require a container Does not implement Servlet API Goes under Apache 2.0 License • • • • • 12
  13. 13. Ratpack facts III Core is very minimal and is only based on few abstractions (Handler and Registry) Many additional modules exist and it's easily to develop new ones Modules are injected through DI (there is not specialized plugin system) Out­of­the­box integration with Guice and Spring • • • • 13
  14. 14. Stack 14
  15. 15. It's alive and very active! 15
  16. 16. Release history 0.5.2 ­ Jul 21, 2012 0.6.1 ­ Nov 29, 2012 0.9.0 ­ Jan 02, 2014 0.9.1 ­ Feb 01, 2014 0.9.2 ­ Mar 01, 2014 0.9.3 ­ Apr 01, 2014 0.9.4 ­ May 01, 2014 0.9.5 ­ Jun 01, 2014 0.9.6 ­ Jul 01, 2014 • • • • • • • • • 16
  17. 17. Release history 0.9.7 ­ Aug 01, 2014 0.9.8 ­ Sep 01, 2014 0.9.9 ­ Oct 01, 2014 0.9.10 ­ Nov 02, 2014 0.9.11 ­ Dec 01, 2014 0.9.12 ­ Jan 01, 2014 0.9.13 ­ Feb 01, 2015 0.9.14 ­ Mar 01, 2015 • • • • • • • • 17
  18. 18. Commit history 18
  19. 19. Heroes 19
  20. 20. Modules I Asynch: reactor, rx Authentication: pac4j Build/Packaging: gradle Common: config, session Database: h2, hikari • • • • • 20
  21. 21. Modules II Dependency Injection: guice, spring­boot JSON: jackson Language: groovy, kotlin Reliability: hystrix, codehale­metrics, newrelic Templates: handlebars, thymeleaf, groovy Testing: test, groovy­test • • • • • • 21
  22. 22. Java + Groovy = ? Has similar performance to Java when using  invokeDynamic Supports static compilation and compile­time type checking Useful for defining rich DSLs with type checking via  Closure parameters and  @DelegatesTo  annotations • • • 22
  23. 23. IDE support IntelliJ IDEA recommended Eclipse has poor support for Groovy and @DelegatesTo NetBeans ­ haven't even tried • • • 23
  24. 24. Diving deeper 24
  25. 25. Handlers All request processing is done via composition of  Handler s. Each  Handler  in the  Chain  is asked to respond to a  Request  until one actually does. • • 25
  26. 26. A handler can Send a  Response  to the  Request . Delegate to the next  Handler  in the  Chain . Insert  Handler s into the  Chain  and immediately delegate to them. Change  Context , which represents the current state of  Request processing. • • • • 26
  27. 27. Flow 27
  28. 28. Paths prefix('api') {   get('user/:id') {     render getUser(pathTokens.id)   }   get('friends') {     render getFriendList()   } } 01. 02. 03. 04. 05. 06. 07. 08. 28
  29. 29. Verbs handler('user') {   byMethod {     get { ... }     post { ... }     put { ... }     delete { ... }   } } 01. 02. 03. 04. 05. 06. 07. 08. 29
  30. 30. Content types handler('user') {   byContent {     json { ... }     xml { ... }     type("application/vnd.app.org+json;v=1") {       ...     }   } } 01. 02. 03. 04. 05. 06. 07. 08. 09. 30
  31. 31. Static content assets "public" assets "index.html" 01. 02. 31
  32. 32. Templates 32
  33. 33. Enough! 33
  34. 34. Demo 1 34
  35. 35. Demo 2 35
  36. 36. Summary 36
  37. 37. Take­aways Ratpack can be used to quickly prototype web APIs and applications. Learning curve is really small, you can start in seconds. It can be used to create high performance web applications due to non­blocking architecture. Ratpack does not lock you in the way you implement data access, session handling, logging, etc. Ratpack has vibrant community and actively evolving code base. • • • • • 37
  38. 38. Reading material http://ratpack.io http://www.slideshare.net/search/slideshow?q=ratpack https://github.com/ratpack • • • 38
  39. 39. Questions? 39
  40. 40. Thank you! 40
  41. 41. Happy coding! 41

×