Kompilering

Ett datorprogram skriver man i ett programspråk, t ex Java. En dator "förstår" inte ett sådant program. Det enda datorn kan göra är att följa mycket enkla instruktioner av typen "addera två tal", "lagra ett tal på en bestämd plats i minnet", "undersök om två tal är lika" osv. Detta kallas för maskinkod. Varje typ av dator har sin egen maskinkod.

En kompilator är ett datorprogram som läser ett datorprogram och kontrollerar att programkoden inte bryter mot de grammatiska reglerna i programspråket. Därefter översätter kompilatorn datorprogrammet till ett enklare språk som datorn "förstår".

Kompilatorer för de flesta programspråk översätter datorprogrammet till maskinkod . Det översatta programmet kan sedan direkt exekveras av datorn.

Att kompilera ett Java-program

I Java fungerar det lite annorlunda. När man kompilerar ett Java-program översätts det till bytekod (instruktioner på högre nivå än maskinkod, men som kan tolkas av datorn). När man skall exekvera programmet använder man en interpretator som läser instruktioner tolkar dem. Bytekoden är standardiserad, vilket innebär att den kan tolkas av alla datorer, oavsett typ, som har en Java-interpretator. Det innebär att ett kompilerat Java-program är flyttbart mellan olika slags datorer.

Kompilatorn heter javac och interpretatorn heter java. Man kan använda dessa i ett kommandofönster.

Antag att en fil med namnet Calculator.java innehåller ett Java-program. Kommandot för kompilering ser ut så här:
javac Calculator.java

Det har nu skapats en fil med namnet Calculator.class som innehåller bytekoden.

För att exekvera programmet ger man följande kommando:
java Calculator
OBS! Ofta kan man kompilera och exekvera direkt inifrån den texteditor man använder. Då behöver man inte använda ovanstående kommandon.

Import av färdiga klasser

Oftast är ett program uppdelat i flera filer med en klass i varje fil. Om man har skrivit alla klasserna själv finns de förmodligen i samma katalog. Då man kompilerar en av klasserna kompileras automatiskt de övriga klasserna som den aktuella klassen är beroende av ifall detta behövs. Det räcker alltså att kompilera klassen med main-metoden för att få allt som behövs kompilerat.

Det är vanligt att man använder redan färdiga klasser. Det kan t ex vara Javas egna klasser (Java API) eller klasser skrivna av någon annan. Dessa klasser är redan kompilerade och finns i så kallade klasspaket lagrade någon annanstans i datorsystemet. För att man skall kunna använda dem måste man importera dem genom att skriva en importsats i de filer där klassen används. Ex:
import se.lth.cs.util.SimpleInput;

Det finns klasser man kan använda utan att de behöver importeras. Det är de klasser som tillhör Java och finns i klasspaketet java.lang, t ex klasserna Math, String och StringBuffer.