Scala Development Tools

22
Development Tools In Scala Increase Programmer’s Productivity

description

A presentation about tools on scala world like g8 and others

Transcript of Scala Development Tools

Page 1: Scala Development Tools

Development Tools In ScalaIncrease Programmer’s Productivity

Page 2: Scala Development Tools

Me

https://facebook.com/hiraqhttps://twitter.com/_hiraq @_hiraq

Page 3: Scala Development Tools

Scala Programmer Levels

A1 : Beginning Application ProgrammerA2 : Intermediate Application ProgrammerA3 : Expert Application ProgrammerL1 : Junior Library DesignerL2 : Senior Library DesignerL3 : Expert Library Designer

Page 4: Scala Development Tools

Disclaimer

1. My Level -> A1 (Wannabe)2. Research > Coding

Page 5: Scala Development Tools

Why I Choose Scala ?

1. Twitter: From ruby to scala (backend)2. Foursquare: From php to scala (all)3. Mindtalk : From python to scala

from dynamic typing to static typing

Page 6: Scala Development Tools

Problem With Scala

1. Internet Connection2. Compile3. SABAR

Page 7: Scala Development Tools

Companies Using Scala

1. Twitter2. Foursquare3. Netflix4. Ebay5. Tumblr6. AirBnB7. Mindtalk8. …………...Apple?

Page 8: Scala Development Tools

Scala’s Frameworks

1. Lift2. Play (hello world)3. Scalatra4. Finatra (proved)5. Splay (toolkit)

Page 9: Scala Development Tools

Scala Web Server

1. Finagle (Twitter) -> Finatra2. Socko3. spray-can

Page 10: Scala Development Tools

Scala NoSQL Framework

1. Casbah (Mongodb) -> proved2. ReactiveMongo : Asynchronous Mongodb3. Sandra : Apache cassandra & Scala4. Scala-redis5. Gizzard

Page 11: Scala Development Tools

Scala Unit Test

1. Scalatest -> proved2. Scalacheck -> property based unit test3. Spec2 -> bdd

Page 12: Scala Development Tools

For Development

1. sbt (plugins: assembly / pack)2. conscript3. g8

Page 13: Scala Development Tools

SBT - (not so)Simple Build Tools

1. Scala2. Java3. c++

Page 14: Scala Development Tools

SBT - What’s for

1. Choose Scala Version2. Library dependency management3. Compile & package

Page 15: Scala Development Tools

SBT - Plugins

1. Assembly - Fat jar (Finatra)2. Pack - compile, packaging + installing

(support unix (linux) & windows), support versioning

https://github.com/sbt/sbt-assemblyhttps://github.com/xerial/sbt-pack

Page 16: Scala Development Tools

Conscript & g8

conscript : install & updateg8 : generate files & directories from templates published in github

Page 17: Scala Development Tools

g8 example template

1. fayimora/basic-scala-project : simple scala project + scala test2. pmandera/basic-scala-project : simple scala project + spec23. scalatra/scalatra-sbt : basic scalatra template

Page 18: Scala Development Tools

Installation - Conscript

curl https://raw.githubusercontent.com/n8han/conscript/master/setup.sh | sh

Page 19: Scala Development Tools

Installation - g8

curl https://raw.githubusercontent.com/n8han/conscript/master/setup.sh | sh

Page 20: Scala Development Tools

Command line

1. g8 fayimora/basic-scala-project2. sbt

Page 21: Scala Development Tools

Setup sbt pack

packSettings

packMain := Map("shorten" -> "api.hiraq.google.shortenurl.Shorten")

Page 22: Scala Development Tools

Demo - Google ShortenURL API

1. g8 -> fayimora/basic-scala-project2. Basic scala project3. Scalatest4. sbt pack

https://github.com/hiraq-scala/google-shorten-url