Jede Kopie des Quellprogramms muss in eine ausführbare Datei übersetzt werden, die die richtige für jede Maschine ist:
Idealerweise muss nur ein Programm in einer höheren Sprache geschrieben werden. Diese Quelldatei kann dann in verschiedene ausführbare Dateien übersetzt werden, von denen jede die richtigen Maschinenbefehle für den jeweiligen Prozessor enthält. Auf diese Weise kann ein Spiel für Desktop Computer und Spielkonsolen erstellt werden.
Die Idee der Verwendung einer Quelldatei für mehrere ausführbare Dateien, die in verschiedenen Prozessoren laufen, ist Teil der Software-Portabilität. Wir würden lieber ein Programm nur einmal schreiben (in einer höheren Sprache) und in der Lage sein es auf jedem Computersystem laufen zu lassen, indem wir es in die Maschinensprache dieses Systems übersetzten.
Gewöhnlich funktionieren die Dinge leider nicht so einfach. Es gibt genug kleine Probleme, so dass ein beträchtlicher menschlicher Arbeitsaufwand nötig ist, um ein Programm auf einem anderen System zum Laufen zu bringen.
Einer der großen Vorteile von Java ist, dass es automatisch zwischen Computersystemen, die Java Unterstützung haben, portabel ist.
Angenommen, dass ein Unternehmen Programmierern 85 Euro pro Stunde zahlt, um Applikationsprogramme zu schreiben, die sowohl auf Pentium Computern laufen als auch auf Computern mit einer anderen Prozessorarchitektur. Wird das Unternehmen wollen, dass Programmierer in Java programmieren oder in einer anderen höheren Sprache wie z.B. C++?