• Java is seriously verbose. • Java has poor type inference. • Java has only low-level support for concurrency and parallelism. • Java generates a dependency hell . “ ” • Java is a 1990s imperative language that isn't really object-oriented. • …
• Can Java: • Be less verbose. • Have better type inferencing. • Do concurrency and parallelism better. (Doug Lea, Brian Goetz and others have been doing great work on this for a while, but ) … • Have a reasonable module system, cf. Jigsaw vs. OSGi. • Be a real object-oriented language.
and object-oriented. • Very declarative style of expression. • Strong support for data parallelism. Also Akka for actors and such-like. • Strong static type checking with inferencing and reified generic type parameters.
• Object-oriented, with functional elements • Strong static type checking with inferencing. • Has modules. • Allows extension methods. • Compiles to JavaScript or JVM to support end- to-end Web applications development. • Runs on Android.
• Object oriented with functional features. • Strong static typing with inference. • Explicit module system. • JavaScript and JVM backends so as to be end-to-end for Web applications development.
this statically typed, object-oriented (with functional bits) language for the JVM will remain unnamed at this time to preserve an air of mystery and suspense.
is it's value represented as a floating point number? • We can only obtain an approximation. • A plethora of possible algorithms to choose from, a popular one is to employ the following integral equation. π 4 =∫ 0 1 1 1+x2 dx
Use quadrature to estimate the value of the integral which is the area under the curve. – π= 4 n ∑ i=1 n 1 1+( i−0.5 n ) 2 With n = 3 not much to do, but potentially lots of error. Use n = 107 or n = 109? Embarrassingly parallel.
• Object-oriented with functional features. • Extension methods. • Compiles to JVM bytes codes or JavaScript, cf. GrooScript. • Runs on Android. • Scripts. • A dynamic language with a run time meta-object protocol.
Traditional dynamic Groovy but with full static (compile-time) type checking. • @CompileStatic: • Full static typechecked, compilation to bytecode at compile time. • No dynamic meta- object protocol.