Java

Java is een general-purpose programmeertaal die gelijktijdig, klasse-gebaseerde, object-georiënteerde, en speciaal ontworpen om zo weinig afhankelijkheden implementatie mogelijk. Het is bedoeld om te laten applicatie-ontwikkelaars “write once, run overal” (Wora), betekent dat gecompileerde Java-code kan draaien op alle platformen die Java ondersteunen zonder de noodzaak voor hercompilatie. Java-toepassingen worden doorgaans samengesteld om bytecode die kan draaien op elke Java Virtual Machine (JVM), ongeacht de computer architectuur. Vanaf 2015, Java is een van de meest populaire programmeertalen gebruikt, in het bijzonder voor client-server webtoepassingen, met een gerapporteerde 9.000.000 ontwikkelaars. [Nodig citaat] Java oorspronkelijk ontwikkeld door James Gosling bij Sun Microsystems (die inmiddels is overgenomen door Oracle Corporation) en uitgebracht in 1995 als een kernonderdeel van Sun Microsystems ‘Java-platform. De taal ontleent haar syntaxis van C en C ++, maar het minder lage voorzieningen dan een van hen.

Het origineel en de referentie-implementatie van Java-compilers, virtuele machines, en de class libraries werden oorspronkelijk uitgebracht door Sun onder propriëtaire licenties. Met ingang van mei 2007, in overeenstemming met de specificaties van het Java Community Process, Zon Gelicentieerd meeste van zijn Java-technologie onder de GNU General Public License. Anderen hebben ook alternatieve implementaties van deze Zon technologieën, zoals de GNU Compiler voor Java (bytecode compiler), GNU Classpath (standaard bibliotheken), en IcedTea-Web (browser plugin voor applets).

De nieuwste versie van Java 8, dat is de enige versie die momenteel worden ondersteund voor gratis door Oracle, hoewel eerdere versies worden ondersteund door zowel Oracle en andere bedrijven op commerciële basis.

Inhoud

  • 1 Geschiedenis
    • 1.1 Principes
    • 1.2 Versies
  • 2 Practices
    • 2.1 Java-platform
      • 2.1.1 Implementaties
      • 2.1.2 Prestatie
    • 2.2 Automatische memory management
  • 3 Syntax
  • 4 Voorbeelden
    • 4.1 “Hallo wereld!” programma
    • 4.2 Uitgebreide voorbeeld
  • 5 Speciale lessen
    • 5.1 Applet
    • 5.2 Servlet
    • 5.3 JavaServer Pages
    • 5.4 Swing applicatie
    • 5.5 Generics
  • 6 Kritiek
  • 7 Gebruik op onofficiële software platformen
    • 7.1 Google
  • 8 Klasse bibliotheken
  • 9 Documentatie
  • 10 edities
  • 11 Zie ook
    • 11.1 Vergelijking van Java met andere talen
  • 12 Aantekeningen
  • 13 Referenties
  • 14 Externe links

Geschiedenis

Zie ook: Java (software platform) § Geschiedenis

Hertog, de mascotte van Java

James Gosling, de maker van Java (2008)

De TIOBE programmeertaal populariteit index grafiek van 2002 tot 2015. In de loop van een decennium Java (blauw) en C (zwart) strijden om de toppositie.

James Gosling, Mike Sheridan, en Patrick Naughton inleiding van de Java-taal-project in juni 1991 Java is oorspronkelijk ontworpen voor interactieve televisie, maar het was te geavanceerd voor de digitale kabel-televisie-industrie in die tijd. De taal was aanvankelijk genaamd Oak na een eiken boom die buiten het kantoor Gosling’s stond. Later ging het project onder de naam Green en werd uiteindelijk omgedoopt tot Java, van Java koffie. Gosling ontworpen Java met een C / C ++ -. Stijl syntax dat systeem en applicatie programmeurs vertrouwd zou vinden

Sun Microsystems heeft de eerste publieke uitvoering als Java 1.0 in 1995. Het beloofde “Write Once, Run Anywhere” (Wora), het verstrekken van niet-kosten run-tijden op populaire platforms. Vrij veilig en met configureerbare beveiliging, het toegestaan netwerk- en file-toegangsbeperkingen. Belangrijke webbrowsers snel opgenomen de mogelijkheid om te draaien Java-applets in webpagina’s, en Java werd al snel populair. De Java 1.0-compiler werd opnieuw geschreven in Java door Arthur van Hoff zich strikt aan de Java 1.0 taalspecificatie. Met de komst van Java 2 (aanvankelijk uitgebracht als J2SE 1.2 in december 1998-1999), nieuwe versies had meerdere configuraties gebouwd voor verschillende platformen. J2EE opgenomen technologieën en API’s voor enterprise applicaties draaien doorgaans in server-omgevingen, terwijl J2ME gekenmerkt API geoptimaliseerd voor mobiele toepassingen. De desktop-versie werd omgedoopt J2SE. In 2006, voor marketing doeleinden, Zon omgedoopt nieuwe J2 versies van Java EE, Java ME, en Java SE, respectievelijk.

In 1997, Sun Microsystems benaderde de ISO / IEC JTC 1 normen lichaam en later de ECMA te formaliseren Java, maar al snel trok zich terug uit het proces. Java blijft een de facto standaard, gecontroleerd door middel van de Java Community Process. Op een gegeven moment, zo maakte de meeste van zijn Java-implementaties beschikbaar zonder kosten, ondanks hun eigen software-status. Zon een omzet van Java door de verkoop van licenties voor gespecialiseerde producten, zoals het Java Enterprise System.

Op 13 november 2006 heeft de zon vrij veel van zijn Java virtual machine (JVM) als vrije en open-source software (FOSS), onder de voorwaarden van de GNU General Public License (GPL). Op 8 mei 2007 heeft de zon klaar met het proces, het maken van al haar JVM’s core code beschikbaar onder de vrije software / open-source distributie termen, afgezien van een klein deel van de code waarin de zon niet het auteursrecht.

