SlideShare a Scribd company logo
Scala Frustrations
in Real Development
Naoki Takezoe
@takezoen

NTT-DATA INTELLILINK
Abstract
• Scala is pretty good for real development.
• However Scala has also some bad points.
• Please note for these points when you introduce
  Scala into real development.
Scala 300 Recipes from Shoeisha
• Includes 300 Practical Scala
  Recipes.
• from Basic Scala topics to
  frameworks and tools.

Covers Play2, Akka, sbt, scaladoc, ScalaIDE,
ScalaTest, Specs2, Scalatra, ScalaQuery,
Anorm, Casbah, spray, scala-io, scala-time,
sjson, util-eval, scalaxb, Dispatch and more.
Why we are using Scala?
• Decrease costs of system development.
• We felt the limit of Java several years ago.
• Scala might be a breakthrough?
About Our Project
• Porting Java based web application to Scala.
• Over 170 HTMLs and 40,000 lines.
• 5 members on 6 months.

Before                        After
 Seasar2                      Play2 (Customized)
 Apache Click                 ScalaQuery (Cuztomized)
 S2JDBC                       PostgreSQL
 PostgreSQL + Tsearch         Apache Solr
 Raw JavaScript               jQuery + jQuery UI
Benefits of Scala
• Decrease amount of source code
 ▫ 40%-50% OFF
 ▫ Better abstraction techniques
• Decrease bugs
 ▫ More type safe
 ▫ Immutable data types
• Java Interoperability
 ▫ Many Java based Frameworks and Libraries are
   available
 ▫ Easy to port existing Java software
Benefits of Scala
• Decrease amount of source code
 ▫ 40%-50% OFF
 ▫ Better abstraction techniques
 Flexibility and Safety
• Decrease bugs
 ▫ More type safe
 ▫ Immutable data types
• Java Interoperability
 ▫ Many Java based Frameworks and Libraries are
   available
 ▫ Easy to port existing Java software
Scala Frustrations
Long compilation time
• Compilation is so much heavy.
• Painful for large application development.
Solution
 Buy high spec machines
 Asynchronous and automated build
ScalaIDE is heavy
• We meet a sandglass frequently.
Solution
 1. Turn off the incremental builder
 2. Turn off the code completion
 3. Try other IDE or text editor
sbt is NOT Simple Build Tool
• When we get a trouble, difficult to find a reason.
• Rapid version up causes compatibility problem
  of sbt plugins.
Solution
 We really need SBT in Action!
Scala Frustrations
Long compilation time
• Many code generation and template compilation.
• Development mode is slow also.
Solution
 Buy high spec machines
 Divide large project
 play2-fastassets decreases request
Inflexible Validation
• Client-side validation is not provided.
• Error Message can’t be contained field name.
Solution
 Original client-side validation framework
 based on Play2’s form definition

 Original helper to display error messages
Anorm is too simple
•   We have to write all SQL.
•   Magic does not already exist.
•   SQL is not type safe.
•   No support for dynamic SQL.
Solution
 Use other ORMs such as ScalaQuery.
 We used a combination of scalaquery-magic
 scalagen and mirage-scala.
Function22 Problem in form definition
• a.k.a. Tuple22 Problem
• Form can not have over 18 properties.
 val userForm = Form(
   mapping(
    "firstName“      -> text,
    "lastName“       -> text,
    "mailAddress“    -> email,
    "password“       -> text,
    ...                               Max   18 properties
    "tel“            -> text,
    "mobile“         -> text,
    "company“        -> text,
    "department“     -> text
   )(UserInfo.apply)(UserInfo.unapply)
 )
Solution
 Nested definition, BUT it’s not expectable.
   val userForm = Form(
     mapping(
      "firstName"      -> text,
      "lastName"       -> text,
      "mailAddress"    -> email,
      "password"       -> text,
      "companyInfo" -> mapping(
       "company"       -> text,
       "department"    -> text
      )(CompanyInfo.apply)(CompanyInfo.unapply)
     )(UserInfo.apply)(UserInfo.unapply)
   )
No Servlet and HttpSession
• Hard to port existing Java based web apps.
• We want to run Play2 on the servlet container by
  un-technical reasons.
Solution
 play2-war-plugin packs Play2 apps to war.

 play2-httpsession provides HttpSession
 by using with play2-war-plugin.
Scala Frustrations
solr-scala-client
https://github.com/takezoe/solr-scala-client

• Simple wrapper of SolrJ for Scala.
• Query converter using parser combinator.
import jp.sf.amateras.solr.scala._

