Java (programmeringsspråk)
Från Rilpedia
- För andra betydelser, se Java (olika betydelser).
Java, eller JAVA, är ett objektorienterat programspråk som konstruerades av bland andra James Gosling på Sun Microsystems 1991-1995. Ursprungligen kallades språket Oak, men Sun bytte namn innan Java presenterades för världen 23 maj 1995. Anledningen till namnbytet var att 'Oak' var upptaget. De viktigaste designmålen för Java var:
- Inbyggt stöd för objektorientering.
- Plattformsoberoende. Ett program skrivet i Java skulle direkt kunna köras på alla datorer och operativsystem.
- Säkert. Främmande program skulle kunna köras i en avspärrad "sandlåda" där de inte kan ställa till någon skada. Det vanligaste exemplet är så kallade appletprogram som kan visas på webbsidor.
- Innehåller ett API vid namn Swing. Swing innehåller färdiga komponenter, populärt kallade widgets, som knappar, fönster och menyer. Genom Swing kan man alltså försäkra sig om att ett Java-program kommer att se likadant ut på både en Unix, Linux eller Windows plattform.
Plattformsoberoendet uppnås genom att det färdiga Javaprogrammet kompileras till bytekod istället för till maskinkod. Denna bytekod tolkas och körs sedan i ett vanligt plattformsberoende program, en "virtuell maskin". Detta extra steg gör att Java historiskt sett varit långsammare än kompilerande programspråk, men skillnaden har krympt i och med introduktionen av JIT-kompilatorer, exempelvis Suns egna HotSpot och BEAs JRockit.
Den 13 november 2006 släppte Sun Microsystems sin implementation av Java under den fria licensen GPL. Ända sedan Javas tillkomst har Javautvecklare debatterat om Java skall släppas som fri mjukvara eller inte. Java har varit gratis att ladda ner och använda, men licensen har begränsat distribution och förändring. Detta har bland annat hindrat Java från att skickas med de flesta Linuxdistributioner och gjort att en del utvecklare som endast vill arbeta med fri källkod undvikit Java.
Man skapar ett Java-program i flera steg:
- Man börjar med att tillverka en källfil. Källfilen består av vanlig text som följer Javas syntax.
- När källfilen är klar måste den kompileras av en kompilator till en bytekodfil. Bytekodfilen kan läsas av Java Virtual Machine (JVM), en emulerad dator eller exekveringsmiljö.
- Varje dator som kör programmet använder en programtolkare som använder sig av JVM för att tolka bytekoden till instruktioner som datorn kan utföra.
I Java får en klass endast ha en superklass, till skillnad mot exempelvis C++. Multipla arv av klasser är således inte tillåtet. En klass kan dock implementera mer än ett gränssnitt (eng. interface).
En fördel med Java är att språket har ett stort bibliotek med färdiga datastrukturer, bland annat för att visa grafiska fönster på ett enkelt sätt.
Innehåll |
Programexempel
Hello world
"Hello, World!" med terminalutskrift:
public class Hello { public static void main(String[] args) { System.out.println("Hello World!"); } }
"Hello, World!" med grafisk utskrift:
import javax.swing.*; public class Hello { public static void main(String[] args) { JOptionPane.showMessageDialog(null, "Hello World!"); } }
Inmatning utmatning
Här är ett enkelt exempel på hur man skriver ut information och får inmatning av användaren.
import java.io.Console; public class Info { public static void main(String[] args) { System.out.println("Hej, vad heter du?"); Console terminal = System.console(); if (terminal == null) { System.err.println("Terminal inte tillgänglig"); } else { String namn = terminal.readLine(); System.out.println("Hej, " + namn + ". Ditt namn börjar på " + namn.charAt(0)); } } }
Ett väldigt enkelt program. Metoden charAt() med parametern 0 (noll) returnerar första tecknet i strängen namn.
Alltså kommer programmet se ut så här när det körs:
Hej, vad heter du? "Robert Ahlberg" Hej, Robert Ahlberg. Ditt namn börjar på R
Det som är skrivet inom Citationstecken matas in av användaren.
Personinformation
Följande klassdefinition demonstrerar hur en enkel typ definieras i Java i form av en klass. I detta fall beskriver klassen en person med några typiska attribut för en sådan, till exempel namn (name) och ålder (age), samt några metoder för att sätta och hämta värden från attributen.
public class Person { private String name; private String location; private int age; public Person(String name, String location, int age) { this.name = name; this.location = location; this.age = age; } public void setName(String newname) { name = newname; } public void setLocation(String newlocation) { location = newlocation; } public void setAge(int newage) { age = newage; } public String getName() { return name; } public String getLocation() { return location; } public int getAge() { return age; } }
Olika versioner av Java
Java ME
Java Micro Edition, är den version/plattform som används i mindre inbyggda system som till exempel moderna mobiltelefoner.
Java SE
Java Standard Edition, är en version av Java som används för desktop- och klient-applikationer.
Java EE
Java Enterprise Edition, en version/plattform med inbyggda ramverk som löser vanliga problemställningar i till exempel avancerade serverapplikationer. Java EE är antagligen det populäraste tillämpningsområdet av Java för tillfället och är en populär teknik för att implementera till exempel finans- och banksystem. Exempel på tekniker som samlats under samlingsnamnet JEE:
Övrig information
- Java klarar av Unicode direkt, till skillnad från många andra programspråk, vilket underlättar användning av språk som inte stöds av andra teckenuppsättningar som ISO 8859-1, exempelvis grekiska och asiatiska språk.
- Java skall inte förväxlas med JavaScript, som visserligen också är plattformsoberoende men har ett helt annat ursprung. JavaScript behöver inte förkompileras på samma sätt som Java, utan exekveras direkt av en programtolk. JavaScript används nästintill uteslutande importerat till, eller inbäddat i HTML-kod, avsedd för webbsidor. Det faktum att namnen liknar varandra har lett till mycket förvirring, och än idag finns det många som tror att JavaScript är synonymt med Java, när det i själva verket inte finns något särskilt samband som motiverar de snarlika namnen. JavaScript är insprirerad av Java, med liknande syntax, men skiljer sig semantiskt väldigt mycket, bland annat nästan typlöst.
- Att använda Java för utveckling av realtidssystem är ett aktuellt forskningsområde där flera olika angreppssätt används. Se även LJRT.
- Mycket av syntaxen för Java kommer från C och C++.
Se även
Externa länkar
- Suns officiella Javahemsida
- NetBeans, ett utvecklingsverktyg för Java
- Eclipse, en populär miljö för utveckling i Java, även i sig skrivet i Java
- Full Java Tutorial
- Introduktion på svenska till java
- Introduktion på svenska till java 5
- Introduktion på svenska till java 6
Litteratur
- Flanagan, D Java in a Nutshell. A Desktop Quick Reference, 0'Reilly, 2005