Java 8 introduced several new features that improved the Java programming language. Key new features included lambda expressions to treat functions as data, improvements to annotations to allow deeper integration with compilation, and default methods to allow interfaces to be extended without breaking existing code. The libraries were also updated with new packages for streams, date-time handling and unsigned integers, improving functionality.