Sun’s vice-president Rich Green zei dat de zon de ideale rol met betrekking tot Java was als een “evangelist”. Naar aanleiding van Oracle Corporation overname ‘s van Sun Microsystems in 2009-10, Oracle heeft zichzelf beschreven als de “rentmeester van de Java-technologie met een niet aflatende inzet voor het bevorderen van een gemeenschap van participatie en transparantie “. Dit heeft niet voorkomen dat Oracle van het indienen van een rechtszaak tegen Google kort daarna voor het gebruik van Java in de Android SDK (zie Google hieronder). Java-software draait op alles, van laptops tot datacenters, spelcomputers tot wetenschappelijke supercomputers. Op 2 april 2010, James Gosling ontslag van Oracle.

Principes

Er waren vijf primaire doelen in de oprichting van de Java-taal:

  1. Het moet “eenvoudige, object-georiënteerde, en vertrouwde” zijn.
  2. Het moet ‘robuust en veilig “te zijn.
  3. Het moet “architectuur-neutraal en draagbare” zijn.
  4. Het moet voeren met een “high performance”.
  5. Het moet “geïnterpreteerd, met schroefdraad, en dynamisch”.

Versies

Hoofdartikel: Java-versie geschiedenis

Vanaf 2015 alleen Java 8 wordt ondersteund (“openbaar”). Grote release versies van Java, samen met hun release data:

  • JDK 1.0 (21 januari 1996)
  • JDK 1,1 (februari 19, 1997)
  • J2SE 1.2 (8 december 1998)
  • J2SE 1.3 (8 mei 2000)
  • J2SE 1.4 (6 februari 2002)
  • J2SE 5.0 (30 september 2004)
  • Java SE 6 (11 december 2006)
  • Java SE 7 (28 juli 2011)
  • Java SE 8 (18 maart 2014)

Praktijken

Java-platform

Hoofd artikelen: Java (software platform) en Java virtual machine

Java Control Panel, versie 7

Een doel van het ontwerp van Java is draagbaarheid, wat betekent dat de programma’s geschreven voor het Java-platform op dezelfde wijze moeten worden uitgevoerd op een combinatie van hardware en het besturingssysteem elk met voldoende runtime ondersteuning. Dit wordt bereikt door het samenstellen van de Java-code naar een tussenliggende representatie genaamd Java bytecode, in plaats van direct naar de architectuur-specifieke machine code. Java bytecode instructies zijn analoog aan machinecode, maar zij moeten worden uitgevoerd door een virtuele machine (VM) speciaal geschreven voor de hosthardware. Eindgebruikers gebruiken gewoonlijk een Java Runtime Environment (JRE) geïnstalleerd op hun machine standalone Java toepassingen of in een webbrowser voor Java applets.

Standaard bibliotheken bieden een generieke manier om gastheer-specifieke functies, zoals afbeeldingen, threading, en netwerken.

Het gebruik van universele bytecode maakt porting eenvoudig. Echter, de overhead van het interpreteren van bytecode in machine-instructies maakt geïnterpreteerd programma’s bijna altijd langzamer dan inheemse executables. Echter, just-in-time (JIT) compilers die bytecodes machine code te compileren tijdens runtime werden geïntroduceerd in een vroeg stadium. Java zelf is platformonafhankelijk en is aangepast aan de bijzondere platform is om op te draaien door een Java virtual machine voor, die zich vertaalt Java bytecode in machinetaal het platform.

Implementaties

Zie ook: Gratis Java-implementaties

Oracle Corporation is de huidige eigenaar van de officiële uitvoering van de Java SE platform na verkrijging van Sun Microsystems op 27 januari 2010. Deze uitvoering is gebaseerd op de oorspronkelijke uitvoering van Java van Sun. De implementatie van Oracle is beschikbaar voor Microsoft Windows (XP werkt nog steeds voor, terwijl slechts latere versies momenteel “publiekelijk” ondersteund), Mac OS X, Linux en Solaris. Omdat Java mist elke formele standaardisatie erkend door ECMA, ISO / IEC, ANSI of andere derden normen organisatie, de implementatie van Oracle is de de facto standaard.

De implementatie van Oracle is verpakt in twee verschillende distributies: de Java Runtime Environment (JRE) die de delen van de Java SE-platform nodig om Java-programma’s bevat en is bedoeld voor de eindgebruikers, en de Java Development Kit (JDK), die bedoeld is voor software-ontwikkelaars en omvat de ontwikkeling van instrumenten zoals de Java-compiler, Javadoc, Jar en een debugger.

OpenJDK is een andere opmerkelijke Java SE implementatie die is gelicenseerd onder de GNU GPL. De implementatie begon toen de zon begon het vrijgeven van de Java-broncode onder de GPL. Met ingang van Java SE 7, OpenJDK is de officiële Java-referentie-implementatie.

Het doel van Java is alle implementaties van Java-compatibel te maken. Historisch gezien, Sun’s handelsmerk licentie voor het gebruik van het merk Java dringt erop aan dat alle implementaties “verenigbaar”. Dit resulteerde in een juridisch geschil met Microsoft na Zon beweerde dat de Microsoft-implementatie niet ondersteunen RMI of JNI en had platform-specifieke kenmerken van hun eigen toegevoegd. Zon aangeklaagd in 1997, en in 2001 won een schikking van US $ 20.000.000, evenals een gerechtelijk bevel de handhaving van de voorwaarden van de licentie van Sun. Als gevolg hiervan, Microsoft niet langer schepen Java met Windows.

Platformonafhankelijke Java is essentieel voor Java EE en een nog strengere validatie is vereist om een implementatie certificeren. Deze omgeving maakt draagbare server-side applicaties.

Prestatie

Hoofdartikel: Java prestaties

