Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Play 2: Java ET Scala

Play 2: Java ET Scala

Retour d'expérience sur l'utilisation des deux langages au sein du framework

Bastien Louërat

June 18, 2013
Tweet

More Decks by Bastien Louërat

Other Decks in Programming

Transcript

  1. Play 2: Java ET Scala Comment les deux technologies se

    marient-elles ? Problèmes rencontrés en passant de Scala à Java.
  2. Historique Play 1.x: ◦ 2007: Projet interne @ Zenexity. ◦

    2009: Open Sourcing. 1.0 release. ◦ 2010: Play 1.1 (Netty, Async WS, Scala, Future) ◦ 2011: Play 1.2 (Ivy, WebSockets, play.libs.F, Promise<T>, await) ◦ Décembre 2011: 1.2.4, fork yalp. Dev Play 2 Play 2.x ◦ 2012: Play 2.0, Typesafe stack 2. Scala, Akka & sbt ◦ 2013: Play 2.1, Scala 2.10, scala.concurrent.Future
  3. # Default path will just redirect to the computer list

    GET / controllers.Application.index # Computers list (look at the default values for pagination parameters) GET /computers controllers.Application.list(p:Int ?= 0, s:Int ? = 2, f ?= "") # Add computer GET /computers/new controllers.Application.create POST /computers controllers.Application.save # Edit existing computer GET /computers/:id controllers.Application.edit(id:Long) POST /computers/:id controllers.Application.update(id:Long) VERB route reverse Routing
  4. • "You don’t have to write complicated Scala code here"

    – Play for Java developpers • @foo.bar != @{foo.`type`} • error: No implicit Ordering defined for Foo foos.sorted Vues
  5. • Anorm par défaut. Minimal. Léger. « Parfait pour les

    p'tites faims » • Slick by Typesafe. Verbeux sans macro. Bases SQL - Scala
  6. • Ebean. Très léger. Génère mauvais DDL pour évolution. •

    JPA. ◦ Hibernate 4.0 (conversion JodaTime) ◦ Import du module javaJpa ◦ @Transactionnal & Akka Bases SQL - Java
  7. public class User { @Required public String email; public String

    password; public String validate() { if(authenticate(email,password) == null) { return "Invalid email or password"; } return null; } } :) :( Formulaires - côté modèles