@_JamesWard and @mraible
Play 2 and Grails 2 are often hyped as the most productive JVM Web Frameworks.
* We wanted to know how they enhanced the Developer Experience (DX).
Stretch Goals: Search, Photo Upload to S3
Play is based on a lightweight, stateless, web-friendly architecture and features predictable and minimal resource consumption (CPU, memory, threads) for highly-scalable applications - thanks to its reactive model, based on Iteratee IO.
Play is based on a lightweight, stateless, web-friendly architecture and features predictable and minimal resource consumption (CPU, memory, threads) for highly-scalable applications - thanks to its reactive model, based on Iteratee IO.
Powered by Spring, Grails outperforms the competition. Dynamic, agile web development without compromises.
Powered by Spring, Grails outperforms the competition. Dynamic, agile web development without compromises.
Later added: QA Person and BrowserMob
We developed the same app, in similar ways, so let's look at the different layers.
grails-app/conf/DataSource.groovy
conf/evolutions/default/2.sql
Using Heroku Postgres in production rocks!
grails-app/conf/UrlMappings.groovy
conf/routes
grails-app/domain/happytrails/Region.groovy
app/models/Direction.java
grails-app/controllers/happytrails/HomeController.groovy
app/controllers/RouteController.java
grails-app/views/region/show.gsp
app/views/region.scala.html
grails-app/controllers/happytrails/RouteController.groovy
grails-app/views/route/create.gsp
app/controllers/RouteController.java
app/views/signupForm.scala.html
IntelliJ Rocks!
grails-app/jobs/happytrails/DailyRegionDigestEmailJob.groovy
app/jobs/DailyRegionDigestEmailJob.java
grails-app/controllers/happytrails/RegionController.groovy
app/jobs/DailyRegionDigestEmailJob.java
grails-app/jobs/happytrails/DailyRegionDigestEmailJob.groovy
* powered by the mail plugin (built-in)
app/jobs/DailyRegionDigestEmailJob.java
conf/prod.conf
app/models/S3Photo.java
app/controllers/RegionController.java
test/unit/happytrails/RouteTests.groovy
* Grails plugins often aren't in test scope.
test/ApplicationControllerTest.java
grails-app/conf/BootStrap.groovy
app/Global.java
grails-app/conf/Config.groovy
conf/prod.conf
Spring Security UI Plugin, I love you!
grails-app/conf/Config.groovy
app/controllers/Secured.java
app/controllers/RegionController.java
Bike (Grails)
Hike (Play)
Bike (Grails)
Hike (Play)
* Presentation created with Reveal.js, Google Charts and GitHub Files.
Learn something new*!
* Or prove that we're wrong...