Programma’s geschreven in Java hebben een reputatie voor het zijn langzamer en vereisen meer geheugen dan die geschreven in C ++. Echter, de snelheid van uitvoering van Java-programma’s ‘aanzienlijk verbeterd met de introductie van just-in-time compilatie in 1997/1998 voor Java 1.1, de toevoeging van taalfuncties ondersteunen betere code analyse (zoals inwendige klassen, de StringBuilder klasse, optioneel beweringen, enz.), en optimalisaties in de Java virtual machine, zoals HotSpot steeds de standaard voor Sun’s JVM in 2000.

Sommige platforms bieden directe hardware-ondersteuning voor Java; zijn er microcontrollers die Java kan draaien in hardware in plaats van een software Java virtual machine, en ARM-gebaseerde processoren kunnen hardware-ondersteuning voor het uitvoeren van Java-bytecode door hun hebben Jazelle optie (terwijl de steun is vooral gedaald in de huidige implementaties van ARM).

Automatische memory management

Java maakt gebruik van een automatische garbage collector om het geheugen te beheren in het object levenscyclus. De programmeur bepaalt wanneer objecten worden gemaakt, en de Java runtime is verantwoordelijk voor het herstellen van het geheugen eenmaal objecten zijn niet meer in gebruik. Zodra geen verwijzingen naar een object blijven, de onbereikbare geheugen in aanmerking komt automatisch worden bevrijd door de garbage collector. Iets wat lijkt op een geheugenlek kan nog steeds optreden als de code een programmeur houdt een verwijzing naar een object dat niet langer nodig is, meestal als objecten die niet meer nodig zijn, worden opgeslagen in containers die nog in gebruik zijn. Als methoden voor een niet-bestaand object worden genoemd, een ‘null pointer uitzondering’ wordt gegooid.

Eén van de ideeën achter automatische memory management model van Java is dat programmeurs kunnen worden gespaard de last van het moeten handmatige memory management te voeren. In sommige talen, wordt het geheugen voor het creëren van objecten impliciet toegewezen op de stack, of expliciet toegewezen en deallocated van de hoop. In het laatste geval is de verantwoordelijkheid van het geheugenbeheer ligt bij de programmer. Als het programma een object niet vrijgeven, een geheugenlek optreedt. Als het programma probeert te openen of deallocate geheugen reeds deallocated, het resultaat ongedefinieerd en moeilijk te voorspellen, en het programma zal waarschijnlijk instabiel en / of crash worden. Dit kan gedeeltelijk verholpen door het gebruik van smart pointers, maar deze voeg overhead en complexiteit. Merk op dat garbage collection niet verhindert “logische” geheugenlekken, dat wil zeggen, die waar het geheugen is nog steeds verwezen, maar nooit gebruikt.

Garbage collection kan gebeuren op elk moment. Idealiter zal gebeuren wanneer een programma wordt gebruikt. Het is gegarandeerd te worden geactiveerd als er onvoldoende vrij geheugen op de hoop om een nieuw object toe te wijzen; Dit kan een programma tijdelijk stilstand veroorzaken. Expliciete geheugen management is niet mogelijk in Java.

Java ondersteunt geen C / C ++ stijl pointer rekenkunde, waarbij object adressen en unsigned integers (meestal lange integers) door elkaar gebruikt kunnen worden. Hierdoor kan de garbage collector naar verwezen objecten verplaatsen en zorgt voor het type veiligheid en beveiliging.

Zoals in C ++ en andere objectgeoriënteerde talen, variabelen Java primitieve gegevenstypen worden rechtstreeks opgeslagen in velden (objecten) of op de stack (voor werkwijzen) in plaats van op de heap, zoals algemeen geldt voor niet-onbewerkte data types (maar zie ontsnappen analyse). Dit was een bewuste beslissing van Java’s ontwerpers voor de prestaties redenen.

Java bevat meerdere soorten vuilnismannen. Standaard [nodig citaat] HotSpot maakt gebruik van de parallelle scavenge garbage collector. Er zijn echter ook diverse andere vuilnismannen die kan worden gebruikt om de stapel te beheren. Voor 90% van de applicaties in Java, de Concurrent Mark-Sweep garbage collector is voldoende. Oracle streeft naar CMS vervangen door de Garbage-eerste collector (G1).

Syntaxis

Hoofdartikel: Java syntaxis

De syntaxis van Java is grotendeels beïnvloed door C ++. In tegenstelling tot C ++, die de syntaxis voor gestructureerde, generieke, en object-georiënteerd programmeren combineert, werd Java bijna uitsluitend gebouwd als een object-georiënteerde taal. Alle code is geschreven in klassen, en elk data item is een object, met de uitzondering van de primitieve data types, dat wil zeggen integers, floating-point getallen, boolean waarden en tekens, die geen voorwerpen voor de prestaties redenen. Java hergebruikt een aantal populaire aspecten van C ++ (zoals methode zoals printf ()).

In tegenstelling tot C ++, is Java ondersteunt operator overbelasting of meervoudige overerving voor de klassen, maar meervoudige overerving wordt ondersteund voor interfaces. Dit vereenvoudigt de taal en helpt bij het voorkomen van mogelijke fouten en anti-patroon design.

Java gebruikt reacties vergelijkbaar met die van C ++. Er zijn drie verschillende stijlen van opmerkingen: een enkele lijn stijl gemarkeerd met twee schuine strepen // een meervoudige lijn stijl geopend met /* en afgesloten met */ en de Javadoc commentaar stijl geopend met /** en afgesloten met */. De Javadoc stijl van commentaar kan de gebruiker de Javadoc executable uitvoeren om de documentatie te maken voor het programma.

