Emerging Languages Bowl
Speaker: Trisha Gee (JetBrains) and Eugene Petrenko (JetBrains) – moderated by Raghavan “Rags” Srinivas
For more blog posts, see The Oracle Code One table of contents
Rags talked about how this is a different format than the usual “script bowl”. I’ve never been so not disappointed
Java (Trisha)
- Inspired features from scripting languages
- Lambdas
- Streams – would be hard to use without lambdas because would need anonymous inner classes
- RPEL
- var
- Not a functional language, but idioms that came from functional languages
- Not in Java
- Immutable “var” – do you use var/val, var/let, var/final var? We have “final var”, but it isn’t immutable. Just prevents re-assignment. But are getting immutable collections.
- Future
- data classes [records]- Kotlin has this. Preview feature in Java 12
- multi-line strings – Groovy has this.
- Switch statements/pattern matching. Preview feature as well
- Preview features are a good thing because can discuss with real code
Kotlin (Eugene)
- Statically typed
- Now official on Android
- Concise – minimal boilerplate
- Safe – avoid classes of errors like null pointers
- Interoperable – use JVM and Android libraries
- Tool friendly – works with any Java IDE
- Can combine Java and Kotlin in same module
- Kotlin invented in 2000. Version 1 came out in 2005
- Can target Java 1.6 (or higher if want)
“The only way to learn a new programming language is by writing programs in it” -Dennis Richie
IntelliJ has plugin which gives sample tasks
Kotlin demo
- fun main() {} – function – defaults to void return type
- fun main() : ReturnType {} – function with return type. Can use generics in types
- “Hello ${abc}” – string interpolation
- Triple quotes – multi line string
- trimIndent() – extra method
- var/val – mutable/immutable
- var x : String – not nullable
- var x : String? – nullable
- if ( x is Type) – auto casts inside if statement
- fun Class.method() = impl – add method from outside class. It can even use instance variables from inside the class.
- sealed class – all subclasses must be defined in same file
- when/is – pattern matching
My take: I don’t know what the session was supposed to be, but this was fine. It was 10 minutes of Trisha and Eugene introducing Kotlin for 30. I have seen the intro to Kotlin talk before though. That said, I still needed Google for what one thing did.