val client = new SolrClient("http://localhost:8983/solr")

val result = client.query("name: ?name?")
 .getResultAsMap(Map("name" -> "ThinkPad & X201s"))
  // => name:("ThinkPad" AND "X201s")

result.documents.foreach { doc: Map[String, Any] =>
  ...
}
scalagen
https://github.com/takezoe/scalagen

•   Code Generator from RDBMS.
•   Supports Anorm and ScalaQuery in the current version.
•   Easy to add support for other ORMs.
•   Work as CLI and sbt plugin.
seq(jp.sf.amateras.scalagen.ScalagenPlugin.scalagenSettings: _*)

scalagenConfiguration := jp.sf.amateras.scalagen.Settings(
  // for ScalaQuery
  generator = new jp.sf.amateras.scalagen.ScalaQueryGenerator(),
  // for Anorm
  //generator = new jp.sf.amateras.scalagen.ScalaQueryGenerator(),
  driver = "org.hsqldb.jdbcDriver",
  url = "jdbc:hsqldb:hsql://localhost/",
  username = "sa",
  password = ""
)
scalaquery-magic
https://github.com/shimamoto/scalaquery-magic

• Extends ScalaQuery.
• Make a Magic (like old Anorm’s Magic) by code
  generation using scalagen.
    val userInfoDao = new UserInfoDao()
    // SELECT by ID
    val userInfo = userInfoDao.selectById(1)
    // INSERT
    userInfoDao.insert(UserInfo(DEFAULT[Int], 'userName', 'password'))
    // UPDATE
    userInfoDao.update(userInfo.copy(userName = 'newName'))
    // DELETE by ID
    userInfoDao.deleteById(1)
mirage-scala
https://github.com/takezoe/mirage-scala

• SQL Centric ORM similar to Anorm.
• Executable SQL template called 2waySQL.
SLEECT USER_ID, USER_NAME, PASSWORD
FROM USER_INFO
/*BEGIN*/
WHERE
  /*IF userId != null*/
   USER_ID = /*userId*/1
  /*END*/
 /*IF userId != null*/
   USER_NAME = /*userName*/ 'takezoe'
  /*END*/
/*END*/
play2-httpsession
https://github.com/takezoe/play2-httpsession

• Provide HttpSession for Play2 applications.
• Work with play2-war-plugin.
import jp.sf.amateras.play2.httpsession.HttpSessionSupport._

def index = Action { implicit request =>
 // retrieve the object from HttpSession
 val value: Option[String] = HttpSession[String]("key")

    Ok(value).withHttpSession {
      // store objects into HttpSession
      "key" -> "value"
    }
}
play2-fastassets
https://github.com/takezoe/play2-fastassets

• Decrease amount of request to external CSS,
  JavaScript and images by browser cache.
@(title: String)(content: Html)
@import jp.sf.amateras.play2.fastassets.FastAssets
<!DOCTYPE html>
<html>
 <head>
  <title>@title</title>
  <link rel="stylesheet" media="screen" href="@FastAssets.at("stylesheets/main.css")">
  <link rel="shortcut icon" type="image/png" href="@FastAssets.at("images/favicon.png")">
  <script src="@FastAssets.at("javascripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
 </head>
 <body>
  @content
 </body>
</html>
Scala Frustrations
Scala is practical
• You are evangelists of Scala.
• Please introduce Scala in your work.
• But so carefully, especially in the large project.
Scala is now glowing up!
• This way along which Java passed.
• Time will solve these problems.
• We can contribute Scala glowing.
Scala Frustrations

More Related Content

PDF
Scala active record
PDF
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
PDF
Java/Spring과 Node.js의공존
PPTX
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)
PDF
Infinispan,Lucene,Hibername OGM
PDF
April 2010 - JBoss Web Services
PDF
[Spring Camp 2013] Java Configuration 없인 못살아!
PDF
[2D1]Elasticsearch 성능 최적화
Scala active record
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Java/Spring과 Node.js의공존
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)
Infinispan,Lucene,Hibername OGM
April 2010 - JBoss Web Services
[Spring Camp 2013] Java Configuration 없인 못살아!
[2D1]Elasticsearch 성능 최적화

What's hot (20)

