Programspråket hette från början OAK (James Gosling, 1991). Det utvecklades vid SUN Microsystems. Från början var det avsett för inbyggda system (tex tvättmaskiner, mobiltelefoner, TV/video, spel, mm). För att det skulle fungera bra i inbyggda system var det viktigt att applikationerna var pålitliga och inte tog för stor plats. Detta har påverkat utformingen av Java.
När World Wide Web slog igenom i mitten av 90-talet fick projektet en annan inriktning. Java marknadsfördes som ett programspråk för web-applikationer och fick en stor spridning.
(Man brukar säga att) Java är...
Många av de här påståendena är sanningar med modifikation. Till exempel: Java har aldrig varit ett särskilt enkelt programspråk och efterhand har det blivit mer komplicerat. Det är dock fortfarande betydligt enklare än C++. Det lånar syntax från C++, men maskineriet för objektorientering är mera likt andra objektorienterade språk (till exempel Simula).
Traditionella kompilatorer, till exempel kompilatorer för C++, översätter programtexten till maskinkod.
De flesta Java-kompilatorer översätter till en slags maskinkod; Javabytekod (JVM). Javabytekod kan normalt ej köras direkt. Istället måste JVM-koden antingen interpreteras eller först översättas till maskinkod.
(Det finns processorer som kan exekvera JVM-kod, till exempel Jazelle och PicoJava, men de är inte så vanliga).
I denna kurs använder vi verktyg från Sun/Oracle.
De senaste versionerna heter Java 17 och Java 21. Kursen använder inte så många nya finesser så även en äldre version bör fungera. Jag kommer att ta upp viktiga utökningar som kom med Java 5.
När man arbetar med Java behöver man dokumentation av alla standardklasser. Nedan följer ett par länkar.
Standardklasser (Java SE 8): https://docs.oracle.com/javase/8/docs/api/index.html
Standardklasser (Java SE 17): https://docs.oracle.com/en/java/javase/17/docs/api/index.html
(Jag tycker att det är lättare att hitta i dokumentationen för Java 8, det är därför jag tar med länken.)
Övrig dokumentation:
Oracles tutorial hittar du här: http://docs.oracle.com/javase/tutorial/
Länksidan listar några ytterligare tutorials.
När man utvecklar ett Java-program är arbetsgången:
javac
ochjava
(applikationer).MittTest.java
skriver man alltså följande kommandon
för att kompilera och provköra:javac MittTest.java java MittTest
Hej
skriver ut ett meddelande.Hej.java
, samma namn som klassenpublic class Hej { public static void main(String[] args) { System.out.println("Hej hopp"); } }
main
är en metod i en klass.Hej
(filen ska då heta
Hej.java
).main
som i sin tur har ett metodanrop till
metoden println
i (det statiska) objektet out
i klassen System
.main
måste vara public
, static
och void
public
för att man ska kunna komma åt den utanför klassen.static
betyder att den är en klassmetod och inte tillhör något
objekt i klassenvoid
för att den inte returnerar något.out
i klassen System
) och
klassmetoder (main
).static
—de tillhör
inte något objekt i klassen utan själva klassen.Testkörning:
harpo$ javac Hej.java harpo$ java Hej Hej hopp harpo$ harpo$ java Hej Hej hopp
Det är dags att titta på språket i mer detalj. Genomgången som följer lägger särskilt fokus på sånt som är knepigt även för den som kan C eller C++ sen tidigare. Jag rekommenderar att du även tar en titt i Skansholms bok, kapitel 2 och 3.