Kotlin on the JVM is a nice improvement over Java, still statically typed, the compiler infers the type for obj.<p><pre><code>  var obj = MyObject()
  ...
  obj.foo()
</code></pre>
So you could change the obj instantiation to a different type and as long as the new type has foo() too then you&#x27;re good to go.<p>Also you can have your typed properties stored in a map, which you could also add other values to dynamically at runtime.<p>from <a href="https:&#x2F;&#x2F;kotlinlang.org&#x2F;docs&#x2F;reference&#x2F;delegated-properties.html" rel="nofollow">https:&#x2F;&#x2F;kotlinlang.org&#x2F;docs&#x2F;reference&#x2F;delegated-properties.h...</a><p><pre><code>  class MutableUser(val map: MutableMap&lt;String, Any?&gt;) {
    var name: String by map
    var age: Int     by map
  }
</code></pre>
I haven&#x27;t used Scala but its (Duck)Structual Typing seems like it would get closer again to a dynamic typing feel with static types. Java is pretty verbose and limited in ways, and many devs having backgrounds in EJBs and Struts doesn&#x27;t help. It would be interesting to see the same side-by-side project comparison in those links with a team using Scala well. Anyway thats all coming from my bias of having done 12 years of Java and 1 year of full Javascript with Angular.