Mavors
Power Member
o que é certo é que podes ter coisas em Java que não são objectos. se uma linguagem tem tipos primitivos, normalmente não se considera uma linguagem OO pura.
quanto a linguagens OO puras, o exemplo mais conhecido talvez seja o Ruby, mas, segundo a wikipedia, ainda tens o Smalltalk e o Eiffel (e certamente mais algumas).
Podes sempre deixar de usar as primitivas e assim fica uma linguagem OO pura.
Além dessa pequena falha dos tipos primitivos o Java tem tudo o que define uma POO.
Abstração, Encapsulamento, Polimorfismo, Heranças e Agregação, além de que tudo é um objecto (à excepção dos tipos primitivos). O C++ tb não é uma POO pela mesma razão (e um pouco mais).
Mas em relação às melhores linguagens para se aprender, isso é sempre complicado de definir. Na minha opinião seria Java e C++. Para Web, Java através de JSP's e de frameworks recentes como JSF, é mto seguro e potente.
Além disso, C++ é C++, e embora a minha área seja Java, tenho um grande respeito por essa linguagem.