A L A • findView without casts -> a trait • scala one liners -> hard to read by others but nice in collections • scala -> 2.8M with proguard -> heaviest environment • NPE -> with optionals, great solution IMHO • implicit context -> magic everywhere • traits -> quite common (kotlin, ceylon, ‘groovy’…) • no getters/setters -> quite common • pattern matching -> it’s nice but pure functional style • case classes -> a glorified switch/if
O I D new SVerticalLayout { STextView("Sign in").textSize(24.5 sp).<<.marginBottom(25 dip).>> STextView("ID") SEditText() STextView("Password") SEditText() inputType TEXT_PASSWORD SButton("Sign in") this += new SLinearLayout { SButton("Help") SButton("Sign up") }.wrap }.padding(20 dip)
, i r re s p o n s i b l e , i n s a n e p e o p l e a re b e t t i n g t h i s . ” “ G o , f o r C p e o p l e w h o h a t e C + + b u t a re t o o a f r a i d o f re a l I D E s f o r J a v a . ” J a k e W h a r t o n
S S C A L A , F I G H T ! • Kotlin ppl are nice: comparison to scala -> if u are already using Scala or need sth on that list… • A good, external, comparison
S S C A L A , F I G H T ! • The main design goals behind “Kotlin” are: • To create a Java-compatible language, • That compiles at least as fast as Java, • Make it safer than Java, i.e. statically check for common pitfalls such as null pointer dereference, • Make it more concise than Java by supporting variable type inference, higher-order functions (closures), extension functions, mixins and first- class delegation, etc; • And, keeping the useful level of expressiveness (see above), make it way simpler than the most mature competitor – Scala.