Java, allmänt

Sven-Olof Nyström
OOP med Java våren -25
Informationsteknologi
Uppsala Universitet

Historik: Java

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.

Om Java

(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).

Kompilering av Java

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).

Utvecklingsverktyg för Java

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.

On-line dokumentation

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.

Verktyg

När man utvecklar ett Java-program är arbetsgången:

javac MittTest.java
java MittTest

Ett första exempel

public class Hej {
  public static void main(String[] args) {
    System.out.println("Hej hopp");
    }
  }

Testkörning:

harpo$ javac Hej.java
harpo$ java Hej
Hej hopp
harpo$
harpo$ java Hej
Hej hopp

Java i mer detalj

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.