Java (llenguatge de programació)
Java llenguatge de programació | |
---|---|
Autor | James Gosling , Sun Microsystems |
Data d’origen | 23 de maig de 1995 |
Última versió | Java Standard Edition 14 (17 de març de 2020) |
Ús | Propòsit general |
Paradigmes | Orientat a objectes |
Escrivint | Fort |
Especificacions d'idioma | Especificació del llenguatge Java, Java SE 9 |
Extensions comunes | .jar, .java, .class |
Influenciat per | Simula , Ada 83 , C ++ , Eiffel , Java genèric , Mesa , Modula-3 , Oberon , Objective-C , UCSD Pascal , Smalltalk |
Va influir | Ada 2005 , BeanShell , C # , Clojure , D , ECMAScript , Groovy , J # , JavaScript , PHP , Python , Scala , Seed7 , Vala |
Implementació de referència | |
Implementació | intèrpret amb JITter |
Sistema operatiu | Windows , Linux , macOS |
Llicència | Llicència pública general GNU , procés de comunitat de Java |
Lloc web | Desenvolupadors Oracle de tecnologia Java |
En informàtica, Java és un llenguatge de programació d’alt nivell , orientat a objectes i d’ escriptura estàtica , que es basa en la plataforma de programari d’ execució homònima , dissenyada específicament per ser el més independent possible de la plataforma de maquinari d’ execució (mitjançant la compilació de bytecode abans i la interpretació aleshores per una JVM ) (tot i que aquesta característica implica un rendiment en termes de càlcul inferior als de llenguatges compilats directament com C i C ++ o, per tant, perfectament adaptats a la plataforma de maquinari).
Història

Java es va crear a partir de la investigació feta a la Universitat de Stanford a principis dels anys noranta . El 1992 va néixer el llenguatge Oak (en italià "oak"), produït per Sun Microsystems i creat per un grup de desenvolupadors experts liderats per James Gosling . [1] Aquest nom es va canviar més tard a Java a causa de problemes de copyright : el llenguatge de programació Oak ja existia. [2]
Per facilitar la transició a Java per a programadors antics , particularment aquells vinculats a llenguatges com C ++ , la sintaxi bàsica ( estructures de control , operadors, etc.) s'ha mantingut gairebé idèntica a la de C ++ [3]. ] [4] ; tanmateix, a nivell de llenguatge, no s’han introduït cap característica que es consideri una font de complexitat innecessària i que afavoreixi la introducció de certs errors durant la programació, com ara l’aritmètica del punter i l’herència de classes múltiples. [5] Per a les característiques del llenguatge orientades a objectes, ens vam inspirar en C ++ i sobretot en l' objectiu C. [6]
Al principi, Sun va decidir utilitzar aquest nou producte per crear aplicacions complexes per a petits dispositius electrònics; va ser només el 1993 amb l'explosió d' Internet que Java va començar a notar-se com a eina per començar a programar per Internet. Al mateix temps, Netscape Corporation va anunciar l'elecció de dotar el seu famós i famós navegador de llavors de la màquina virtual de Java (JVM). Això suposa una revolució en el món d’Internet: gràcies als applets , les pàgines web es van convertir en interactives a nivell de client, és a dir, les aplicacions s’executen directament a la màquina de l’usuari d’Internet i no a un servidor remot. Per exemple, els usuaris podrien jugar directament a les pàgines web i aprofitar els xats dinàmics i interactius.
Java es va anunciar oficialment el 23 de maig de 1995 a SunWorld. El 13 de novembre de 2006 , Sun Microsystems va llançar la seva implementació del compilador Java i la màquina virtual sota la GPL . No totes les plataformes Java són gratuïtes. L’entorn Java lliure s’anomena IcedTea. [7] El 8 de maig de 2007, Sun també va llançar les biblioteques, excepte alguns components que no pertanyien a ella, sota la llicència GPL, convertint a Java en un llenguatge de programació la implementació de referència del qual és lliure. [8] El llenguatge el defineix un document anomenat The Java Language Specification, sovint abreujat JLS . La primera edició del document es va publicar el 1996. [9] Des de llavors la llengua ha sofert nombrosos canvis i addicions, que es van afegir de tant en tant en edicions posteriors. A finals de 2018, la versió més recent de les especificacions és la Java SE 11 Edition . [9]
Descripció
Llenguatge
Un dels principis fonamentals del llenguatge s’expressa amb el lema WORA ( escriure una vegada, córrer en qualsevol lloc , és a dir, “escriure una vegada, córrer en qualsevol lloc”): el codi compilat que s’executa en una plataforma no s’ha de recompilar per executar-se en una plataforma diferent ; de fet, el producte de la compilació es troba en un format anomenat bytecode que es pot executar mitjançant qualsevol implementació d'un processador virtual anomenat Java Virtual Machine ; a partir de 2014, Java sembla ser un dels llenguatges de programació més utilitzats al món, especialment per a aplicacions client-servidor , amb un nombre de desenvolupadors estimat en uns 9 milions. [10] [11] ; un bon punt de partida per aprendre Java és el tutorial oficial [12] .
Principis
Java es va crear per complir cinc objectius principals: [13]
- ser "senzill, orientat a objectes i familiar";
- ser "robust i segur";
- ser independent de la plataforma ;
- contenir eines i biblioteques per fer xarxes ;
- estar dissenyat per executar codi de fonts remotes de manera segura.

