VB.NET is no more dynamic than either Java or C#. (Less so than C#, if anything: it doesn't support dynamic variables.)
And it's had that behavior for much longer than C# has; I think since the very first version of the language. Though I suspect that the implementation of late binding has become more efficient since the DLR came along.