If you can write object-oriented programs in Java, and you'd like to write even better Java, then this course is for you. Starting with real business problems, see how concepts from functional programming can help you in Java. From function values to streams, learn the significance of some of Java 8's additions -- and get the same benefits in Java 6! This course teaches ways of thinking that help functional programmers write code that doesn't break. This course is designed for Java programmers, although any object-oriented developer can benefit from the very clear explanations of concepts. It assumes no familiarity with functional programming. After this course, you'll have more design options and ideas, and you'll find writing Java more fun than before.