Java employs the “last mover advantage” strategy. They wait a bit for other mainstream-ish languages to be a testbed for a new feature, and if it proves worthwhile, they try to incorporate it into the language. But a new feature is a huge responsibility, since it will have to be maintained “forever”.
C# on the other hand is quite brave and quick to implement everything under the Sun, sort of similarly to c++ - which sooner or later will create a really bloated language (imo, both are already quite complicated). And in backward compatibility, Java definitely wins the cake.