Play Framework
-
Upload
jdesconectado18 -
Category
Documents
-
view
12 -
download
0
Transcript of Play Framework
-
Intro to Play Framework &
Modern Java Web App Development
Josh Padnick
Desert Code Camp 2013.2
November 9, 2013
-
Todays Talk
Java Web App Development Today
Modern Web App Development
Meet Play Framework
Build Stuff!
-
Founder & Chief Innovation Officer at Omedix
10+ years of web app development
Special interest in scalable, enterprise, web-based applications using Java & open source
Josh Padnick
-
Java Web App
Development Today
Challenges of^
-
Lots of Time Waiting for Server Redeploys
SOURCE FOR INSIGHT: The Play Framework at LinkedIn: Productivity and Performance at Scale by Yevjeniy Brikman http://www.youtube.com/watch?v=8z3h4Uv9YbE
!SOURCE FOR GRAPHIC: http://zeroturnaround.com/rebellabs/java-ee-productivity-report-2011/#redeploy_times
-
Long, Ugly Error Messages
SOURCE: FOR INSIGHT: The Play Framework at LinkedIn: Productivity and Performance at Scale by Yevjeniy Brikman http://www.youtube.com/watch?v=8z3h4Uv9YbE
!SOURCE FOR GRAPHIC: http://ptrthomas.wordpress.com/2006/06/06/java-call-stack-from-http-upto-jdbc-as-a-picture/
!
MVC Action
AOP TX Proxy
Business Logic
DAO
Spring-Hibernate
Hibernate
JDBC
Spring WebFlow
Acegi
Spring MVC
Tomcat / JBoss
-
! mvc org.springframework.web.servlet.DispatcherServlet contextClass org.springframework.web.context.support.AnnotationConfigWebApplicationContext ! contextConfigLocation com.zt.helloWeb.init.WebappConfig ! 1 ! ! mvc / ! / ! DefaultServletHandler
Crazy XML Configuration
SOURCE FOR INSIGHT: The Play Framework at LinkedIn: Productivity and Performance at Scale by Yevjeniy Brikman http://www.youtube.com/watch?v=8z3h4Uv9YbE
-
Bean Failuresorg.omg.CORBA.OBJECT_NOT_EXIST
SOURCE FOR GRAPHIC: Beginning Java EE 6 Platform with Glassfish 3 by Antonio Goncalves, Page 5.
X
-
Clunky Road to
RESTful URLs
WEB.XML springmvc /rest/* !CONTROLLER.JAVA @Controller @RequestMapping("/people") public class PeopleController { ! @RequestMapping(entrypoint/{collectionName}, method=RequestMethod.GET) public @ResponseBody String getPeople() { return GsonFactory.getInstance().toJson(LookupDao.getInstance().getPeople()); } ! @RequestMapping(value="{id}", method=RequestMethod.GET) public @ResponseBody String getPerson(@PathVariable String id) { return GsonFactory.getInstance().toJson(LookupDao.getInstance().getPerson(id)); } }
-
A Lot of Complexity!
-
I just want to write working software!
-
Is this the architecture we would create today?
-
The root of the problem
Impedance Mismatch between
HTTP and Java EE!
-
RESTful URLs vs. Java Servlets SpecImpedance Mismatch
-
Stateless HTTP vs. Stateful EJBs
SOURCE: http://cscie12.dce.harvard.edu/lecture_notes/2011/20110504/handout.html
SOURCE: Beginning Java EE 6 Platform with Glassfish 3 by Antonio Goncalves, Page 206.
Impedance Mismatch
-
Impedance Mismatch
Code & Refresh vs. WAR Deployment
-
Modern Web App Development
-
Buzzwords! HTML5 & Javascript
MVVM Frameworks
Mobile
NoSQL
Real-Time
Big Data
Asynchronous
Immutability
Connected Devices
-
Reactive Softwarehttp://www.ReactiveManifesto.org/
-
The Reactive ManifestoUp to now the usual way to describe this type of application has been to use a mix of technical and business buzzwords; asynchronous, non-blocking, real-time, highly-available, loosely coupled, scalable, fault-tolerant, concurrent, reactive, event-driven, push instead of pull, distributed, low latency, high throughput, etc. This does not help communication, quite the contrary, it greatly hinders it.
SOURCE: http://typesafe.com/blog/why_do_we_need_a_reactive_manifesto
Jonas Bonr
-
Reactive Software
SOURCE: http://www.ReactiveManifesto.org/
-
Meet Play Framework
-
Goal: Performance + Productivity
Performance
Prod
ucti
vity
SOURCE: http://typesafe.com/blog/webinar-a-java-developers-primer-to-the-typesafe-platform
-
No More JEE Container
SOURCE: Play for Java by Nicolas Leroux and Sietse de Kaper
-
Focused on Developer Productivity Live code changes when you refresh the browser
More friendly error messages directly in browser
Type safety in the templates
Cool console & build tools
-
Designed for the Modern Web RESTful by default
Auto-compile LESS and CoffeeScript files
JSON is a first-class citizen
Websockets, other HTTP Streaming Support
-
Stateless and Built for Scale Forces every aspect of your app to be stateless
Non-Blocking I/O
Well-suited for real-time
-
What exactly is it, though?
SOURCE: Play for Java by Nicolas Leroux and Sietse de Kaper
-
What exactly is it, though?Integrated HTTP Server
JBoss Netty (Non-Blocking IO)
Concurrent, Distributed, Fault-Tolerant
Background Processing
Akka
Build System &
Console
SBT
Java Virtual Machine
Template Engine, HTTP Request/Response Processing, Integrated Cache, RESTful Routing Engine, Asset Compilation,
Internationalization, Testing Tools
Play Framework
eBean / Anorm BoneCP
H2 Database Lots of libraries
-
Of course, nothings perfect1. You can mostly avoid Scala, but not completely
(of course, Scala itself is pretty cool)
2. For advanced build logic, SBT has a steep learning curve
3. Template system works well, but sometimes the functional paradigm can feel awkward
-
Lets around!
-
Intro Stuff1. Download and install
2. Play Console
3. Controllers
4. URL Routing
5. Templates
-
Intro Stuff1. Download and install
2. Play Console
3. Controllers
4. URL Routing
5. Templates
-
Intro Stuff1. Download and install
2. Play Console
3. Controllers
4. URL Routing
5. Templates
-
Intro Stuff1. Download and install
2. Play Console
3. Controllers
4. URL Routing
5. Templates
-
Intro Stuff1. Download and install
2. Play Console
3. Controllers
4. URL Routing
5. Templates
-
Intro Stuff1. Download and install
2. Play Console
3. Controllers
4. URL Routing
5. Templates
-
Lets Build Something
in the Time Remaining
-
So what did you like best today? Well take some votes and show the results real-time
-
Learning Play Framework I preferred the books to the documentation
For official documentation, best formatting is on playframework.com. Latest content is on github(https://github.com/playframework/playframework/tree/master/documentation/manual)
Community itself is pretty great
Google Group is great
Lots of questions on Stack Overflow
-
Check Out TypeSafe Activator
-
Q&A