Une interface et un environnement
Nous avons vu dans le chapitre du BIOS que celui-ci fournit une interface commune aux divers matériels et qu'il se charge de démarrer le système d'exploitation. Le système d'exploitation agit aussi à la façon du BIOS en fournissant une interface standardisée aux programmes. Cependant, il facilite grandement la vie des programmeurs en effectuant plus de travail que le BIOS pour présenter une interface simplifiée.
Par exemple, pour accéder aux données du disque dur à l'aide du BIOS, il faut indiquer une section spécifique du disque, mais aussi connaître ce qui se trouve à cet endroit, en l'occurrence si ces données appartiennent bien à notre programme et pas à un autre. De plus, si l'entreposage des données nécessite plusieurs blocs sur le disque dur, il faut gérer ces blocs en mémorisant leur numéro et l'ordre dans lequel nous les avons utilisés. Cela devient vite fastidieux, sans compter qu'un programme pourrait facilement accéder et modifier les données d'un autre programme.
Le système d'exploitation nous permet de gérer les fichiers beaucoup plus facilement en leur donnant un nom et en écrivant dans ces derniers comme s'il s'agissait d'un contenant qui s'agrandit tout seul au besoin. En fait, sous le capot les choses sont beaucoup plus compliquées que cela, mais c'est le système d'exploitation qui s'occupe de tous les détails.
De la même façon, les systèmes d'exploitation modernes présentent une interface permettant de créer des fenêtres avec divers composants afin de communiquer avec l'usager. Ils gèrent aussi le partage des ressources entre les applications comme le clavier et la souris par exemple.
Et c'est encore le système d'exploitation qui contrôle l'exécution des programmes en chargeant les fichiers appropriés en mémoire et en attribuant le microprocesseur (notre petit robot) à tour de rôle à chacun des programmes.
C'est donc une pièce maîtresse de l'ordinateur qui est fort utile au programmeur en permettant l'accès aux ressources d'une façon simplifiée et ordonnée. En même temps, on peut comprendre que leurs services varient d'un système à l'autre et qu'il n'est donc pas possible d'exécuter un programme sur une machine qui utilise un système d'exploitation différent de celui pour lequel il a été conçu.
L'environnement Java tente de pallier cet inconvénient en fournissant un environnement semblable sur différentes machines. C'est comme un système d'exploitation par-dessus un autre. En effet, Java possède son propre système de fenêtrage et de gestion des fichiers par exemple, mais il fait appel au système d'exploitation original de la machine pour effectuer le travail proprement dit. L'avantage d'un tel système est que le même programme peut fonctionner sur des machines employant des systèmes d'exploitation différents, à condition évidemment qu'un environnement Java soit installé sur cette machine.