Java (programspråk)

Från Wikipedia
Hoppa till: navigering, sök
Java
Java logo and wordmark.svg
Paradigm Objektorienterad
Gavs ut 1991-1995
Skapat av James GoslingSun Microsystems
Utvecklare Oracle
Senaste version Java SE Version 8 Update 31[1] (2015-01-20)
Datatypsdisciplin static, strong
Dialekter Java ME
Influerat av Simula, C, C++, Objective C, Smalltalk, C#
Influerat C#, Ceylon
Platform JVM
Licens GPL / Java Community Process
Webbplats www.oracle.com/technetwork/java

Java är ett objektorienterat programspråk som konstruerades av bland andra James GoslingSun Microsystems under 90-talets tidigare hälft. Ursprungligen kallades språket D, för att sedan ändras till Oak[2], men Sun bytte slutligen ut namnet ytterligare en gång, och Java presenterades för världen 23 maj 1995. Anledningen till namnbytet var att Oak var upptaget.

Historia[redigera | redigera wikitext]

Java-plattformen och programspråket började som ett internt projekt hos Sun Microsystems i December 1990 för att ge ett alternativ till C++ och C. Ingenjören Patrick Naughton var frustrerad över API:erna som Sun hade skapat för C och C++. Medan han övervägde att säga upp sig och börja på NeXT istället, fick han erbjudande om möjligheten att utveckla en ny teknologi, och därmed startade Stealth Project.

Det dröjde inte länge innan Stealth döptes om till Green Project och fick tillskott genom att James Gosling och Mike Sheridan började hjälpa till med projektet. Tillsammans med andra ingenjörer började de utveckla i ett litet kontor på Sand Hill Road i Menlo Park, Kalifornien. Deras mål var att utveckla en ny teknologi för programmering av nästa generations smarta enheter.

Projektgruppen övervägde att använda C++ till en början, men valde att inte gör så av flera anledningar. Eftersom de utvecklade ett inbäddat system med begränsade resurser, bestämde de sig för att C++ behövde för mycket minne och att dess komplexitet ledde till att utvecklare enklare kunde skriva fel. På grund av sin brist gällande skräpsamling skulle utvecklare behöva hantera systemets minne manuellt, vilket är en utmanande och krånglig uppgift. Gruppen ville bygga en plattform som kunde flyttas enkelt till olika typer av enheter.

Bill Joy hade idéer om ett nytt programspråk influerat av Mesa och C. Han kom med ett förslag i ett dokument kallat Further att ingenjörerna skulle skapa en objekt-orienterad miljö baserad på C++. I början så försökte Gosling att modifiera och utöka C++ (han refererade till detta med "C++ ++ --") men han övergav sitt försök till detta och bestämde sig istället för att skapa ett helt nytt programspråk. Detta kallade han för Oak, eftersom det stod just en ek utanför hans kontor.

År 1994 döpte Sun om språket Oak till Java efter de upptäckt att Oak Technology hade ensam rätt till namnet. Trots att Java 1.0a kunde laddas ned redan 1994, så kom inte den första riktiga publika versionen, Java 1.0a2, fören den 23:de maj 1995 då den presenterades på SunWorld-konferensen.[3]

Versionhistorik[redigera | redigera wikitext]

Den nuvarande versionen, Java SE 8 (Mars 18, 2014), stödjer inte Windows XP officiellt.[4] Uppdateringen av Java till version 8 kom med flera nyheter till programspråket. Bland annat anonyma funktioner ("lambda expressions") som tillåter dig att hantera funktionalitet som ett argument i en metod.[5]

Design[redigera | redigera wikitext]

De viktigaste designmålen för Java var[6]:

  1. Det ska vara enkelt, objektorienterat och bekant.
  2. Det ska vara robust och säkert.
  3. Det ska ha en arkitekturoberoende och portabel miljö.
  4. Det ska kunna exekveras med hög prestanda.
  5. Det ska vara tolkat, trådat och dynamiskt.

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.

Javakod.

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 ska 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:

  1. Man börjar med att tillverka en källfil. Källfilen består av vanlig text som följer Javas syntax.
  2. 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ö.
  3. 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, bibliotek och ramverk, bland annat för nätverksanslutning och för att visa grafiska fönster på ett enkelt sätt.

Programexempel[redigera | redigera wikitext]

Hello world[redigera | redigera wikitext]

"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[redigera | redigera wikitext]

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 (en datatyp för text) 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[redigera | redigera wikitext]

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; }
    public String toString() { return "Name: " + name + " (Age: " + age + ")"; }
}

Olika versioner av Java[redigera | redigera wikitext]

Java ME[redigera | redigera wikitext]

Java Platform, Micro Edition, eller Java ME, är en Java-plattform avsedd för inbyggda system (mobila enheter är en typ av sådana system). Målenheter är allt från industriella styrsystem till mobiltelefoner (speciellt funktionen telefoner) och set-top boxar. Java ME var tidigare känt som Java 2 Platform, Micro Edition (J2ME). Idag (september 2012) använder mer än 3 miljarder mobiltelefoner Java.[7] Teknologin bakom Java ME skapades för att hantera de resursbegränsningar som kommer med små enheter, såsom minne, display eller energiförbrukning. [8]

Java SE[redigera | redigera wikitext]

Java Standard Edition, är en version av Java som används för skrivbords- och klient-applikationer.

Java EE[redigera | redigera wikitext]

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[källa behövs] och är en populär teknik för att implementera till exempel finans- och banksystem. Se J2EE. Exempel på tekniker som samlats under samlingsnamnet JEE:

Övrig information[redigera | redigera wikitext]

  • 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 ursprungligen hämtat ur Ecmascript men uppfattas som inspirerat av Java, på grund av liknande syntax, men skiljer sig semantiskt väldigt mycket, till exempel genom att variablerna i JavaScript saknar explicita datatyper.
  • Realtidsjava är ett aktivt forskningsområde där flera olika angreppssätt tillämpas.
  • Mycket av syntaxen för Java kommer från C och C++.

Se även[redigera | redigera wikitext]

Externa länkar[redigera | redigera wikitext]

Litteratur[redigera | redigera wikitext]

  • Schildt, Herbert Java The Complete Reference, Eighth Edition, Oracle Press, 2011

Källor[redigera | redigera wikitext]

  1. ^ Java 7 Releases
  2. ^ #DidYouKnow, Java was originally called
  3. ^ ”Om Java på engelskspråkiga Wikipedia”. http://en.wikipedia.org/wiki/Java_(software_platform)#History. Läst 2015-03-04. 
  4. ^ ”Windows XP och Java”. http://www.java.com/en/download/faq/winxp.xml. Läst 2015-03-04. 
  5. ^ ”What's New in JDK 8”. http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html. Läst 2015-03-04. 
  6. ^ ”1.2 Design Goals of the JavaTM Programming Language”. Java.sun.com. 1999-01-01. http://java.sun.com/docs/white/langenv/Intro.doc2.html. Läst 21 maj 2011. 
  7. ^ ”About Java Mobile”. Oracle. http://www.oracle.com/technetwork/java/javame/javamobile/overview/about/index.html. Läst 18 september 2012. 
  8. ^ ”What is J2ME or Java ME”. Oracle. http://www.java.com/en/download/faq/whatis_j2me.xml. Läst 18 september 2012.