Voorbeeld:

 // Dit is een voorbeeld van een opmerking van één regel met twee slashes

 / * Dit is een voorbeeld van een meervoudige lijn reactie met behulp van de slash en asterisk.
 Dit type reactie kan worden gebruikt om veel informatie te houden of uit te schakelen
 code, maar het is belangrijk om te onthouden om de reactie te sluiten.  * /

 pakket fibsandlies;
 import java.util.HashMap;

 / **
 * Dit is een voorbeeld van een Javadoc reactie;  Javadoc documentatie kan samenstellen
 * Van deze tekst.  Javadoc commentaar moet onmiddellijk voorafgaan aan de klasse, methode of veld wordt gedocumenteerd.
 * /
 openbare klasse FibCalculator breidt Fibonacci implementeert Calculator {
     private static Map <Integer, Integer> memoized = new HashMap <Integer, Integer> ();

     / *
 * De belangrijkste methode geschreven als volgt wordt door de JVM als uitgangspunt voor het programma.
 * /
     public static void main (String [] args) {
         memoized zetten (1, 1).;
         memoized zetten (2, 1).;
        .. Systeem uit println (fibonacci (12)); // Haal de 12e Fibonacci getal en afdrukken naar de console
     }

     / **
 * Een voorbeeld van een werkwijze geschreven in Java, verpakt in een klasse.
 * Bij een niet-negatief getal FIBINDEX, retouren
 * De N Fibonacci getal, waarbij N gelijk FIBINDEX.
 *param FibIndex De index van de Fibonacci getal
 *return De Fibonacci getal
 * /
     public static int fibonacci (int fibIndex) {
         if (memoized. ContainsKey (fibIndex)) {
             memoized terug te krijgen (fibIndex).;
         } Else {
             int answer = Fibonacci (fibIndex - 1) + Fibonacci (fibIndex - 2);
            . memoized zetten (fibIndex, antwoord);
             terug antwoord;
         }
     }
 }

Voorbeelden

“Hallo Wereld!” programma

De traditionele “Hallo wereld!” programma kan in Java geschreven worden als:

 class HelloWorldApp {
     public static void main (String [] args) {
         Systeem uit println ("Hello World!");.. // Drukt de string naar de console.
     }
 }

Bronbestanden worden genoemd naar de public class ze bevatten, voegen de suffix.java bijvoorbeeld HelloWorldApp.java Het moet eerst worden gecompileerd in bytecode, met behulp van een Java-compiler, het produceren van een bestand met de naam HelloWorldApp.class Alleen dan kan worden uitgevoerd, of “start”. De Java-bronbestand kan slechts bevatten een openbare klasse, maar het kan meerdere klassen met andere bevatten dan de toegang van het publiek en een willekeurig aantal openbare innerlijke klassen. Wanneer het bronbestand bevat meerdere klassen, maken de ene klasse “publiek” en de naam van het bronbestand met die naam openbare klasse.

Een class die niet wordt aangegeven public kan worden opgeslagen in een java-bestand. De compiler zal een klasse-bestand voor elke klasse omschreven in het bronbestand te genereren. De naam van de klasse bestand is de naam van de klasse, met.class toegevoegd. Voor klasse bestand generatie, anonieme klassen worden behandeld alsof hun naam waren de aaneenschakeling van de naam van hun omsluitende klasse, een $, en een integer.

Het sleutelwoord public geeft aan dat een werkwijze kan worden aangeroepen vanuit code in andere klassen, of dat een klasse kan gebruiken klassen buiten de klasse hiërarchie. De klassenhiërarchie heeft betrekking op de naam van de map waarin het java-bestand zich bevindt. Dit heet een toegangsniveau modifier. Andere niveau toegang modifiers zijn de trefwoorden private en protected

Het sleutelwoord static voor een werkwijze geeft een statische methode, die wordt geassocieerd alleen met de klasse en niet met een specifieke instantie van die klasse. Alleen statische methoden kunnen worden aangevoerd zonder verwijzing naar een object. Statische methoden kan geen toegang tot een klasse-leden die niet zijn ook statisch. Methoden die niet statisch zijn aangewezen zijn bijvoorbeeld methoden, en vereisen een bepaalde instantie van een klasse te bedienen.

Het sleutelwoord void geeft aan dat de belangrijkste methode geen waarde terug naar de beller. Als een Java-programma is om af te sluiten met een foutcode moet System.exit () expliciet noemen.

De naam van de methode main is niet een zoekwoord in de Java-taal. Het is gewoon de naam van de werkwijze de Java launcher verzoekt om controle te geven aan het programma. Java-klassen die worden uitgevoerd in beheerde omgevingen zoals applets en Enterprise JavaBeans niet gebruiken of moet main() methode. Een Java programma kan meerdere klassen die moeten bevatten main werkwijzen, waardoor de VM moet uitdrukkelijk worden verteld welke klasse starten vanuit.

De belangrijkste methode moet een aanvaarden scala van String objecten. Volgens afspraak wordt verwezen als args hoewel enige andere wettelijke identifier naam kan worden gebruikt. Sinds Java 5, kan de belangrijkste methode ook gebruik maken van een variabele argumenten, in de vorm van public static void main(String… args) waardoor de belangrijkste methode om te worden aangeroepen met een willekeurig aantal String argumenten. Het effect van deze alternatieve verklaring semantisch identiek (de args parameter nog een reeks String objecten), maar biedt een alternatieve syntax voor het creëren en het passeren van de array.

De Java-draagraket lanceert Java door het laden van een bepaalde klasse (opgegeven op de opdrachtregel of als een attribuut in een JAR) en de start public static void main(String[]) methode. Stand-alone programma’s moeten deze methode expliciet verklaren. De String[] args parameter is een serie van String voorwerpen die alle argumenten doorgegeven aan de klas. De parameters main zijn vaak doorgegeven door middel van een command line.

Afdrukken is een onderdeel van een Java-standaard bibliotheek: De System class definieert een openbare statische veld met de naam out De out is een instantie van de PrintStream klasse en biedt een groot aantal methoden voor het afdrukken van gegevens standaard uit, waaronder println(String) die ook voegt een nieuwe lijn aan de doorgegeven string.

