Około roku 1965 naukowcy z firmy IBM potrzebowali zmierzyć efektywność działania pewnych nowych rozwiązań. Potrzebowano sposobu podzielenia maszyny na "mniejsze części", co umożliwiłoby testowanie wielu różnych wariantów rozwiązań w tym samym czasie. Każda taka część dysponująca swoimi zasobami miała być całkowicie niezależna od pozostałych.
Po przeprowadzeniu eksperymentów, firma IBM zaczęła sprzedawać implementację swojego rozwiązania (odtąd znaną jako maszyna wirtualna) jako system czasu rzeczywistego. Wiele firm i uczelni korzystało z tego systemu, ponieważ dawał on możliwość współdzielenia zasobów dostępnych na komputerach mainframe. Maszyna ta jest obecnie znana jako IMB System 370 (S/370) oraz IBM System 390 (S/390).
Odtąd maszyny wirtualne wykorzystywane były do rozwiązywania wielu problemów takich, jak przenaszalność programów, czy projektowanie systemów operacyjnych. Jednymi z pierwszych stworzonych do tych celów implementacji maszyn wirtualnych był system operacyjny Unix. Idea systemu przedstawiona została w artykule opublikowanym w 1974 roku przez Denise'a Richie'go i Ken'a Thompson'a z Bell Labs. Niedługo potem ich pomysły zostały zrealizowane przy budowie komputerów PDP-11 używanych na uczelniach. W szybkim czasie zostały one rozprzestrzenione na cały przemysł komputerowy. W 1980 roku komisja IEEE rozpoczęła prace nad projektem POSIX (Portable Operating System) w celu dostarczenia standardu dla funkcji bibliotecznych Unix'a. Dzięki temu każdy producent oprogramowania mógł napisać program używając standardowych funkcji bibliotecznych i przenieść kod do dowolnego systemu Unix'owego. W 1990 roku IEEE POSIX opublikował pracę "Information Technology Portable Operating System Interface", która specyfikowała standardy dla Unix'owskich API. Umożliwiało to procesom w Unix'ie działanie jako oddzielne maszyny wirtualne.
Od dawna marzeniem wielu programistów było pisanie oprogramowania, które działałoby na dowolnej platformie. W tym celu w połowie lat dziewięćdziesiątych powstał język programowania Java. Pomysłodawcą był Bill Joy, który już dwadzieścia lat wcześniej myślał nad stworzeniem nowego języka, który łączyłby zalety języków MESA i C. Na początku lat dziewięćdziesiątych James Gostling stworzył język Oak, który po latach pracy i wielu transformacjach został przemianowany na Java w 1995 roku. Java jest językiem obiektowym o składni zbliżonej do C czy C++.