Upload
hujak-hrvatska-udruga-java-korisnika-croatian-java-user-association
View
104
Download
4
Embed Size (px)
Citation preview
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
• Lover introductory cost
– Open Source
– Doesn’t enforce expensive infrastructure(Commodity Hardware)
• Free of any vendor lock-in
• Commercial support 24x7
Open source based
Powered by
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
What is Scala?
• Statically typed language on JVM
• Functional style programming - not enforced
• case classes, traits, monads, implicits, lazy val, high order
• checked exceptions gone, semicolons gone, brackets almost gone, pattern matching
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
What is PlayFramework?
• lightweight, stateless, web-friendly architecture
• make your changes and simply hit refresh! All you need is a browser and a text editor.
• IDE support for Eclipse and IntelliJ IDEA
• support for Java or Scala
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
Activator
• activator ui – in browser templates and starters
• http://127.0.0.1:8888/home
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
Play application structure
• convention over configuration
• build.sbt – Scala build tool
• app folder – controllers and views
• conf folder – all configuration files
– application.conf
– logback.xml
– routes
• test folder – unit test folder
• public – static assests ( .js, images, css)
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
build.sbt
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
HTTP request & responses
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
conf/routes
HTTP method
URL path Controller method
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
Action, Controllers, Result
• Routes – conf/routes.xml:
• Controllers: controllers/HomeController.scala or .java
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
Javantura speaker database -model
case class Company(id: Long, name: String)
case class Speaker(id: Long,name: String,session: String,registrated: Option[Date] ,companyId: Option[Long])
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
Evolutions
• H2 database & browser included
• can be any other database
• db.default.url="jdbc:h2:mem:play;MODE=MYSQL"
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
Working with database
• Anorm, Slick, Ebeans
• HikariCP– JDBC connection pools
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
Update example - anorm
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
Working with JSON
• Automatic conversion to and from case classes with minimal boilerplate.
• Custom validation while parsing.
• Create JSON from object:
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
Testing
• Scala: integration with ScalaTest, specs2
• Java: integration with Junit
• Mockito library included
• natural languge mimicing
• Testing with a server
• Testing with a browser – Selenium WebDriver, FluentLenium
• Integration test
• Model test
• activator test
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
Javantura Speakers Test
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
Installation & running
• activator dist
• standalone version of application
• ready to run zip (start.bat or BASH script included)
• only JAVA JRE is needed on server
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
Javantura speakers database
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
Javantura speakers database - DEMO
• Code available at:
https://github.com/kdujmic/javanturaplay
Links:
• https://playframework.com
• http://www.scalatest.org/
• https://etorreborre.github.io/specs2/
• https://www.scala-lang.org/
A Laginjina 7a, 10 000 Zagreb T + 385 (0)1 461 11 11 F + 385 (0)1 461 27 22 E [email protected] W www.etna.hr
Tnx!