De string “Hello World!” wordt automatisch door de compiler om een object String omgezet.

Uitgebreide voorbeeld

[Hide] Deze sectie heeft meerdere problemen. Gelieve te helpen verbeteren of te bespreken deze kwesties op de overleg pagina.
Deze sectie is niet citeren enige bronnen. (Mei 2013)
Dit gedeelte bevat instructies, advies of how-to inhoud. (Mei 2013)
 // OddEven.java
 import javax.swing.JOptionPane;

 public class OddEven {

     private int userinput; // een geheel getal ("int" betekent integer)

     / **
 * Dit is de aannemer methode.  Het wordt aangeroepen wanneer een object van het type OddEven
 * Wordt gemaakt.
 * /
     openbare OddEven () {
         / *
 * In de meeste Java-programma's constructeurs kunnen objecten initialiseren met standaardwaarden, of maak
 * Andere objecten die dit object zou kunnen gebruiken om zijn taken uit te voeren.  In sommige Java-programma's, de
 * Constructeur kan gewoon een lege functie zijn als er niets moet vooraf worden geïnitialiseerd om de
 * Werking van het object.  In het geval van dit programma, zou een lege constructor volstaan.
 * Een aannemer moet bestaan;  Indien de gebruiker niet zet men dan in de compiler
 * Zal een lege creëren.
 * /
     }

     / **
 * Dit is de belangrijkste methode.  Het wordt genoemd wanneer deze klasse wordt uitgevoerd door middel van een Java-interpreter.
 *param Args command line argumenten (ongebruikte)
 * /
     public static void main (laatste String [] args) {
        / *
 * Deze lijn van code wordt een nieuw exemplaar van deze klasse met de naam "nummer" (ook bekend als een
 * Object) en geïnitialiseerd door te bellen naar de constructeur.  De volgende regel code oproepen
 * De "ShowDialog ()" methode, die een prompt om u te vragen om een aantal brengt.
 * /
        OddEven nummer = new OddEven ();
       . nummer ShowDialog ();
     }

     public void ShowDialog () {
         / *
 * "Proberen" zorgt ervoor dat er niets mis gaat.  Als er iets gebeurt,
 * De tolk springt te "vangen" om te zien wat het moet doen.
 * /
         try {
             / *
 * De onderstaande code brengt een JOptionPane, dat is een dialoogvenster
 * Het String geretourneerd door de "showInputDialog ()" methode wordt omgezet in
 * Een geheel getal is, waardoor het programma behandelen als een nummer in plaats van een woord.
 * Daarna noemt deze methode een tweede methode, berekent (), die zal
 * Geven ofwel "Zelfs" of "Odd."
 * /
            . userinput = Integer parseInt (. JOptionPane showInputDialog ("Voer een getal."));
             berekenen ();
         } Catch (laatste NumberFormatException e) {
             / *
 * Het krijgen in de catch-blok betekent dat er een probleem was met het formaat van
  * het nummer.  Waarschijnlijk sommige brieven werden in plaats van een nummer getypt.
 * /
            . Systeem err println ("FOUT: Ongeldige invoer Typ in een numerieke waarde..");.
         }
     }

     / **
 * Wanneer deze wordt aangeroepen, stuurt een bericht naar de tolk.
 * De tolk toont het meestal op de opdrachtprompt (voor Windows-gebruikers)
 * Of de terminal (voor * nix-gebruikers). (Ervan uitgaande dat het is geopend)
 * /
     private void berekenen () {
         if ((userinput% 2) == 0) {
             JOptionPane showMessageDialog (null, "Zelfs.");
         } Else {
            . JOptionPane showMessageDialog (null, "Odd");
         }
     }
 }
  • De import statement importeert de JOptionPane klasse van de javax.swing pakket.
  • De OddEven klasse verklaart een private gebied van het type int genaamd userInput Elke instantie van de OddEven klasse heeft zijn eigen kopie van de userInput veld. De privé-verklaring betekent dat er geen andere klasse kan toegang (lezen of schrijven) de userInput veld.
  • OddEven() is een public aannemer. Constructeurs hebben dezelfde naam als de omsluitende klasse worden ze in gedeclareerd, en in tegenstelling tot een methode, hebben geen return type. Een aannemer wordt gebruikt om een initialiseren object dat is een nieuw opgerichte instantie van de klasse.
  • Het calculate() methode wordt verklaard zonder dat de static trefwoord. Dit betekent dat de werkwijze wordt aangeroepen met behulp van een exemplaar van het OddEven klasse. (De verwijzing gebruikt om de werkwijze te roepen wordt doorgegeven als een parameter aangegeven type OddEven noemde this De werkwijze test de expressie userInput % 2 == 0 met het if zoekwoord of de resterende delen userInput veld van het exemplaar van de klasse beide nul. Als deze expressie waar is, dan drukt Zelfs; indien deze uitdrukking onwaar drukt Odd. (Het calculate methode kan gelijkwaardig worden benaderd als this.calculate en userInput veld kan gelijkwaardig worden benaderd als this.userInput die zowel expliciet de zwartwerk this parameter.)
  • OddEven number = new OddEven(); verklaart een lokale object referentie variabele in de main methode genaamd number Deze variabele kan een verwijzing naar een object van het type houden OddEven De verklaring geïnitialiseerd number door eerst een instantie van de OddEven klasse, met behulp van het new trefwoord en de OddEven() constructeur, en vervolgens toewijzen dit geval aan de variabele.
  • De verklaring number.showDialog(); noemt het berekenen methode. Het exemplaar van OddEven object verwezen door het number lokale variabele wordt gebruikt om de methode aan te roepen en doorgegeven als het zwartwerk this parameter om het calculate methode.
  • userInput = Integer.parseInt(JOptionPane.showInputDialog(“Please Enter A Number”)); is een verklaring dat het type String aan de omzet primitieve datatype int door middel van een nutsfunctie in het primitieve wrapper klasse Integer.

Speciale klassen

Dit gedeelte bevat instructies, advies of how-to inhoud. Het doel van Wikipedia is om de feiten te presenteren, niet om te trainen. Gelieve te helpen verbeteren van dit artikel, hetzij door het herschrijven van de how-to inhoud of door het verplaatsen van het naar Wikiversity, Wikibooks of wikivoyage. (Januari 2012)

Applet

Hoofdartikel: Java-applet

Java-applets zijn programma’s die zijn ingebed in andere toepassingen, typisch in een webpagina weergegeven in een webbrowser.

 // Hello.java
 import javax.swing.JApplet;
 import java.awt.Graphics;

 public class Hallo breidt JApplet {
     public void paintComponent (laatste Graphics g) {
         g drawString ("Hallo wereld!", 65, 95).;
     }
 }

De import verklaringen direct de Java-compiler om de include javax.swing.JApplet en java.awt.Graphics klassen in de compilatie. De import instructie kunt deze klassen te worden verwezen in de broncode met behulp van de eenvoudige naam van de klasse (dwz JApplet in plaats van de volledig gekwalificeerde naam van de klasse (FQCN, dwz javax.swing.JApplet

De Hello klasse extends (subklassen) de JApplet (Java applet) klasse; de JApplet klasse vormt het kader voor de host-toepassing te geven en de controle van de levenscyclus van de applet. De JApplet klasse is een JComponent (Java grafische component), die de applet met de mogelijkheid om een weer te geven biedt grafische gebruikersinterface (GUI) en te reageren op de gebruiker gebeurtenissen.

De Hello klasse overschrijft de paintComponent(Graphics) methode (bovendien aangeduid met de annotatie, ondersteund als van JDK 1.5, Override overgenomen van de Container superklasse om de code aan de applet weer te geven te bieden. De paintComponent() methode wordt doorgegeven van een Graphics dat de grafische context gebruikt om de applet weer te geven bevat. De paintComponent() methode noemt de grafische context drawString(String, int, int) methode om de “Hallo wereld!” String op te geven pixel offset van 65, 95 van de linkerbovenhoek van het display van de applet.

 <! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.01 // EN"
 "http://www.w3.org/TR/html4/strict.dtd">
 <! - Hello.html ->
 <html>
     <head>
         <title> Hello World Applet </ title>
     </ head>
     <body>
         <applet code = "Hello.class" width = "200" height = "200">
         </ applet>
     </ body>
 </ html>

Een applet wordt geplaatst in een HTML-document met behulp van de <applet> HTML-element. De applet tag heeft drie eigenschappen instellen: code=”Hello” specificeert de naam van de JApplet klas en width=”200″ height=”200″ zet de pixel breedte en hoogte van de applet. Applets kan ook worden ingebed in HTML met behulp van het object of embed element, hoewel de steun voor deze elementen door webbrowsers inconsistent is. Maar de applet tag is verouderd, dus het object tag heeft de voorkeur indien ondersteund.

De hosttoepassing, meestal een webbrowser, een instantie van de Hello applet en creëert een AppletContext voor de applet. Zodra de applet zelf is geïnitialiseerd, wordt het toegevoegd aan de AWT scherm hiërarchie. De paintComponent() methode wordt aangeroepen door de AWT event dispatching draad wanneer het scherm moet de applet om zichzelf te trekken.

Servlet

Hoofdartikel: servlet

Servlet technologie biedt webontwikkelaars met een eenvoudige, consistente mechanisme voor het uitbreiden van de functionaliteit van een webserver en voor de toegang tot de bestaande bedrijfssystemen. Servlets zijn server-side Java EE componenten die reacties (meestal het genereren van HTML pagina’s) te verzoeken (meestal HTTP-verzoeken) van cliënten. Een servlet kan bijna van worden gezien als een applet die op de server-side zonder gezicht loopt.

 // Hello.java
 import java.io. *;
 importeren javax.servlet *.;

 public class Hallo breidt GenericServlet {
     public void dienst (laatste ServletRequest verzoek definitief ServletResponse respons)
     gooit ServletException, IOException {
        . response setContentType ("text / html");
        laatste  PrintWriter  pw  =   reactie.  getWriter  ();
        probeer
             {pw.  println  ("Hallo
        wereld!");}  eindelijk
             {pw.  dicht  ();
         }
     }
 }

De import verklaringen direct de Java-compiler om alle openbare klassen en omvatten interfaces van de java.io en javax.servlet pakketten in de compilatie. Pakketten maken Java geschikt voor grootschalige toepassingen.

De Hallo klasse breidt de GenericServlet klasse; de GenericServlet klasse voorziet de interface voor de server te verzoeken aan de servlet sturen en beheersen van de levenscyclus servlet’s.

De Hallo klasse overschrijft de dienst (ServletRequest, ServletResponse) methode gedefinieerd door de Servlet-interface om de code voor de dienst verzoek handler bieden. De dienst () methode wordt gevoerd: a ServletRequest object dat het verzoek van de cliënt en bevat ServletResponse object gebruikt om de respons terug naar de client te maken. De dienst () methode verklaart dat het gooit de uitzonderingen ServletException en IOException als er een probleem voorkomt dat het antwoord op het verzoek.

De setContentType (String) methode in de response object wordt aangeroepen om de gestelde MIME content type van de geretourneerde gegevens “text / html”. The getWriter () methode in de reactie geeft een PrintWriter object dat wordt gebruikt om de data die naar de cliënt wordt verzonden schrijven. De println (String) methode wordt aangeroepen om de brief “Hallo wereld!” String naar het antwoord en dan de close () methode wordt aangeroepen om de afdruk schrijver, die de data die is geschreven om de stroom te worden geretourneerd veroorzaakt sluiten aan de klant.

JavaServer Pages

Hoofdartikel: JavaServer Pages

JavaServer Pages (JSP) zijn server-side Java EE componenten die reacties, meestal het genereren van HTML-pagina’s, om HTTP verzoeken van klanten. JSP insluiten Java-code in een HTML-pagina met behulp van de speciale scheidingstekens <% en%>. Een JSP is samengesteld naar een Java servlet, een Java-toepassing in zijn eigen recht, de eerste keer dat het wordt geopend. Daarna de gegenereerde servlet creëert respons.

Swing applicatie

Hoofd artikel: Swing (Java)

Swing is een grafische gebruikersinterface bibliotheek voor Java SE platform. Het is mogelijk om een ander uiterlijk te geven en voelen door de pluggable ‘look and feel-systeem of Swing. Klonen van Windows, GTK + en Motif worden geleverd door Sun. Apple biedt ook een Aqua look en feel voor Mac OS X. Waar eerdere implementaties van deze eruit ziet en voelt kunnen zijn overwogen ontbreekt, Swing in Java SE 6 lost dit probleem op door het gebruik van meer inheemse GUI widget tekening routines van de onderliggende platforms.

Dit voorbeeld Swing toepassing zorgt voor een enkel venster met “Hallo wereld!” binnen:

// Hello.java (Java SE 5)
import  javax.swing  *.;

public  class  Hello  extends  JFrame  {
    public  Hello  ()  {
        super  (  "hello"  );
        super .  setDefaultCloseOperation  (  WindowConstants .  EXIT_ON_CLOSE  );
        super .  add  (  new  JLabel  (  "Hello, wereld  "!));
         super.  pak  ();
         super.  setVisible    (true);
     }

    public  static  void  main   (laatste  String  []   args)
        {nieuwe  Hallo  ();
     }
 }

De eerste import omvat alle openbare klassen en interfaces van de javax.swing pakket.

De Hallo klasse breidt de JFrame klasse; de JFrame klasse implementeert een venster met een titelbalk en een nauwe controle.

The Hallo () constructeur initialiseert het frame door eerst te bellen de superklasse constructor passeren van de parameter “hello”, die als titel van het venster. Het het roept vervolgens setDefaultCloseOperation (int) methode geërfd van JFrame de standaard werking te stellen wanneer de nauwe controle op de titelbalk is geselecteerd om WindowConstants.EXIT_ON_CLOSE – dit zorgt ervoor dat de JFrame worden verwijderd wanneer het frame gesloten is (in tegenstelling tot louter verborgen), die de Java virtuele machine maakt om af te sluiten en het programma te beëindigen. Vervolgens wordt een JLabel wordt gemaakt voor de string “Hallo wereld!” En de add (Component) methode overgenomen van de Container superklasse is geroepen om het label toe te voegen aan het frame. De pack () methode overgenomen van de Window superklasse is geroepen om de grootte van het venster en de lay-out van de inhoud ervan.

De main () methode wordt aangeroepen door de Java virtual machine wanneer het programma start. Het instantieert een nieuwe Hallo frame en zorgt ervoor dat het wordt weergegeven door de oproepende setVisible (boolean) methode overgenomen van de Component superklasse met de parameter boolean ware. Nadat het frame weergegeven, verlaat de belangrijkste methode zorgt niet voor het programma te beëindigen omdat de AWT event dispatching draad blijft actief totdat alle Swing hoogste niveau vensters zijn aangebracht.

Generics

Hoofdartikel: Generics in Java

In 2004, generieke geneesmiddelen werden toegevoegd aan de Java-taal, als onderdeel van J2SE 5.0. Vóór de invoering van generieke elke variabele declaratie had een specifiek type. Voor container klassen, bijvoorbeeld, is een probleem omdat er geen gemakkelijke manier om een container die alleen specifieke soorten objecten accepteert creëren. Ofwel de container werkt op alle subtypen van een klasse of interface meestal object, of een andere container klasse moet worden gemaakt voor elke bevatte klasse. Generics laten compilatie typecontrole zonder veel container klassen te creëren, elk met bijna identieke code. Naast het inschakelen efficiëntere code, worden bepaalde runtime uitzonderingen omgezet fouten, een karakteristiek zogenaamde time compileren typebeveiliging.

Kritiek

Hoofdartikel: Kritiek op Java

Kritiek op Java onder meer de implementatie van generieke geneesmiddelen, snelheid, de behandeling van unsigned nummers, voor de uitvoering van floating-point rekenen, en een geschiedenis van beveiligingsproblemen in de primaire Java VM implementatie HotSpot.

Gebruik op onofficiële software platformen

De Java programmeertaal vereist de aanwezigheid van een software platform zodat gecompileerde programma te voeren. Een bekende onofficiële Java-achtige software platform is de Android-software platform, die het gebruik van Java 6 en een aantal Java 7 functies maakt, gebruikt een andere standaard bibliotheek (Apache Harmony herimplementatie), verschillende bytecode taal en verschillende virtuele machine, en is ontworpen voor laag-geheugen apparaten, zoals smartphones en tablet computers.

Het Android besturingssysteem maakt uitgebreid gebruik van Java-gerelateerde technologie

Google

Zie ook:. Oracle America, Inc. tegen Google, Inc.

Google en Android, Inc. hebben ervoor gekozen om Java te gebruiken als een belangrijke pijler in de oprichting van het Android besturingssysteem, een open source mobiele besturingssysteem. Hoewel het Android besturingssysteem, gebouwd op de Linux kernel, werd grotendeels geschreven in C, de Android SDK maakt gebruik van de Java-taal als basis voor Android applicaties. Echter, Android geen gebruik van de Java virtual machine, in plaats met behulp van Java bytecode als tussenstap en uiteindelijk richten op Android eigen Dalvik virtuele machine of meer recent Android Runtime die eigenlijk compileert toepassingen native machine code bij de installatie.

Android ook niet zorgen voor de volledige Java SE standaard bibliotheek, hoewel de Android class library bevat wel een onafhankelijke implementatie van een groot deel van het. Dit leidde tot een juridisch geschil tussen Oracle en Google. Op 7 mei 2012, een jury in San Francisco vond dat als API’s kunnen worden beschermd, dan is Google had Oracle auteursrechten geschonden door het gebruik van Java in Android-apparaten. District Judge William Haskell Alsup oordeelde op 31 mei 2012, dat de API’s kan niet worden beschermd, maar dit werd teruggedraaid door de Verenigde Staten Hof van Beroep voor het Federale Circuit mei 2014.

Class libraries

Dit deel moet extra citaties voor verificatie. Gelieve te helpen verbeteren van dit artikel door de toevoeging van citaten aan betrouwbare bronnen. Unsourced materiaal kan worden aangevochten en verwijderd. (December 2014)
Hoofdartikel: Java Class Library

De Java Class Library is de standaard bibliotheek, ontwikkeld om de ontwikkeling van toepassingen te ondersteunen in Java. Het wordt gecontroleerd door Sun Microsystems in samenwerking met anderen via het Java Community Process programma. Bedrijven of personen die deelnemen aan dit proces kan het ontwerp en de ontwikkeling van de API’s beïnvloeden. Dit proces is een onderwerp van controverse geweest. [Wanneer?] De klasse bibliotheek bevat functies, zoals:

  • De kern bibliotheken, waaronder:
    • IO / NIO
    • Netwerken
    • Reflectie
    • Samenloop
    • Generics
    • Scripting / Compiler
    • Functionele Programmeren (Lambda, Streaming)
    • Collecties van bibliotheken die implementeren datastructuren, zoals lijsten, woordenboeken, bomen, sets, wachtrijen en double-ended wachtrij, of stapels
    • XML Processing (parseren, Transforming, valideren) bibliotheken
    • Veiligheid
    • Internationalisering en lokalisatie bibliotheken
  • De integratie bibliotheken, waardoor de toepassing schrijver voor communicatie met externe systemen. Deze bibliotheken omvatten:
    • De Java Database Connectivity (JDBC) API voor toegang tot de database
    • Java Naming en Directory Interface (JNDI) voor het opzoeken en de ontdekking
    • RMI en CORBA voor gedistribueerde applicatie-ontwikkeling
    • JMX voor het beheren en bewaken van applicaties
  • Gebruikersinterface bibliotheken, waaronder:
    • De (zwaargewicht, of inheemse) Abstract Window Toolkit (AWT), die voorziet in GUI-onderdelen, de middelen voor het opmaken van de onderdelen en de middelen voor de behandeling van gebeurtenissen uit die componenten
    • De (lichte) Swing bibliotheken, die zijn gebouwd op AWT, maar bieden (non-native) implementaties van de AWT widgetry
    • API’s voor audio-opname, verwerking, en afspelen
    • JavaFX
  • Een platform afhankelijk van de uitvoering van de Java virtual machine, dat is de manier waarop de bytecodes van de Java-bibliotheken en toepassingen van derden worden uitgevoerd
  • Plugins, die het mogelijk maken applets in webbrowsers te worden uitgevoerd
  • Java Web Start, die Java-toepassingen mogelijk maakt efficiënt te worden gedistribueerd naar eindgebruikers over het internet
  • Licenties en documentatie

Documentatie

Hoofdartikel: Javadoc

Javadoc is een uitgebreide documentatie systeem, gecreëerd door Sun Microsystems, gebruikt door veel ontwikkelaars van Java [door wie?]. Het biedt ontwikkelaars een georganiseerd systeem voor het documenteren van hun code. Javadoc opmerkingen hebben een extra sterretje aan het begin, dat wil zeggen de scheidingstekens zijn / ** en * /, terwijl de normale multi-line commentaar in Java worden verrekend met de scheidingstekens / * en * /.

Edities

Zie ook: Gratis Java implementaties § klasse bibliotheek
Java edities
Wave.svg
  • Java Card
  • Micro Edition (ME)
  • Standard Edition (SE)
  • Enterprise Edition (EE)
  • JavaFX (Samengevoegd met Java SE 8)
  • PersonalJava (gestaakt)
  • v
  • t
  • e

Sun heeft gedefinieerd en ondersteunt vier edities van Java gericht is op verschillende applicatie-omgevingen en gesegmenteerd veel van de API’s, zodat zij behoren tot een van de perrons. De platforms zijn:

  • Java Card voor smartcards.
  • Java Platform, Micro Edition (Java ME) -. Richten omgevingen met beperkte middelen
  • Java Platform, Standard Edition (Java SE) -. Targeting workstation omgevingen
  • Java Platform, Enterprise Edition (Java EE) -. Targeting grote gedistribueerde enterprise of Internet omgevingen

De klassen in de Java API’s zijn georganiseerd in aparte groepen genoemd pakketten. Elk pakket bevat een set van samenhangende interfaces, klassen en uitzonderingen. Zie de afzonderlijke platforms voor een beschrijving van de pakketten beschikbaar. [Relevant voor deze sectie? – Bespreken]

Zon ook voorzien van een editie genaamd PersonalJava die is vervangen door later, op standaarden gebaseerde Java ME-configuratie-profiel paringen.

Bekijk ook

Portal icoonJava portal
Portal icoonComputer programmering portal
Boekpictogram
  • Boek: Programmeren voor studenten
  • Dalvik – gebruikt in de oude Android-versies, vervangen door niet-JIT Android Runtime
  • JavaOne
  • Javapedia
  • Lijst van Java virtual machines
  • Lijst van de Java API’s
  • Lijst van JVM talen
  • Graal, een project gericht op de implementatie van een high-performance Java dynamische compiler en tolk

Vergelijking van Java andere talen

  • Vergelijking van programmeertalen
  • Vergelijking van Java en C ++
  • Vergelijking van C # en Java