Java (programmeringssprog)

Java er et objektorienteret tredjegenerations-programmeringssprog inspireret af C++. Sproget er udviklet af Sun. Java var oprindeligt døbt Oak, men dette navn havde et andet firma allerede benyttet. Herefter faldt navnet på Java.

Java er også et stort klassebibliotek, der er defineret med en grænseflade i programmeringssproget Java, men også kan bruges fra en lang række andre programmeringssprog, deriblandt Ada og Eiffel.

Slutteligt er Java en virtuel maskine beregnet, men ikke begrænset, til at køre programmer skrevet i programmeringssproget Java. Dette vil sige at anden kildekode, end den af Java, efter tilstrækkelig kompilation også kan anvendes af Javas virtuelle maskine.

Java programmer er ofte skrevet i IntelliJ IDEA eller Eclipse IDE.

Beskrivelse 
Programmeringssproget Java er blandt andet kendetegnet ved at et computerprogram skrevet i Java kan afvikles på ethvert styresystem, hvis styresystemet har en Java virtuel maskine, og det har stort set alle moderne styresystemer. Som programudvikler skal man derfor ikke bekymre sig om slutbrugerens maskinel og programmel. Mens et Javaprogram udføres, sørger den virtuelle maskine selv for at fjerne unødvendige objekter, som optager plads i maskinens arbejdshukommelse (garbage collection). Som software-udvikler skal man dog holde styr på andre ressourcer som f.eks. filer.

Java findes i 3 forskellige "hovedudgaver". Disse er J2SE (Standard Edition), J2EE (Enterprise Edition) og J2ME (Micro Edition). 2-tallet i forkortelsen refererer til Java 2, der trods nyere versioner end 1.2 fortsat benyttes.

I praksis er der nogle faldgruber. Java findes i flere versioner, og for at sikre at et program kan afvikles flest mulige steder, kan det være nødvendigt, at man som software-udvikler begrænser sig til mulighederne i en tidlig version. Andre firmaer end Sun har lavet udgaver af den virtuelle maskine til Java, og det er ikke alle, der giver helt de samme muligheder.

Java var i de første år, fra 1995, mest kendt for sloganet 'write once, run anywhere' (skriv en gang, kør alle steder), og så applets: små programmer med begrænsede rettigheder, som kan køre integreret i en hjemmeside. I de første år var det disse elementer der drev interessen for Java. Kritikere af Java blev ved med at henvise til, hvor sløvt (langsomt) Javaprogrammer og -applets kørte, specielt på desktoppen.
Udviklingen inden for programmering og hardware har dog de sidste par år overhalet disse kritikpunkter.
 Javas hovedområde er ikke, og har aldrig været, desktopprogrammer, hvor det altid vil være langsommere end et program skrevet direkte til platformen, men man kan dog køre et Javaprogram på en almindelig computer tilfredstillende i dag, hvis det er det man ønsker.
 Java bruges i dag langt mere på serverniveau, til programmer der ligger på en server og f.eks. styrer forretningslogik, genererer hjemmesider mm.

Som et direkte modsvar på Javas dominans på serverområdet kom Microsoft med deres .NET platform. .NET har dog endnu ikke vundet Javas popularitet.

Syntaks

Navngivningspraksiser 
Der er standarde navngivningspraksiser i Java, som er anbefalet at overholde. I skemaet kan du se eksempler på dem

Hvis der er en public class i en .java fil, skal den hedde det samme som filen. Eksempel:public class Foo {
    // Kode her
}Denne fil skal hedde "Foo.java". Der kan kun være en public class i en fil.

Identifier 
En identifier er navnet på et element i koden. Der er normale navngivningspraksiser til elementer. Indentifiere i Java er case-sensitive, altsåyourNameer ikke den samme indentifier somyournameEn indentifier kan indeholde med:

 En hvilken som helst Unicode-karakter (også tal)
 Valuta tegn (som $)
 Understreger (underscores, _)

En indentifier kan ikke:

 Starte med et tal
 Have det samme navn som et reserveret nøgle-ord

Variabler 
Variabler er indentifierer med en værdi.int count; //Deklarer en variabel med navnet count uden en værdi
count = 35; //Sætter værdien til 35 aka initialisering
int count = 35; //initialiserer og deklarer på samme linieFlere variable kan blive deklareret på en gang:int a, b; //Deklarerer variablerne a og break
a = 5, b = 3; //Initialiserer variablerne
int a = 5, b = 3; // Deklarerer og Initialiserer i samme linie

Blokke 
I Java er en blok koden mellem { og }. Altså er dette her imellem "programmet".public class Wikipedia{//Her starter blokken
    
    //Her imellem skriver du al din kode
    
} // Her slutter blokkenmen du har også brug for en main metode:public class Wikipedia{
    
    public static void main(String[] args){ // MAIN METODEN
        //Al koden herinde bliver kørt når programmet bliver kørt
    }
}

