var does absolutely nothing to make Java a less strictly typed language. There is absolutely no dropping of the requirement that each variable has a type which is known at compile time.

Automatic type inference and dynamic typing are totally different things.

I have not written a line of Java in at least a decade, but does Java not have any 'true' dynamic typing like C# does? Truth be told, the 'dynamic' keyword in C# should only be used in the most niché of circumstances. Typically, only practitioners of Dark Magic use the dynamic type. For the untrained, it often leads one down the path of hatred, guilt, and shame. For example:

dynamic x = "Forces of Darkness, grant me power";

Console.WriteLine(x.Length); // Dark forces flow through the CLR

x = 5;

Console.WriteLine(x.Length); // Runtime error: CLR consumed by darkness.

C# also has the statically typed 'object' type which all types inherit from, but that is not technically a true instance of dynamic typing.