PDF
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
PDF
High Performance Django
PDF
The DOM is a Mess @ Yahoo
PPT
Using npm to Manage Your Projects for Fun and Profit - USEFUL INFO IN NOTES!
PDF
ニコニコ動画を検索可能にしてみよう
PPTX
Angular 1 + es6
PPTX
Getting started with Elasticsearch and .NET
PDF
JRuby @ Boulder Ruby
ODP
High Performance XQuery Processing in PHP with Zorba by Vikram Vaswani
PPT
Going crazy with Node.JS and CakePHP
PDF
Java FX 2.0 - A Developer's Guide
PDF
React, Redux and es6/7
PDF
Oracle adapters for Ruby ORMs
PDF
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
PDF
Dropwizard
PDF
HTML,CSS Next
PDF
ゼロから始めるScalaプロジェクト
PPTX
MongoDB: tips, trick and hacks
PPT
Building your first Node app with Connect & Express
PDF
No REST for the Wicked: REST and Catalyst
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
High Performance Django
The DOM is a Mess @ Yahoo
Using npm to Manage Your Projects for Fun and Profit - USEFUL INFO IN NOTES!
ニコニコ動画を検索可能にしてみよう
Angular 1 + es6
Getting started with Elasticsearch and .NET
JRuby @ Boulder Ruby
High Performance XQuery Processing in PHP with Zorba by Vikram Vaswani
Going crazy with Node.JS and CakePHP
Java FX 2.0 - A Developer's Guide
React, Redux and es6/7
Oracle adapters for Ruby ORMs
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Dropwizard
HTML,CSS Next
ゼロから始めるScalaプロジェクト
MongoDB: tips, trick and hacks
Building your first Node app with Connect & Express
No REST for the Wicked: REST and Catalyst
Ad

Similar to Scala Frustrations (20)

PDF
Scaling business app development with Play and Scala
PDF
Building Applications with Scala 1st Edition Pacheco
PDF
Martin Odersky: What's next for Scala
PPT
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
PPT
Evolving IGN’s New APIs with Scala
PPTX
Scala adoption by enterprises
PDF
Scala Frameworks for Web Application 2016
PDF
Typesafe stack - Scala, Akka and Play
KEY
Scala Introduction
PDF
Miles Sabin Introduction To Scala For Java Developers
PDF
A Brief Introduction to Scala for Java Developers
PDF
Scala, Akka, and Play: An Introduction on Heroku
PDF
Assist software awesome scala
PDF
An Introduction to Scala for Java Developers
PDF
BCS SPA 2010 - An Introduction to Scala for Java Developers
PDF
Short intro to scala and the play framework
PDF
Develop realtime web with Scala and Xitrum
PPTX
Scala, Play 2.0 & Cloud Foundry
PDF
An Introduction to Scala - Blending OO and Functional Paradigms
KEY
Java to Scala: Why & How
Scaling business app development with Play and Scala
Building Applications with Scala 1st Edition Pacheco
Martin Odersky: What's next for Scala
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
Evolving IGN’s New APIs with Scala
Scala adoption by enterprises
Scala Frameworks for Web Application 2016
Typesafe stack - Scala, Akka and Play
Scala Introduction
Miles Sabin Introduction To Scala For Java Developers
A Brief Introduction to Scala for Java Developers
Scala, Akka, and Play: An Introduction on Heroku
Assist software awesome scala
An Introduction to Scala for Java Developers
BCS SPA 2010 - An Introduction to Scala for Java Developers
Short intro to scala and the play framework
Develop realtime web with Scala and Xitrum
Scala, Play 2.0 & Cloud Foundry
An Introduction to Scala - Blending OO and Functional Paradigms
Java to Scala: Why & How
Ad

More from takezoe (20)

PDF
Journey of Migrating Millions of Queries on The Cloud
PDF
GitBucket: Open source self-hosting Git server built by Scala
PDF
Testing Distributed Query Engine as a Service
PDF
Revisit Dependency Injection in scala
PDF
How to keep maintainability of long life Scala applications
PDF
頑張りすぎないScala
PDF
GitBucket: Git Centric Software Development Platform by Scala
PDF
Non-Functional Programming in Scala
PDF
Scala警察のすすめ
PDF
Scala製機械学習サーバ「Apache PredictionIO」
PDF
The best of AltJava is Xtend
PDF
Scala Warrior and type-safe front-end development with Scala.js
PDF
Tracing Microservices with Zipkin
PDF
Type-safe front-end development with Scala
PDF
Macro in Scala
PDF
Java9 and Project Jigsaw
PDF
Reactive database access with Slick3
PDF
markedj: The best of markdown processor on JVM
PDF
ネタじゃないScala.js
PDF
Excel方眼紙を支えるJava技術 2015
Journey of Migrating Millions of Queries on The Cloud
GitBucket: Open source self-hosting Git server built by Scala
Testing Distributed Query Engine as a Service
Revisit Dependency Injection in scala
How to keep maintainability of long life Scala applications
頑張りすぎないScala
GitBucket: Git Centric Software Development Platform by Scala
Non-Functional Programming in Scala
Scala警察のすすめ
Scala製機械学習サーバ「Apache PredictionIO」
The best of AltJava is Xtend
Scala Warrior and type-safe front-end development with Scala.js
Tracing Microservices with Zipkin
Type-safe front-end development with Scala
Macro in Scala
Java9 and Project Jigsaw
Reactive database access with Slick3
markedj: The best of markdown processor on JVM
ネタじゃないScala.js
Excel方眼紙を支えるJava技術 2015

