Looking for java Answers? Try Ask4KnowledgeBase
Looking for java Keywords? Try Ask4Keywords

Java LanguageKomma igång med Java Language


Anmärkningar

Java-programmeringsspråket är ...

  • Allmänt : Det är utformat för att användas för att skriva programvara i en mängd olika applikationsdomäner och saknar specialfunktioner för någon specifik domän.

  • Klassbaserad : Objektets struktur definieras i klasser. Klassinstanser har alltid de fält och metoder som anges i deras klassdefinitioner (se Klasser och objekt ). Detta är i kontrast till icke-klassbaserade språk som JavaScript.

  • Statiskt typ : kompilatorn kontrollerar vid sammanställningstiden att variabla typer respekteras. Till exempel, om en metod förväntar sig ett argument av typen String , måste det argumentet faktiskt vara en sträng när metoden heter.

  • Objektorienterad : de flesta saker i ett Java-program är klassinstanser, det vill säga paket med tillstånd (fält) och beteende (metoder som arbetar med data och bildar objektets gränssnitt till omvärlden).

  • Bärbar : Den kan kompileras på vilken plattform som helst med javac och de resulterande klassfilerna kan köras på alla plattformar som har en JVM.

Java är avsett att låta applikationsutvecklare "skriva en gång, köra var som helst" (WORA), vilket innebär att kompilerad Java-kod kan köras på alla plattformar som stöder Java utan behov av rekompilering.

Java-kod kompileras till bytekod ( .class ) som i sin tur tolkas av Java Virtual Machine (JVM). I teorin bör bytekod skapad av en Java-kompilator köra på samma sätt på alla JVM, även på en annan typ av dator. JVM kan (och i verkliga program kommer) välja att kompilera till inbyggda maskinkommandon delar av bytekoden som körs ofta. Detta kallas "Just-in-time (JIT) sammanställning".

Java-utgåvor och -versioner

Det finns tre "utgåvor" av Java definierade av Sun / Oracle:

  • Java Standard Edition (SE) är den utgåva som är utformad för allmänt bruk.
  • Java Enterprise Edition (EE) lägger till en rad faciliteter för att bygga "enterprise grade" -tjänster i Java. Java EE omfattas separat .
  • Java Micro Edition (ME) är baserat på en delmängd av Java SE och är avsedd för användning på små enheter med begränsade resurser.

Det finns ett separat ämne i Java SE / EE / ME-utgåvor .

Varje utgåva har flera versioner. Java SE-versionerna listas nedan.

Installera Java

Det finns ett separat ämne om installation av Java (Standard Edition) .

Kompilera och köra Java-program

Det finns separata ämnen om:

Vad kommer härnäst?

Här är länkar till ämnen för att fortsätta lära och förstå Java-programmeringsspråket. Dessa ämnen är grunderna i Java-programmering för att komma igång.

Testning

Även om Java inte har något stöd för testning i standardbiblioteket, finns det tredjepartsbibliotek som är utformade för att stödja testning. De två mest populära enhetstestbiblioteken är:

Övrig

  • Designmönster för Java omfattas av designmönster .
  • Programmering för Android behandlas i Android .
  • Java Enterprise Edition-teknologier omfattas av Java EE .
  • Oracle JavaFX-teknologier omfattas av JavaFX .

1. I versionsavsnittet är slutdatumet (gratis) när Oracle kommer att sluta publicera ytterligare uppdateringar av Java SE på sina offentliga nedladdningssidor. Kunder som behöver fortsatt åtkomst till kritiska bugfixar och säkerhetsfixar samt generellt underhåll för Java SE kan få långsiktig support genom Oracle Java SE Support .

versioner

Java SE-version Kodnamn Livslängd (gratis 1 ) Utgivningsdatum
Java SE 9 (Early Access) Ingen framtida 2017/07/27
Java SE 8 Spindel framtida 2014/03/18
Java SE 7 Delfin 2015/04/14 2011-07-28
Java SE 6 Mustang 2013/04/16 2006-12-23
Java SE 5 Tiger 2009-11-04 2004-10-04
Java SE 1.4 Merlin före 2009-11-04 2002-02-06
Java SE 1.3 Kestrel före 2009-11-04 2000-05-08
Java SE 1.2 Lekplats före 2009-11-04 1998/12/08
Java SE 1.1 Ingen före 2009-11-04 1997/02/19
Java SE 1.0 Ek före 2009-11-04 1996/01/21

Skapa ditt första Java-program

Skapa en ny fil i din textredigerare eller IDE med namnet HelloWorld.java . Klistra sedan in detta kodblock i filen och spara:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
 

