A nice overview of Java 8, but most of it is stale news.
However, Pluggable types in Java 8 was news to me!
() -> 0
I didn’t realize λ-expressions and especially traits had made it in. This is great. But Java started with true lightweight threads, just like Erlang’s or Go’s. They were called “green threads”. They got replaced for reasons I am still unclear on.
I hadn’t heard of Kotlin before, even though it’s more than two years old. It sounds like it might be interesting. The article says “it has to mature before it’s fit for use in production,” though.
I was surprised by “the JVM has the best garbage collection implementations in widespread production use”, but it turns out to be true now. In the past, Java used several times as much memory as other languages in the Shootout, but apparently it no longer does.
I didn’t know that Java’s compile-time type system is now extensible via annotations, which could potentially do arbitrary theorem proving at compile time. Checker currently uses this to implement nullness, physical units (dimensional analysis), tainting, static concurrency checking, side-effect-free-ness, regex checking, linearity, and so on. The article says it “isn’t ready for primetime yet”.
Java’s GC story has improved tremendously over the years. CMS is remarkably good these days, as long as you play nicely with it. Once you start venturing into big heaps, you need to start thinking about explicit memory management tricks.
GC is kinda a dark voodoo and not talked about much, so I would add this to the article:
As someone who has used both Ant/Ivy and Maven in anger, I have a hard time getting through something after I read the statement:
“It combines the simplicity of Maven with the power and flexibility of Ant”