Hola món!
A continuació es mostra el codi font d’un programa senzill que imprimeix el text " Hello world " a la consola .
classe HelloWorld {
public static void main ( String [] args ) {
Sistema . fora . println ( "Hola món" );
}
}
Un programa Java mínim ha d'incloure la definició de la classe mitjançant la paraula clau de classe seguida del nom_classe i el mètode principal o principal i el punt d' entrada del programa en què es defineixen variables globals, objectes i anomenats mètodes estàtics de variables i / o dinàmica en objectes.
A l'exemple anterior, main conté les instruccions per imprimir la cadena Hello World a la pantalla; tot i que és totalment funcional i fàcil d’entendre, la filosofia orientada a objectes que normalment s’aplica a qualsevol programa escrit en Java no s’explota. A continuació es mostra el codi font d’un programa que realitza la mateixa tasca que l’anterior mitjançant la programació orientada a objectes .
missatge de classe pública {
private String toPrint ;
Missatge públic ( impressió de cadena ) {
això . toPrint = imprimir;
}
public void print () {
Sistema . fora . println ( això . imprimir );
}
public static void main ( String args [] ) {
Missatge helloworld = missatge nou ( "Hola món!");
hola món . print ();
}
}
El mètode principal confia la impressió del missatge a un objecte creat específicament per a aquesta tasca, en el qual s’invoca el mètode d’ impressió dinàmica definit abans del main junt amb el constructor de la classe o aquell mètode concret (amb el mateix nom de la classe) que s’utilitza per inicialitzar l’atribut de classe ' toPrint de l'objecte creat / instanciat a main. Els mètodes definibles es poden declarar privats (marcats amb la paraula clau privada ) si només es poden anomenar dins de la mateixa classe o públics (marcats amb la paraula clau pública ) si també poden ser anomenats per altres classes, de tipus estàtic (marcats amb la paraula clau estàtica ) si és invocable lliurement dins de la classe (per exemple, sobre variables globals), dinàmica si és invocable sobre objectes.
En escriure noves classes que donin suport a l’operació d’ impressió , es pot adaptar el programa per mostrar missatges de tipus radicalment diferents, deixant la principal gairebé sense canvis, canviant només la mitja línia següent a la nova . Per exemple, podeu considerar un missatge escrit en una finestra que apareix a la pantalla de l'ordinador en ús o una cadena enviada a través d'una connexió de xarxa que aparegui a la finestra d'un equip client . O bé, el programa pot parlar amb l'usuari a la línia d'ordres o en una finestra (considerant el diàleg com un "missatge interactiu").
És possible modificar radicalment el comportament del programa amb canvis limitats i en punts predisposats a priori ( polimorfisme ): el programa pot suportar actualitzacions i necessitats inesperades. A continuació es mostra el codi font de dos programes que mostren el mateix text dins d’una finestra . El primer crea una finestra estàndard on s’escriu la cadena introduïda com a paràmetre, mentre que el segon programa crea una finestra respectant els paràmetres (per exemple, la mida de la finestra) inserits al codi.
importació javax.swing.JOptionPane ;
classe pública HelloWorld {
public static void main ( String [] args ) {
JOptionPane . showMessageDialog ( nul , "Hola món!" );
}
}
//HelloWorld.java
paquet helloworld ;
importa javafx.application.Application ;
importació javafx.event.ActionEvent ;
importació javafx.event.EventHandler ;
importa javafx.scene.Scene ;
importació javafx.scene.control.Button ;
importa javafx.scene.layout.StackPane ;
importa javafx.stage.Stage ;
la classe pública HelloWorld amplia l' aplicació {
@Override
public void start ( Stage primaryStage ) {
Botó btn = nou Botó ();
btn . setText ( "Digues" Hola món "" );
btn . setOnAction ( nou EventHandler < ActionEvent > () {
@Override
identificador de buit públic ( esdeveniment ActionEvent ) {
Sistema . fora . println ( "Hola món!" );
}
});
StackPane root = nou StackPane ();
arrel . getChildren (). afegir ( btn );
Escena de l' escena = nova escena ( arrel , 300 , 250 );
PrimaryStage . setTitle ( "Hola món!" );
PrimaryStage . setScene ( escenes );
PrimaryStage . show ();
}
public static void main ( String [] args ) {
llançament ( args );
}
}
El codi proposat crea objectes que s’utilitzen per gestionar la interfície gràfica. Inicialment es crea una finestra el títol de la qual és Hello World! ; dins d'aquesta finestra s'insereix una etiqueta que conté la paraula Hello World! al centre . . Finalment, s'estableix la mida de la finestra que, finalment, es fa visible juntament amb l'etiqueta que porta l'escriptura que es mostrarà. També en aquest codi s'utilitza la programació d'objectes, però d'una manera diferent: el principal no coneix els mecanismes necessaris per crear una interfície gràfica a la pantalla i aquests són decidits per les classes JFrame i JLabel que s'han preparat a priori ( encapsulació ) .
Sistema de tipus
Java és un sistema de tipus nominatiu segur i de tipus estàtic , de tipus nominatiu i llenguatge d'escriptura de manifest . En virtut d’aquestes característiques, generalment es considera un llenguatge fortament tipificat . El llenguatge distingeix clarament els tipus primitius que defineixen els valors atòmics dels tipus estructurats que defineixen les estructures de dades compostes.
Els tipus primitius també s’anomenen tipus atòmics i tipus bàsics i es defineixen a les especificacions del llenguatge: es coneix el conjunt exacte de valors permesos i els operadors compatibles.
Els tipus estructurats també són tipus de referència , és a dir, defineixen objectes i són classes o interfícies. Entre aquestes, les classes de matrius es defineixen a l'especificació del llenguatge; la resta de tipus estructurats estan " definits per l' usuari ", és a dir, pel programador. Els tipus definits per l'usuari que estan lligats a l'idioma per algun motiu es reuneixen al paquet java.lang
i als seus subpaquets; el llenguatge estableix per a alguns d'ells ( Object
, String
, Iterable
i altres) regles sintàctiques o semàntiques addicionals.
Els tipus de referència inclouen classes per a la gestió de cadenes, matrius i col·leccions (llistes, mapes, etc.).
- Tipus bàsics
Paio | Descripció | Classe de contenidors |
---|---|---|
byte | Enter signat de 8 bits | Byte |
curt | Enter signat de 16 bits | Curt |
int | Enter signat de 32 bits | Enter |
llarg | Nombre enter de 64 bits signat | Llarg |
flotar | Punt flotant de precisió simple de 32 bits ( estàndard IEEE 754 ) | Flotador |
doble | Punt flotant de doble precisió de 64 bits ( estàndard IEEE 754 ) | Doble |
char | Caràcter únic Unicode (enter sense signar de 16 bits) | Personatge |
booleà | true o false | Booleà |
De tot això es dedueix que els valors dels tipus bàsics no són objectes. No obstant això, per a cada tipus de base es defineix una classe corresponent, definida a l'argot com a tipus d'embolcall o tipus de contenidor , al paquet java.lang
, una classe que permet encapsular un valor de tipus primitiu dins d'un objecte. Els mètodes adequats de la classe wrapper permeten obtenir l'objecte que encapsula un valor determinat i el valor encapsulat per un determinat objecte.
A partir de la versió 5.0 d'ara endavant autoboxing i sense caixa són compatibles que li permeten convertir de tipus primitiu de classe de contenidor corresponent i viceversa. El compilador, "entre bastidors", tradueix la conversió en una invocació de mètode adequada a la classe de contenidors; per tant, no és una conversió real, sinó una sintaxi convenient que "amaga" la creació d'un objecte de la classe wrapper. Com molts altres llenguatges de programació, Java també té matrius entre les seves estructures de dades (vegeu matrius a Java ).
Constants
Els valors de les constants a Java s’identifiquen amb les paraules clau amb prefix: final estàtic seguit del tipus, el nom de la constant i el valor assignat:
estàtic final constant_type <constant_name> = valor;
exemple:
doble final estàtic PREU = 15,99 ;
Per convenció, els noms de les constants són majúscules.
Estructures de dades
Estructures de control
S'admeten les següents estructures de control :
- Estructures selectives:
if ... else
iswitch
, com a C - Estructures iteratives:
- El maneig d’excepcions a Java es fa amb la
try ... catch ... finally
sintaxi similar a la de C ++.
Més enllà de les construccions per a la programació orientada a objectes, la resta de la sintaxi Java es diu com C , que es deriva o similar a la del llenguatge C.
Orientació d'objectes
Java és un llenguatge orientat a objectes . La idea darrere de l'OOP és representar les entitats reals o abstractes que determinen la dinàmica del problema resolt pel programari en forma d'entitats unitàries, amb un ús i un funcionament específics definits a priori. Aquestes entitats s’anomenen objectes . Les especificacions que defineixen les característiques d’aquestes unitats i sota les quals es creen o s’instancia en argot s’anomenen classes .
Java, però, no és un llenguatge d’objectes pur, sinó únicament orientat a objectes : per exemple, els valors dels tipus primitius no són objectes.
En el llenguatge Java, els objectes tenen camps (també anomenats atributs o variables d’instància o de mostra ) i mètodes . Normalment s’utilitzen mètodes per implementar fàcilment moltes altres construccions que alguns altres llenguatges proporcionen de forma nativa, com ara el tractament d’esdeveniments (implementats mitjançant oients ) o propietats, implementades mitjançant mètodes d’accés i, més generalment, amb objectes JavaBeans .
A Java no hi ha funcions: els blocs de codi que "no pertanyen a cap objecte" s'implementen com a mètodes estàtics d'una determinada classe i, per tant, sempre són mètodes. A Java es fa un èmfasi important en la distinció entre interfície i implementació d’una classe o objecte: la primera és el conjunt d’especificacions públiques que poden utilitzar els usuaris d’un determinat objecte, mentre que la segona és el conjunt d’estructures internes i instruccions executables que , en general, compleixen aquestes especificacions. El terme interfície també s'utilitza en un altre significat, que s'explica a continuació.
Herència
S'admet l'herència entre tipus. Això us permet establir la jerarquia de les classes que formen un programa. El llenguatge requereix que la coneguda classe java.lang.Object
estigui al capdavant de la jerarquia. [15]
A Java, no hi ha herència múltiple entre classes. [16] D'una banda, aquesta restricció permet una jerarquia de classes lineal i evita els desavantatges introduïts per l'herència múltiple. D’altra banda, es pot superar fàcilment fent ús d’ interfícies , és a dir, tipus similars a les classes, però específicament dissenyades per ampliar-se i subjectes a certes restriccions imposades per la llengua. [17] [18] En conseqüència, proporcionen alguns avantatges de l'herència múltiple, com la possibilitat que un mateix objecte pertanyi a diferents tipus, sense desavantatges com l'ambigüitat introduïda pel fet que una classe pot heretar implementacions diferents d'un mateix mètode. .
Des de l'arribada de Java, l'herència única s'ha consolidat gradualment com el model estàndard d'herència en tecnologies orientades a objectes i també ha estat adoptada pels llenguatges del marc Microsoft .NET . Des de Java 8 és possible explotar els mètodes predeterminats de les interfícies per crear una herència múltiple limitada. Això no afecta l'herència principal que continua sent única, però permet heretar mètodes de diverses interfícies alhora. [19]
Entorns de desenvolupament
Per desenvolupar programes en Java, qualsevol editor de text és teòricament suficient; a la pràctica, si voleu escriure alguna cosa més que el clàssic hola world , necessiteu un entorn de desenvolupament integrat (IDE): hi ha diversos IDE ( Integrated Development Environment ), alguns gratuïts i altres de pagament.
Kit de desenvolupament de Java
Sun (ara Oracle ) proporciona un kit de desenvolupament de programari específic, anomenat Java Development Kit (o JDK ), que inclou diverses eines d'ús comú, incloses javac
, javadoc
, jar
i altres, dissenyades per processar ( compilar ) la font i / o fitxers ja compilats, inclòs el Java Runtime Environment (JRE). Funcionen amb el codi ja escrit i desat al sistema: cap d’ells proporciona un entorn d’escriptura visual amb aquelles funcions útils per a la creació de programes complexos com el ressaltat de sintaxi a través de diferents colors, l’ autocompleció o la possibilitat de navegar entre fonts. fent clic al ratolí .
Entorns de desenvolupament integrats
Oracle mateix ha promogut el desenvolupament d'un entorn de desenvolupament de codi obert i lliure anomenat NetBeans , que es pot descarregar per si sol [20] , o (opcionalment) amb el JDK [21] .
- Un entorn de desenvolupament integrat de codi obert àmpliament utilitzat és Eclipse , donat a la comunitat de desenvolupadors per IBM i el desenvolupament del qual és seguit per una enorme comunitat d’usuaris.
- Un dels entorns de desenvolupament integrat comercial més populars és JBuilder produït per Borland .
- Un entorn de desenvolupament integrat que ha guanyat diversos premis [22] és IntelliJ IDEA .
- Un entorn de desenvolupament lliure i sobretot lleuger per a Java és BlueJ, amb un clar enfocament didàctic.
- Un altre entorn de desenvolupament integrat per a Java és JCreator , els avantatges del qual són sobretot la simplicitat de la interfície i la lleugeresa.
- Un entorn de desenvolupament per a Java (i altres llenguatges de programació) és Visual Studio Code : programari lliure i gratuït , fins i tot si la versió oficial es troba sota una llicència pròpia .
Entorn d'execució
Plataforma Java
Els programes escrits en llenguatge Java, després d’una fase inicial de compilació amb l’obtenció de l’anomenat bytecode , estan destinats a l’ execució a la plataforma Java mitjançant una fase d’ interpretació (per aquest motiu, el llenguatge Java també s’anomena semiinterpretat) per una màquina virtual de Java. i en execució tenen accés a les API de biblioteca estàndard . Aquests dos passos proporcionen un nivell d'abstracció que permet que les aplicacions siguin completament independents del sistema de maquinari en què s'executaran. Una implementació de la plataforma Java és el Java Runtime Environment (JRE), necessari per a l'execució del programa compilat, mentre que per al desenvolupament de programes en Java a partir del codi font, el Java Development Kit (JDK) que també inclou el JRE .
Portabilitat