Kommentarer 
En til linje er slut kommentar://Det her er en single linie kommentar
og nu er det her ikke længere en kommentar, fordi den ikke står på linjenså er der flere linjer kommentaren:/* Startes med disse tegn

Kommentar */ Ikke Kommentar

Eksempel på Javakode 
Her under ses et stykke Javakode:
// Hello.java
public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, World!"); 
    } 
}
Forklaring
public class Hello { }
Erklærer at programmet hedder Hello, al den tekst der ligger mellem den første "{" og den sidste "}" bliver af Java opfattet som en del af klassen Hello, dvs. "programmet".

public static void main(String[] args) {
Metoden/funktionen main som altid er påkrævet for at få et Javaprogram til at køre, eksekverer den del af koden, der ligger mellem de inderste "{" og "}". "{" er metodens bodystart og "}" er bodyslut.

System.out.println("Hello, World!");
Skriver Hello, World! på skærmen. Tegnet ;(semikolon) sidst i hver linje angiver linjens afslutning.

Nøgleord 

Literaler

Hele tal er af typen int ved standard, medmindre typen Long er specifikt indtastet og med et L eller l i slutningen af initialisationen.

Objekter 
I objektorienteret programmering er objekter selvfølgelig en vigtig del. De er ofte nødvendige for mere komplekse programmer.

Et objekt er en repræsentation af en ting, og indeholder data om den. Et eksempel kunne være et person-objekt der indeholder et navn, en alder, en adresse, og interesser. I Java findes der mange klasser som er meget brugbare som programmør.

Eksempel 
Her er en klasse for en "Person":public class Person {

	private String navn;
	private int alder;
	private String adresse;
	private String[] interesser;

	public Person(String navn, int alder, String adresse, String[] interesser) {
		this.navn = navn;
		this.alder = alder;
		this.adresse = adresse;
		this.interesser = interesser;
	}
}public Person() er en konstruktør for en Person. Dette sætter objektets navn, alder, adresse, og interesser til de argumenter konstruktøren har fået.

Variablerne er sat til privat pga. Indkapsling, som sørger for at de ikke kan ændres udefra. Men de kan dog stadig læses med disse metoder:public String getNavn() {
	return this.navn;
}

public int getAlder() {
	return this.alder;
}

public String getAdresse() {
	return this.adresse;
}

public String[] getInteresser() {
	return this.interesser;
}Når vi har dette kan vi lave et nyt Person-objekt i vores main-klasse med navnet Jens, alderen 21, adressen "En adresse", og interesserne "En interesse" og "En anden interesse":public class OOPEksempel {
	public static void main(String[] args) {
		String[] interesser = {"En interesse", "En anden interesse"}; // Laver et array med interesser
		Person jens = new Person("Jens", 21, "En adresse", interesser); // Laver et nyt person objekt
	}
}Så kan vi også printe Jens' data ud, med hjælp af de metoder vi definerede i Person klassen (og lidt regex som fjerner [ og ] fra arrayet):System.out.println(jens.getNavn()+", "+jens.getAlder()+":");
System.out.println(jens.getAdresse());
System.out.println("Interesser: "+Arrays.toString(jens.getInteresser()).replaceAll("[\\[\\]]", "")); // .replaceAll ændrer alle matches med den givne regex. Sæt den ind i regexr.com for at se hvad den gørDette giver:Jens, 21:
En adresse
Interesser: En interesse, En anden interesseObjekter kan også indholde metoder, som ofte ændrer på objektets data.

Eksempler på indbyggede objekter i java:
 File(String pathname)
 Point(int x, int y)
 ArrayList()

Extends 
Hvis en klasse udvider (extends) en anden klasse, får den alle egenskaber og metoder af den klasse. Den klasse bliver så til en "subclass", og den klasse den arver egenskaber fra bliver til "superclassen".

Her bruges nøgleordet "protected" i stedet for private, fordi at subclassen ikke har adgang til variablen hvis den er privateclass Bil {
	protected String type = "Bil";

	protected void dyt() {
		System.out.println("Dyyyt!");
	}
}
public class TeslaModel3 extends Bil {
	private String modelNavn = "Tesla Model 3";

	public static void main(String[] args) {
		TeslaModel3 bil = new TeslaModel3(); // Laver en ny TeslaModel3
		System.out.println(bil.type+": "+bil.modelNavn); // Printer type (fra Bil klassen) og bilens modelNavn
		bil.dyt(); // Kalder dyt() metoden fra Bil klassen
	}
}

Se også 
 Ant – Program til styring af oversættelse af Javaprogrammer.

Referencer

Eksterne henvisninger 
 Officiel Java-hjemmeside

Javaprogrammering
World Wide Web
Oracle