My 0.02 on lambda's: they add a function programming aspect to Java that has been missed for years, and can make development much easier in situations where function programming may be a better option (and mindset). This may not be in every application, but these situations can be encountered during development when the data model doesn't change relative to the frequency of the operations on the data. A simple example is a calculator - the data model virtually does not change (numbers). One may create a calculator to do basic math. Then, requirements need to be met to add some statistics (mean, standard deviation, etc...). Then requirements come in to do nested (find even numbers then count frequency, 2-level sorting, etc...) or recursive operations (prime numbers, sorting, ...). Taking a functional programming approach, in my view, is a much better approach to tackling this sort of development: quicker, cleaner, and more maintainable - no need to constantly implement an interface or method (and create instances of), the interface that defines behavior may need changing (or a new interface created) to adapt to different ways to manipulate the data (both of which may require full project refactoring), no need to explicitly define Collection loops (Streams do it for you - and in parallel if necessary).