Els programes en execució escrits en Java han de tenir un comportament similar en diferents contextos d’execució. Per aconseguir-ho, treballem en diferents nivells i el primer d’ells és, per descomptat, el llenguatge especialment dissenyat amb aquest propòsit. Per exemple, proporciona una sintaxi unificada per definir seccions crítiques , una tasca que en altres idiomes sol tenir lloc mitjançant biblioteques de tercers o primitives del sistema. [23] A més, pràcticament no deixa espai per a un comportament indefinit ni un comportament dependent de la implementació de l'entorn d'execució.
L'especificació del llenguatge requereix un entorn d'execució que supervisa l'execució del programa i prohibeix certes operacions que d'una altra manera serien insegures. Es refereixen explícitament a la màquina virtual de Java , que l’indica com el destinatari típic del bytecode produït per la compilació inicial d’un programa Java i, de fet, el javac
inclòs al JDK compila amb precisió en bytecode. No obstant això, és possible compilar cap a diferents arquitectures, de fet és possible produir un codi objecte específic d'un sistema operatiu determinat mitjançant un compilador especial, per exemple la Col·lecció de compiladors GNU .
En principi, hauríeu de poder escriure el programa només una vegada i fer-lo córrer a tot arreu, d’aquí el famós eslògan de Sun: “escriu una vegada, corre per tot arreu”. La portabilitat és un objectiu tècnicament difícil d’assolir i l’èxit de Java en aquesta àrea és motiu de certa controvèrsia. Tot i que és possible escriure programes en Java que es comportin de manera coherent en moltes plataformes de maquinari diferents, depenen de que les màquines virtuals siguin programes per si mateixos i tinguin inevitablement els seus propis errors diferents entre ells: per això es crea una paròdia del lema de Sun "Write once, run anywhere" ("Escriu una vegada, corre en qualsevol lloc"), que es va convertir en "Escriu una vegada, depura en qualsevol lloc" ("Escriu una vegada, corregeix-ho arreu"). [24]
Biblioteques
Versions de la plataforma
El llenguatge en si mateix defineix només una petita part de les biblioteques que es poden utilitzar en combinació amb el llenguatge mateix. La resta la defineix la plataforma en què s’executa el programa. Oracle proporciona tres plataformes oficials, cadascuna destinada a diferents àrees:
Biblioteques de tercers
A més, el programador pot utilitzar un nombre arbitrari de biblioteques de tercers. Aquestes biblioteques, contingudes en diversos paquets , són utilitzades pel programador per utilitzar certs mètodes o atributs comuns per simplificar i estandarditzar els programes i fer-los més llegibles pels programadors. Hi ha molts paquets que els programadors poden utilitzar en el llenguatge Java . Per exemple, hi ha paquets:
- entrada i sortida ( java.io );
- per a mètodes i constants matemàtics ( java.Math );
- per crear miniaplicacions ( java.applet );
- per crear aplicacions de xarxa ( javax.net );
- per imprimir ( javax.print );
- per seguretat ( java.security i javax.security ).
Applet
La plataforma Java va ser un dels primers sistemes a proporcionar un ampli suport per executar codi des de fonts remotes. Una miniaplicació Java és un tipus d’aplicació especial que es pot iniciar al navegador de l’usuari executant el codi descarregat des d’un servidor web remot. Aquest codi s’executa en una àrea molt restringida ( sandbox ) per protegir l’usuari de codi maliciós o codi que tingui un comportament no desitjat; qui publica el codi pot aplicar un certificat que utilitza per signar digitalment miniaplicacions que els declaren "segurs", donant-los permís per sortir de l'àrea restringida i accedir al sistema de fitxers i a la xarxa, presumiblement amb l'aprovació i sota el control de l'usuari. En realitat, els applets no han tingut molta sort. De fet, se suposa que el client on s'executen ha instal·lat el JRE que ha d'executar el codi de la miniaplicació. Les aplicacions que inclouen l'anomenat thin-client, és a dir, un client "light" que no necessita eines especials per executar codi remot, de vegades només es necessita el navegador, han tingut sort.
Documentació
Les especificacions lingüístiques no imposen una sintaxi determinada per a la documentació de les fonts, però, amb el pas del temps, la reconeguda per l’eina Javadoc i regulada per unes especificacions oficials ben definides (encara que externes a la llengua) s’ha convertit en el format estàndard [25] . Aquesta norma proporciona que la documentació es proporcioni dins dels comentaris inserits directament a les fonts i equipats amb un format especial, que el compilador ignora, però que reconeix eines especialitzades. Això facilita l’actualització de la documentació, ja que acompanya directament l’element sintàctic que marca; a més, en llegir les fonts d'un programa, això us permet tenir una visió general de les especificacions i la implementació de l'element del programa que s'està considerant.
Una altra eina que es pot utilitzar per a la documentació són les anotacions , introduïdes a la tercera versió de l’especificació de l’idioma [26] . Tot i que tenen una sintaxi formalment diferent dels comentaris de Javadoc, s’utilitzen amb el mateix propòsit, és a dir, per proporcionar metadades que descriuen les entitats del programa marcades. No obstant això, si bé els comentaris informen de les especificacions de manera discursiva (encara que estructurada), les anotacions per naturalesa són ideals per al processament mitjançant eines, en lloc de per a la lectura humana. Inoltre, sotto opportune condizioni [27] , le informazioni che forniscono sono compilate insieme al codice e possono essere lette perfino a tempo di esecuzione , cosa che i commenti non possono fare.
Versioni
A partire dal 2017, solo Java 8 e 10 sono supportati pubblicamente. Non verranno più rilasciate security update per Java 9 [28] .
- JDK 1.0 (none) 23 gennaio 1996
- JDK 1.1 (none) 19 febbraio 1997
- JDK 1.1.4 (Sparkler) 12 settembre 1997
- JDK 1.1.5 (Pumpkin) 3 dicembre 1997
- JDK 1.1.6 (Abigail) 24 aprile 1998
- JDK 1.1.7 (Brutus) 28 settembre 1998
- JDK 1.1.8 (Chelsea) 8 aprile 1999
- J2SE 1.2 (Playground) 4 dicembre 1999
- J2SE 1.2.1 (none) 30 marzo 1999
- J2SE 1.2.2 (Cricket) 8 luglio 1999
- J2SE 1.3 (Kestrel) 8 maggio 2000
- J2SE 1.3.1 (Ladybird) 17 maggio 2001
- J2SE 1.4.0 (Merlin) 13 febbraio 2002
- J2SE 1.4.1 (Hopper) 16 settembre 2002
- J2SE 1.4.2 (Mantis) 26 giugno 2003
- J2SE 5.0 (1.5.0) (Tiger) 29 settembre 2004
- Java SE 6 (1.6.0) (Mustang) 11 dicembre 2006
- Java SE 7 (1.7.0) (Dolphin) 28 luglio 2011
- Java SE 8 (1.8.0) 18 marzo 2014
- Java SE 9, 21 settembre 2017
- Java SE 10, 20 marzo 2018
- Java SE 11, 25 settembre 2018
- Java SE 12, 19 marzo 2019
- Java SE 13, 17 settembre 2019
- Java SE 14, marzo 2020
- Java SE 15, settembre 2020
- Java SE 16, marzo 2021
Java fu inizialmente distribuito come Java Development Kit 1.0 (JDK 1.0). Questo comprende il runtime Java (la virtual machine e le librerie di classi), e gli strumenti di sviluppo (il compilatore Java e altri strumenti). Successivamente, Sun fornì un pacchetto che comprendeva solo il runtime, chiamato Java Runtime Environment (JRE). Normalmente le persone si riferiscono ad una particolare versione di Java attraverso la versione del JDK (es. JDK 1.4) Le versioni JDK 1.2 e successive sono spesso chiamate Java 2. Per esempio, il nome ufficiale del JDK 1.4 è Java (TM) 2 Platform, Standard Edition 1.4.
Il linguaggio è rimasto stabile dal JDK 1.0 al JDK 1.4.x, con la J2SE 5.0 sono state introdotte nuove funzionalità nel linguaggio. La libreria di classi che viene fornita con JDK è stata progressivamente ampliata e modificata in alcune parti.
Nel settembre 2017 Mark Reinhold, responsabile capo per la piattaforma Java ha proposto di rilasciare una nuova versione di Java ogni 6 mesi, invece di ogni 2 anni come avveniva precedentemente.
- Versioni delle specifiche di linguaggio
I cambiamenti nel linguaggio sono formalizzati nelle specifiche di linguaggio. Ogni nuova edizione delle specifiche integra i cambiamenti richiesti fino a quel momento tramite le Java Specification Request e conseguentemente implementati nel compilatore javac
.
- The Java Programming Language, First Edition
- The Java Programming Language, Second Edition
- The Java Programming Language, Third Edition
- The Java Programming Language, Java SE 7 Edition
- The Java Programming Language, Java SE 8 Edition
- The Java Programming Language, Java SE 9 Edition
Curiosità
- Sembra che il nome Oak derivi dal fatto che Gosling ei suoi colleghi, nel periodo in cui svilupparono il linguaggio, avessero avuto come unica compagnia quella di una quercia che si trovava proprio fuori dalla finestra dell'ufficio in cui lavoravano.
- Una leggenda metropolitana -mai confermata- vuole che il nome del linguaggio sia stato inteso, in un secondo momento e dagli stessi creatori, come acronimo per " Just Another Vacuum Acronym " (" Soltanto un altro vuoto Acronimo "), con riferimento ironico all'altissimo numero di abbreviazioni utilizzate in ambiente informatico.
- Dato che gli ideatori del linguaggio si trovavano spesso ad un caffè presso il quale discutevano del progetto, sembrerebbe che il linguaggio prese il nome e il simbolo da tale abitudine ( Java è una qualità di caffè dell' omonima isola dell' Indonesia ), tanto che il magic number che identifica un file di bytecode ottenuto dalla compilazione di un file Java è
0xCAFEBABE
, che in inglese significa ragazza (babe) del caffè (cafe) [29] .
Note
- ^ The Java Language Specification , su java.sun.com . URL consultato il 5 maggio 2011 .
- ^ JavaWorld.com, "So why did they decide to call it Java?" , su javaworld.com . URL consultato il 5 maggio 2011 (archiviato dall' url originale il 3 agosto 2009) .
- ^ Come indicato in Design Goals of the Java(TM) Programming Language: Simple, Object Oriented, and Familiar , su java.sun.com . URL consultato il 6 maggio 2011 .
- ^ The Java Language Environment
- ^ The Java Language Environment
- ^ The Java(tm) Language: An Overview
- ^ "Q: What components of the JDK software are you open sourcing today? A: We're open sourcing the Java programming language compiler ("javac"), and the Java HotSpot virtual machine." Free and Open Source Java FAQ Archiviato il 3 marzo 2012 in WebCite .; the source is being released via the OpenJDK Archiviato l'11 giugno 2007 in Internet Archive . project.
- ^ Open JDK is here! ( TXT ), su mail.openjdk.java.net , Sun Microsystems, 8 maggio 2007. URL consultato il 9 maggio 2007 .
- ^ a b The Java Language Specification , su java.sun.com . URL consultato il 5 maggio 2011 .
- ^ Programming Language Popularity , su langpop.com , 2014. URL consultato il 7 febbraio 2014 (archiviato dall' url originale il 27 maggio 2012) .
- ^ TIOBE Programming Community Index , su tiobe.com , 2009. URL consultato il 6 maggio 2009 .
- ^ The Java Tutorials
- ^ Design Goals of the Java(TM) Programming Language , su java.sun.com . URL consultato il 6 maggio 2011 .
- ^ in particolare è definito per lavorare su un qualunque oggetto che sia istanza di java.lang.Iterable
- ^ James Gosling, Bill Joy, Guy Steele, Gilad Bracha, Chapter 4. Types, Values, and Variables , in The Java Language Specification, Third Edition . URL consultato il 6 maggio 2011 .
- ^ Le specifiche di linguaggio non ammettono l'indicazione di più di una superclasse nella definizione di una data classe: vedi Java SE Specifications , Java SE Specifications .
- ^ The Java Language Environment, "Java language Interfaces" , su java.sun.com . URL consultato il 6 maggio 2011 .
- ^ James Gosling, Bill Joy, Guy Steele, Gilad Bracha, Chapter 9. Interfaces , in The Java Language Specification, Third Edition . URL consultato il 7 maggio 2011 .
- ^ Java 8 explained: Default methods , su zeroturnaround.com . URL consultato il 3 aprile 2016 .
- ^ Welcome to NetBeans
- ^ Java SE Downloads
- ^ Awards
- ^ The Java Language Environment , su java.sun.com . URL consultato il 6 maggio 2011 .
- ^ William Wong, Write Once, Debug Everywhere , su electronicdesign.com . URL consultato il 3 agosto 2008 (archiviato dall' url originale il 21 marzo 2009) . So far, the "write-once, run-everywhere" promise of Java hasn't come true. The bulk of a Java application will migrate between most Java implementations, but taking advantage of a VM-specific feature causes porting problems.
- ^ How to Write Doc Comments for the Javadoc Tool , su oracle.com . URL consultato il 16 giugno 2011 .
- ^ The Java Language Specification, Annotations , su java.sun.com . URL consultato il 16 giugno 2011 .
- ^ Il tipo che definisce l'annotazione in uso deve essere stato marcato con la meta-annotazione
@Retention
. Vedi The Java Language Specification, Interfaces , su java.sun.com . URL consultato il 16 giugno 2011 . - ^ Oracle Java SE Support Roadmap , su www.oracle.com . URL consultato il 4 ottobre 2018 .
- ^ James Gosling private communication to Bill Bumgarner , su radio.weblogs.com . URL consultato il 1º agosto 2011 (archiviato dall' url originale il 23 maggio 2009) .
Bibliografia
- Fonti usate per la stesura della voce
- Claudio De Sio Cesari, Object Oriented && Java 5 . URL consultato il 29 giugno 2019 .
- Sezione " Storia ": Java 2 Micro Edition basics ( PDF ), su oracle.com . URL consultato il 5 maggio 2011 .
- The Java Language Specification, Java SE 7 Edition (vedi sotto)
- Fabrizia Scorzoni, Informatica Programmazione in Java , Torino, Loescher, 2009, ISBN 978-88-8433-030-7 .
- Specifiche di linguaggio
Le diverse edizioni delle specifiche sono accessibili sul sito della Oracle . L'ultima edizione è la seguente:
- ( EN ) James Gosling, Bill Joy, Guy Steele, Gilad Bracha, Alex Buckley, The Java Language Specification, Java SE 8 Edition ( PDF ). URL consultato il 18 marzo 2014 .
- ( EN ) James Gosling, Bill Joy, Guy Steele, Gilad Bracha, Alex Buckley, The Java Language Specification, Java SE 7 Edition ( PDF ). URL consultato il 28 agosto 2012 .
- Testi di approfondimento
- ( EN ) Ken Arnold , James Gosling , David Holmes, The Java Programming Language, Fourth Edition , Addison-Wesley Professional, 2005, ISBN 0-321-34980-6 .
Voci correlate
- Annotazione (Java)
- Applet
- Servlet
- JavaServer Pages (JSP)
- Java Card
- Java EE
- Generics Java
- Linguaggio di programmazione
- Macchina virtuale Java
- Piattaforma Java
- Java Development Kit (JDK)
- JAR (formato di file)
- JavaScript
- Java Native Interface
- Polimorfismo (informatica)
- Incapsulamento (informatica)
Altri progetti
-
Wikibooks contiene testi o manuali su Java
-
Wikiversità contiene risorse su Java
-
Wikimedia Commons contiene immagini o altri file su Java
Collegamenti esterni
- ( EN ) Sito ufficiale , su oracle.com .
- Java , su Treccani.it – Enciclopedie on line , Istituto dell'Enciclopedia Italiana .
- ( EN ) Java , su Enciclopedia Britannica , Encyclopædia Britannica, Inc.
- Java sul sito di Oracle , su oracle.com .
- ( EN ) Il portale di Java OpenSource , su home.java.net . URL consultato il 19 marzo 2014 (archiviato dall' url originale il 3 novembre 2015) .
- ( EN ) Java e le sue tecnologie (Opensource) , su java-source.net .
- ( EN ) Java open source: not an hoax , su today.java.net . URL consultato il 13 novembre 2006 (archiviato dall' url originale il 15 novembre 2006) .
- ( EN ) OpenJDK , su openjdk.java.net .
Controllo di autorità | LCCN ( EN ) sh95008574 · GND ( DE ) 4401313-9 · BNF ( FR ) cb12533207m (data) · BNE ( ES ) XX540033 (data) |
---|