Kör live på Ideone

Obs: För att Java ska känna igen detta som en public class (och inte kasta ett kompileringstidsfel ) måste filnamnet vara detsamma som klassnamnet ( HelloWorld i detta exempel) med en .java förlängning. Det bör också finnas en modifierare för public åtkomst innan den.

Namnkonventioner rekommenderar att Java-klasser börjar med ett stort tecken och ska vara i kamelfallsformat (där den första bokstaven i varje ord är stora). Konventionerna rekommenderar mot understreck ( _ ) och dollartecken ( $ ).

För att kompilera, öppna ett terminalfönster och navigera till katalogen till HelloWorld.java :

cd /path/to/containing/folder/
 

Obs: cd är terminalkommandot för att byta katalog.

Ange javac följt av filnamnet och tillägget enligt följande:

$ javac HelloWorld.java
 

Det är ganska vanligt att få felet 'javac' is not recognized as an internal or external command, operable program or batch file. även när du har installerat JDK och kan köra programmet från IDE ex. eclipse etc. Eftersom sökvägen inte läggs till i miljön som standard.

Om du får detta i Windows, för att lösa det, försök först bläddra till din javac.exe bana, är det troligtvis i din C:\Program Files\Java\jdk(version number)\bin . Prova sedan att köra det med nedan.

$ C:\Program Files\Java\jdk(version number)\bin\javac HelloWorld.java
 

Tidigare när vi kallade javac var det samma som ovan kommandot. Bara i så fall visste ditt OS var javac bodde. Så låt oss berätta det nu, på det här sättet behöver du inte skriva hela vägen varje gång. Vi måste lägga till detta till vår PATH

Så här redigerar du PATH miljövariabeln i Windows XP / Vista / 7/8/10:

  • Kontrollpanelen ⇒ System ⇒ Avancerade systeminställningar
  • Byt till "Avancerad" -flik ⇒ Miljövariabler
  • I "Systemvariabler" bläddrar du ner för att välja "PATH" ⇒ Redigera

Du kan inte ångra detta så var försiktig. Kopiera först din befintliga sökväg till anteckningsblock. För att få exakt PATH till din javac bläddra manuellt till mappen där javac finns och klicka på adressfältet och kopiera sedan den. Det ska se ut som c:\Program Files\Java\jdk1.8.0_xx\bin

I fältet "Variabelt värde" klistrar du in detta FRÅN för alla befintliga kataloger, följt av en halvkolon (;). RADERA INTE befintliga poster.

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[Existing Entries...]
 

Nu borde detta lösa.

För Linux-baserade system, prova här .

Obs: kommandot javac åberopar Java-kompilatorn.

Kompilatorn genererar sedan en bytecode- fil som heter HelloWorld.class som kan köras i Java Virtual Machine (JVM) . Java-programmeringsspråkkompileraren, javac , läser källfiler skrivna på Java-programmeringsspråket och sammanställer dem till bytecode . Valfritt kan kompilatorn också bearbeta kommentarer som finns i Pluggable med Pluggable Annotation Processing API. Kompilatorn är ett kommandoradsverktyg men kan också åberopas med Java Compiler API.

För att köra programmet anger java följt av namnet på den klass som innehåller main metoden ( HelloWorld i vårt exempel). Observera hur .class utelämnas:

$ java HelloWorld
 

Obs: java kommandot kör ett Java-program.

Detta kommer att matas ut till din konsol:

Hej världen!

Du har framgångsrikt kodat och byggt ditt allra första Java-program!

Obs: För att Java-kommandon ( java , javac , etc) ska kunna identifieras, måste du se till:

Du måste använda en kompilator ( javac ) och en exekverare ( java ) från din JVM. java -version och javac -version på kommandoraden för att ta reda på vilka versioner du har installerat. Versionsnumret för ditt program kommer att skrivas ut på terminalen (t.ex. 1.8.0_73 ).


En närmare titt på Hello World-programmet

"Hello World" Programmet innehåller en enda fil, som består av ett HelloWorld klass definition, en main och ett uttalande inuti main

public class HelloWorld {
 

Den class nyckelordet börjar klassdefinitionen för en klass som heter HelloWorld . Varje Java-applikation innehåller minst en klassdefinition ( Ytterligare information om klasser ).

