If you like Java's type checking, you'll love any language with a modern Hindley-Milner type system. (Haskell is one; I believe OCaml is another.) My mental model of this type systems keeps evolving; right now it's something like a lightweight OO system with easy and unambiguous multiple inheritance, augmented with recursive typing. Of course I despised it when I started writing Haskell -- I was used to the Lispy "lots of conses" method of functional programming -- but it's grown on me.
Yours in pedantry,