Możesz spokojnie uczyć się nawet Javy 1.5, a nawet przy pewnej ostrożności Javy 1.2 (kiedyś nazywana była "Java 2", co w przyszłości doprowadzi do pomyłek niektórych osób). Nawet gdyby obudził się jakiś hibernatus, który znał tylko Javę 1.0, to jeżeli trzymałby się wyłącznie dokumentacji mógłby tworzyć działające programy w Javie 1.8. Od najstarszej wersji Javy powstało kilka nowych paradygmatów programowania i odkryto w związku z tym kilka własności z tym związanych. Dlatego Java zmieniała się w czasie i coś co kiedyś uznawano za prawidłowe, dzisiaj takim nie jest. Mimo to środowisko tego języka pozwala nie tylko na działanie takich programów, ale nawet na ich kompilację pod nowszymi wersjami opatrując niezbyt dobre z dzisiejszego punktu widzenia elementy ostrzeżeniami z których łatwo się dowiedzieć gdzie należy dowiedzieć się więcej i jak coś poprawić zgodnie ze współczesną wersją języka.
Mi też kiedyś wydawało się, że Java jest niewydajna bo na jej starcie była językiem interpretowanym, dopiero potem kompilowanym - i to też do kodu uniwersalnego jakim jest kod bajtowy. Jednak od czasów kiedy wymyślono kompilację/konwersję kodu binarnego w locie nie ma to wpływu na degradację wydajności. Kod źródłowy Javy jest kompilowany do kodu maszynowego idealnego nieistniejącego procesora, ale potem ten kod jest jeszcze dodatkowo konwertowany uwzględniając możliwości i ograniczenia docelowego procesora. Dzięki temu CPU wykonuje swój kod maszynowy w swoim środowisku, który jest tak wydajny jak starannie udało się przełożyć niskopoziomowy kod bajtowy na równie niskopoziomowy kod CPU. Nierzadko wygenerowany kod maszyny docelowej jest nawet nieco bardziej wydajny od kodu wyprodukowanego przez generator kodu kompilatora natywnego. A przynajmniej nie gorszy. Kompilator natywny jest od razu ograniczony specyfiką docelowego CPU, a kompilator Javy jest ograniczony jedynie specyfikacją maszyny wirtualnej. To pozwala niektóre konstrukcje kodu wysokopoziomowego Javy przełożyć na kod niskopoziomowy efektywniej, a jednocześnie wciąż przenośnie. A potem następuje jeszcze drugi, opcjonalny poziom przełożenia kodu, który nie jest już przenośny i istnieje tylko w pamięci RAM docelowej maszyny. Jest pewna klasa programów wysokopoziomowych, które działają dzięki temu szybciej niż w innych językach wysokopoziomowych kompilowanych bezpośrednio do kodu natywnego. Mimo to istnieją kompilatory Javy do kodu natywnego wielu CPU.
A co do możliwości stworzenia systemu operacyjnego w Javie, to stało się to faktem, mimo to że nie użyto do tego ani razu JVM od Suna, lecz autorskie rozwiązania.