Да простят меня потомки за этот псто...
Изучайте с++. во-первых, намного более сложный язык, с более высоким порогом вхождения, во-вторых, он научит вас контролировать код. Как то так.
из литературы рекомендовал бы 1. трупа страуса (Бьерн(бьёрн, бьярн) Страуструп. Язык программирования С++) 2. труд "банды четырех" "Design Patterns: Elements of Reusable Object-Oriented Software". На русском не видел, читал в оригинале. Шедевр.
Эти две книги, на мой скромный взгляд, дадут _исчерпывающее_ представление об ООП вообще, и о С-подобных языках в частности (да-да, джава - наследник С)
UPD
Кстати, судя по тому, что я видел, разработчики l2j вторую книгу в глаза не видели. Ибо чуть больше чем половину _нужно_ делать иначе
*приготовился уворачиваться от камней*