In my opinion, we need to split 'statically/strictly typed' languages further.
I love pythons dynamic types, and I love haskells typesystem, because once you get used to it, it becomes pretty much as painless as having dynamic types.
On the other hand, I utterly hate Javas typesystem, because it tends to be pretty obnoxious and in the way (probably I am not enough of a type theorist to actually understand why this is the case, but I can see that there are a lot of cases in the java type system which are just annoying roadblocks).
The problem with java's type system is not that you are not enough of a type theorist, but that the people who designed it weren't. It is exteremly weak, inconsistent and confuses some fundamental concepts (like the difference between inheritance and subtyping). Many weirdnesses in generics and complexities in making modern languages interop with java on the JVM are for example just workarounds for the fundamentally broken semantics of java arrays (covariant, can you believe that?)
I love pythons dynamic types, and I love haskells typesystem, because once you get used to it, it becomes pretty much as painless as having dynamic types.
On the other hand, I utterly hate Javas typesystem, because it tends to be pretty obnoxious and in the way (probably I am not enough of a type theorist to actually understand why this is the case, but I can see that there are a lot of cases in the java type system which are just annoying roadblocks).