For me it's invokedynamic, Diamond Operator, try-with-resources, NIO.2 API and multi-catch. I was pretty happy with the scope of Java 7, invokedynamic will prove to be its most important feature going forwards....
[list]switch case variables accepting the string literals
Allowing underscores in between digits. Numeric value is more readable when we use underscores in between (e.g. Debit card or credit card number is 16 digit so if you use underscore in between for every 4 digits).
1. Switch with Strings
2. Enhanced For loop
3. Try with resources
4. underscores between digits (I don't know how many times I've missed a zero when writing large numbers resulting in headaches later on)
5. Diamond operator
1. new file io giving control over modern file systems especially POSIX alike.
2. Auto resources freeing
3. Forks for easier parallel programming
4. Switch with "String" cases (absolutely love it)
5. <> for reducing typing efforts
6. Just forgot variable arguments improvements giving me possibility to create generic arrays.
I am spoiled by Java 7 and can't wait using Java 8 with default methods, enclousers and other bells and whistles. What about you?