Recently uploaded (20)

PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
Big Data Technologies - Introduction.pptx
PDF
Electronic commerce courselecture one. Pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPT
Teaching material agriculture food technology
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
KodekX | Application Modernization Development
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Big Data Technologies - Introduction.pptx
Electronic commerce courselecture one. Pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
The AUB Centre for AI in Media Proposal.docx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
MYSQL Presentation for SQL database connectivity
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Chapter 3 Spatial Domain Image Processing.pdf
Teaching material agriculture food technology
Advanced methodologies resolving dimensionality complications for autism neur...
KodekX | Application Modernization Development
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf

Scala Frustrations

  • 1. Scala Frustrations in Real Development Naoki Takezoe @takezoen NTT-DATA INTELLILINK
  • 2. Abstract • Scala is pretty good for real development. • However Scala has also some bad points. • Please note for these points when you introduce Scala into real development.
  • 3. Scala 300 Recipes from Shoeisha • Includes 300 Practical Scala Recipes. • from Basic Scala topics to frameworks and tools. Covers Play2, Akka, sbt, scaladoc, ScalaIDE, ScalaTest, Specs2, Scalatra, ScalaQuery, Anorm, Casbah, spray, scala-io, scala-time, sjson, util-eval, scalaxb, Dispatch and more.
  • 4. Why we are using Scala? • Decrease costs of system development. • We felt the limit of Java several years ago. • Scala might be a breakthrough?
  • 5. About Our Project • Porting Java based web application to Scala. • Over 170 HTMLs and 40,000 lines. • 5 members on 6 months. Before After  Seasar2  Play2 (Customized)  Apache Click  ScalaQuery (Cuztomized)  S2JDBC  PostgreSQL  PostgreSQL + Tsearch  Apache Solr  Raw JavaScript  jQuery + jQuery UI
  • 6. Benefits of Scala • Decrease amount of source code ▫ 40%-50% OFF ▫ Better abstraction techniques • Decrease bugs ▫ More type safe ▫ Immutable data types • Java Interoperability ▫ Many Java based Frameworks and Libraries are available ▫ Easy to port existing Java software
  • 7. Benefits of Scala • Decrease amount of source code ▫ 40%-50% OFF ▫ Better abstraction techniques Flexibility and Safety • Decrease bugs ▫ More type safe ▫ Immutable data types • Java Interoperability ▫ Many Java based Frameworks and Libraries are available ▫ Easy to port existing Java software
  • 9. Long compilation time • Compilation is so much heavy. • Painful for large application development.
  • 10. Solution Buy high spec machines Asynchronous and automated build
  • 11. ScalaIDE is heavy • We meet a sandglass frequently.
  • 12. Solution 1. Turn off the incremental builder 2. Turn off the code completion 3. Try other IDE or text editor
  • 13. sbt is NOT Simple Build Tool • When we get a trouble, difficult to find a reason. • Rapid version up causes compatibility problem of sbt plugins.
  • 14. Solution We really need SBT in Action!
  • 16. Long compilation time • Many code generation and template compilation. • Development mode is slow also.
  • 17. Solution Buy high spec machines Divide large project play2-fastassets decreases request
  • 18. Inflexible Validation • Client-side validation is not provided. • Error Message can’t be contained field name.
  • 19. Solution Original client-side validation framework based on Play2’s form definition Original helper to display error messages
  • 20. Anorm is too simple • We have to write all SQL. • Magic does not already exist. • SQL is not type safe. • No support for dynamic SQL.
  • 21. Solution Use other ORMs such as ScalaQuery. We used a combination of scalaquery-magic scalagen and mirage-scala.
  • 22. Function22 Problem in form definition • a.k.a. Tuple22 Problem • Form can not have over 18 properties. val userForm = Form( mapping( "firstName“ -> text, "lastName“ -> text, "mailAddress“ -> email, "password“ -> text, ... Max 18 properties "tel“ -> text, "mobile“ -> text, "company“ -> text, "department“ -> text )(UserInfo.apply)(UserInfo.unapply) )
  • 23. Solution Nested definition, BUT it’s not expectable. val userForm = Form( mapping( "firstName" -> text, "lastName" -> text, "mailAddress" -> email, "password" -> text, "companyInfo" -> mapping( "company" -> text, "department" -> text )(CompanyInfo.apply)(CompanyInfo.unapply) )(UserInfo.apply)(UserInfo.unapply) )
  • 24. No Servlet and HttpSession • Hard to port existing Java based web apps. • We want to run Play2 on the servlet container by un-technical reasons.
  • 25. Solution play2-war-plugin packs Play2 apps to war. play2-httpsession provides HttpSession by using with play2-war-plugin.
  • 27. solr-scala-client https://github.com/takezoe/solr-scala-client • Simple wrapper of SolrJ for Scala. • Query converter using parser combinator. import jp.sf.amateras.solr.scala._ val client = new SolrClient("http://localhost:8983/solr") val result = client.query("name: ?name?") .getResultAsMap(Map("name" -> "ThinkPad & X201s")) // => name:("ThinkPad" AND "X201s") result.documents.foreach { doc: Map[String, Any] => ... }
  • 28. scalagen https://github.com/takezoe/scalagen • Code Generator from RDBMS. • Supports Anorm and ScalaQuery in the current version. • Easy to add support for other ORMs. • Work as CLI and sbt plugin. seq(jp.sf.amateras.scalagen.ScalagenPlugin.scalagenSettings: _*) scalagenConfiguration := jp.sf.amateras.scalagen.Settings( // for ScalaQuery generator = new jp.sf.amateras.scalagen.ScalaQueryGenerator(), // for Anorm //generator = new jp.sf.amateras.scalagen.ScalaQueryGenerator(), driver = "org.hsqldb.jdbcDriver", url = "jdbc:hsqldb:hsql://localhost/", username = "sa", password = "" )
  • 29. scalaquery-magic https://github.com/shimamoto/scalaquery-magic • Extends ScalaQuery. • Make a Magic (like old Anorm’s Magic) by code generation using scalagen. val userInfoDao = new UserInfoDao() // SELECT by ID val userInfo = userInfoDao.selectById(1) // INSERT userInfoDao.insert(UserInfo(DEFAULT[Int], 'userName', 'password')) // UPDATE userInfoDao.update(userInfo.copy(userName = 'newName')) // DELETE by ID userInfoDao.deleteById(1)
  • 30. mirage-scala https://github.com/takezoe/mirage-scala • SQL Centric ORM similar to Anorm. • Executable SQL template called 2waySQL. SLEECT USER_ID, USER_NAME, PASSWORD FROM USER_INFO /*BEGIN*/ WHERE /*IF userId != null*/ USER_ID = /*userId*/1 /*END*/ /*IF userId != null*/ USER_NAME = /*userName*/ 'takezoe' /*END*/ /*END*/
  • 31. play2-httpsession https://github.com/takezoe/play2-httpsession • Provide HttpSession for Play2 applications. • Work with play2-war-plugin. import jp.sf.amateras.play2.httpsession.HttpSessionSupport._ def index = Action { implicit request => // retrieve the object from HttpSession val value: Option[String] = HttpSession[String]("key") Ok(value).withHttpSession { // store objects into HttpSession "key" -> "value" } }
  • 32. play2-fastassets https://github.com/takezoe/play2-fastassets • Decrease amount of request to external CSS, JavaScript and images by browser cache. @(title: String)(content: Html) @import jp.sf.amateras.play2.fastassets.FastAssets <!DOCTYPE html> <html> <head> <title>@title</title> <link rel="stylesheet" media="screen" href="@FastAssets.at("stylesheets/main.css")"> <link rel="shortcut icon" type="image/png" href="@FastAssets.at("images/favicon.png")"> <script src="@FastAssets.at("javascripts/jquery-1.7.1.min.js")" type="text/javascript"></script> </head> <body> @content </body> </html>
  • 34. Scala is practical • You are evangelists of Scala. • Please introduce Scala in your work. • But so carefully, especially in the large project.
  • 35. Scala is now glowing up! • This way along which Java passed. • Time will solve these problems. • We can contribute Scala glowing.