    public static void main(String[] args)  {
 

Det här är en startpunktmetod (definierad av dess namn och signatur på public static void main(String[]) ) från vilken JVM kan köra ditt program. Varje Java-program ska ha ett. Det är:

  • public : vilket innebär att metoden kan anropas från var som helst menar utanför programmet också. Se Synlighet för mer information om detta.
  • static : innebär att den existerar och kan köras av sig själv (på klassnivå utan att skapa ett objekt).
  • void : vilket betyder att det returnerar inget värde. Obs: Detta är till skillnad från C och C ++ där en returkod som int förväntas (Javas sätt är System.exit() ).

Denna huvudmetod accepterar:

Nästan allt detta krävs för en Java-startpunktmetod.

Icke nödvändiga delar:

  • Namnet args är ett variabelt namn, så det kan kallas vad du vill, även om det vanligtvis kallas args .
  • Huruvida parametertypen är en matris ( String[] args ) eller Varargs ( String... args ) spelar ingen roll eftersom matriser kan överföras till varargs.

Obs: En enda applikation kan ha flera klasser som innehåller en inmatningspunkt ( main ) -metod. Applikationens startpunkt bestäms av klassnamnet som skickas som ett argument till java kommandot.

Inom huvudmetoden ser vi följande uttalande:

        System.out.println("Hello, World!");
 

Låt oss dela upp detta uttalande element för element:

Element Ändamål
System detta visar att den efterföljande uttrycket kommer att kalla på System klassen från java.lang paket.
. detta är en "dot operator". Punktoperatörer ger dig åtkomst till klassens medlemmar 1 ; dvs dess fält (variabler) och dess metoder. I det här fallet ger detta punktopera du referera till out statiska fältet inom System klassen.
out detta är namnet på det statiska fältet för PrintStream typen inom System klassen som innehåller standardutfunktionaliteten.
. detta är en annan punktoperatör. Denna punktoperatorn ger tillgång till println metod inom out variabeln.
println detta är namnet på en metod i PrintStream-klassen. Speciellt denna metod skriver ut innehållet i parametrarna i konsolen och sätter in en ny linje efter.
( denna parentes indikerar att en metod nås (och inte ett fält) och börjar parametrarna som överförs till println metoden.
"Hello, World!" detta är String- bokstaven som skickas som en parameter till println metoden. Dubbla citattecken i varje ände avgränsar texten som en sträng.
) denna parentes betyder att stängningen av parametrarna skickas till println metoden.
; denna semikolon markerar uttalandet.

Obs: Varje uttalande i Java måste sluta med en semikolon ( ; ).

Metodkroppen och klasskroppen stängs sedan.

    }  // end of main function scope
}      // end of class HelloWorld scope 
 

Här är ett annat exempel som demonstrerar OO-paradigmet. Låt oss modellera ett fotbollslag med en (ja, en!) Medlem. Det kan finnas fler, men vi diskuterar det när vi kommer till matriser.

Låt oss först definiera vår Team :

public class Team {
    Member member;
    public Team(Member member) {  // who is in this Team?
        this.member = member;  //  one 'member' is in this Team!
    }
}
 

Låt oss nu definiera vår Member :

class Member {
    private String name;
    private String type;
    private int level; // note the data type here
    private int rank; // note the data type here as well

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
}
 

Varför använder vi private här? Om någon ville veta ditt namn, borde de fråga dig direkt, istället för att räcka in i fickan och dra ut ditt sociala kort. Den här private gör något sådant: det förhindrar externa enheter från att komma åt dina variabler. Du kan bara returnera private medlemmar via getter-funktioner (visas nedan).

Efter att ha lagt samman allt och lagt till getters och huvudmetoden som diskuterats tidigare har vi:

public class Team {
    Member member;
    public Team(Member member) {  
        this.member = member;  
    }

    // here's our main method
    public static void main(String[] args) {
       Member myMember = new Member("Aurieel", "light", 10, 1); 
       Team myTeam = new Team(myMember); 
       System.out.println(myTeam.member.getName());
       System.out.println(myTeam.member.getType());
       System.out.println(myTeam.member.getLevel());
       System.out.println(myTeam.member.getRank());
    }
}

class Member {
    private String name;
    private String type;
    private int level;
    private int rank;

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
    
    /* let's define our getter functions here */
    public String getName() { // what is your name?
        return this.name; // my name is ...
    }
   
    public String getType() { // what is your type?
        return this.type; // my type is ...
    }
    
    public int getLevel() { // what is your level?
        return this.level; // my level is ...
    }
    
    public int getRank() { // what is your rank?
        return this.rank; // my rank is
    }
}
 

Produktion:

Aurieel
light
10
1
 

Kör på ideone

Återigen, det main metoden inuti Test är klass inkörsport till vårt program. Utan main metoden kan vi inte tala om Java Virtual Machine (JVM) från var man ska börja genomförandet av programmet.


1 - Eftersom HelloWorld klassen har liten relation till System klassen kan den bara komma åt public data.