Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies
Scala on Android: Experiences at Bump Technologies

Editor's Notes

  • #2 \n
  • #3 \n
  • #4 \n
  • #5 \n
  • #6 \n
  • #7 \n
  • #8 \n
  • #9 \n
  • #10 \n
  • #11 \n
  • #12 \n
  • #13 \n
  • #14 \n
  • #15 \n
  • #16 \n
  • #17 \n
  • #18 \n
  • #19 \n
  • #20 \n
  • #21 \n
  • #22 \n
  • #23 \n
  • #24 \n
  • #25 \n
  • #26 \n
  • #27 \n
  • #28 \n
  • #29 \n
  • #30 \n
  • #31 \n
  • #32 Example of some dense Scala code from Bump. Imagine what this would look like in Java.\n
  • #33 That’s Indy driving. Michael is in the passenger seat. Obviously this picture was taken a few months ago when he had more hair.\n
  • #34 \n
  • #35 ADT and Scala plugins do not play well together. You can get them to not step on each other so much, but your life will still suck.\n
  • #36 ADT and Scala plugins do not play well together. You can get them to not step on each other so much, but your life will still suck.\n
  • #37 ADT and Scala plugins do not play well together. You can get them to not step on each other so much, but your life will still suck.\n
  • #38 ADT and Scala plugins do not play well together. You can get them to not step on each other so much, but your life will still suck.\n
  • #39 ADT and Scala plugins do not play well together. You can get them to not step on each other so much, but your life will still suck.\n
  • #40 But wait, didn’t we pick Scala because of the promised developer productivity?\n
  • #41 How we got our agility back\n
  • #42 How we got our agility back\n
  • #43 How we got our agility back\n
  • #44 How we got our agility back\n
  • #45 How we got our agility back\n
  • #46 How we got our agility back\n
  • #47 \n
  • #48 Scalac compiler pukes on the Java code produced by the protocol buffers Java compiler, hence initial javac step. Pro Guard rips out Scala code from scala-library.jar that we don’t need. Dex is the Android compiler. It takes Java class files and produces Dalvik byte code.\n
  • #49 Build everything, rip out app code, put the rest in a jar, and then use Eclipse/IntelliJ.\n
  • #50 Android Parcelables require a public static field called PARCELABLE. A val in a companion object offers equivalent functionality, but is compiled into a method, not a field. Scala team hacked the compiler for Android as result: https://lampsvn.epfl.ch/trac/scala/changeset/22628\n
  • #51 ~7M total downloads. 4 star rating. Featured on the Android Market. \n
  • #52 Tricky to access non-static inner classes defined in Java, such as android.os.PowerManager.WakeLock\nCan’t send Scala collections between processes\nClosures -> Mystery classes -> Many allocations and leaked memory\nHard to debug crashes that happen on a line with multiple statements, closures, etc.\n
  • #53 Hiring. Hiring. Hiring. Hiring. Hiring. Hiring. Hiring. Hiring. Hiring. Hiring. Hiring. Hiring. Hiring. Hiring. \n