Java me parece un desastre para empezar, no por nada, si no porque no hay reserva de memoria ni punteros( bueno en realidad todo son punteros pero esa es otra historia..) y luego cuando cojas algo con reserva de memoria y punteros vas a querer matar a alguien.
Yo personalmente te recomiendo que te inicies en C y en cuanto aprendas lo básico pasar a un c++ básico (c++ se puede complicar mucho como dicen por arriba, pero no tienes por qué hacer uso de todo) para irte haciendo la cabeza a la orientación a objetos, que en cuanto entiendes el concepto y lo dominas se simplifica la codificación muchismo.