Day after Codemotion 2015, this is my overall opinion of the event: meh. Don’t get me wrong, technical sessions have been quite interesting, full of really nice people and organization must have worked really to get the event running. But, in my opinion, this event is dying of success. Way too many assistants, making really hard to walk from one session to another (even having 15 min between them), or having to arrive 30 min before start if you’re intention was to have a nice place to plug your laptop and be able to see the presentation.
Purpose of this post is to provide a glimpse of the new features included in Java 8 that shift this language towards a more Functional Programming paradigm. But before, let’s define what we understand for Functional Programming (FP). Functional programming key characteristics include:
Higher Order Functions Pure Functions and Immutability Tail Call Recursion Higher Order Functions for a FP language means that functions are considered first class citizens, allowing the programmer to use them as any other value the language defines, for example, a Function value:
As March 11th, Pivotal dropped its financial sponsorship for Groovy, and despite of not really endangering it, as Groovy is an already well established language with a great community backing it, it raised many concerns, as the required boost a platform like this deserves was missing until now. Furthermore, its creator and project leader until lately, Guillaume Laforge, also recently stepped back in order to focus in Restlet.
Also the recent release of Java 8, with the introduction of lambdas into the Java language has increased the interest and traction of Java, making a lot of people question if there were still room for other JVM languages, even more being so closed to Java.
It’s been a little more than a year since Java 8 was released (2014/03/18) and you might think that it’s a little too late for a What’s new in post. In fact latest public update available is 8u40, so let’s review not only what was initially included in Java 8, but what else has changed during this first year, up to release 8u40.
Lots of changes were included in the initial Java 8 release, being probably the most notable of them, in my opinion (feel free to disagree, looking forward to discussions):