I have tried to summarize discussion for our company(we use kotlin,java,scala):
And our checklist is
- when you need jvm and statically typed language
- use java
- when you write low level decision (application server)
- use kotlin
- when you need high level decision(web app)
- when there are enough standard arithmetic with java types(int,Bigdecimal,String, etc)
- use scala
- when you need high level decision
- when you really need custom arithmetic
- use java
There are options of course, it is just simple start point.
We specialize on data processing.
So if scala had successful whitebox macros or just external preprocessors I would have arguments against the second option.
It would be also usfull:
- xml literals is deprecated
It is useful sometimes - delayedinit is deprecated
It is just argument for kotlin - symbol literals is depricated
We need good dynamic mutable\immutable pojo - etc