Java (linguaggio di programmazione): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Corretto errore di battitura
m Collegamento al caffè Java piuttosto che caffè e Indonesia
Etichette: Modifica visuale Modifica da mobile Modifica da web per mobile
 
(30 versioni intermedie di 17 utenti non mostrate)
Riga 5:
|autore = [[James Gosling]] <small>(designer)</small>, [[Sun Microsystems]] <small>([[Programmatore informatico|programmatore]])</small>
|data = {{Data e tempo|23|05|1995}}
|versione = 21<ref>{{Cita web|url=https://openjdk.org/projects/jdk/21/||titolo=JDK 21|lingua=en}}</ref> ({{Data e tempo|19|09|2023}})
|utilizzo = [[General purpose]]
|paradigmi = Multi-paradigma: generico, [[Programmazione orientata agli oggetti|orientato agli oggetti]] (basato sulle classi), [[Programmazione funzionale|funzionale]], [[Programmazione imperativa|imperativo]], [[Riflessione (informatica)|riflettivo]], calcolo simultaneo
Line 12 ⟶ 11:
|estensione = .java, .class, [[JAR (formato di file)|.jar]], .jmod
|influenzato_da = [[Simula]], [[Ada (linguaggio di programmazione)|Ada 83]], [[C++]], [[Eiffel (linguaggio)|Eiffel]], [[Generic Java]], [[Mesa (linguaggio)|Mesa]], [[Modula-3]], [[Oberon (linguaggio)|Oberon]], [[Objective-C]], [[UCSD Pascal]], [[Smalltalk]]
|ha_influenzato = [[Ada (linguaggio di programmazione)|Ada 2005]], [[BeanShell]], [[C sharp|C#]], [[Clojure]], [[D (linguaggio)|D]], [[ECMAScript]], [[Groovy]], [[J sharp|J#]], [[JavaScript]], [[Kotlin (linguaggio di programmazione)|Kotlin]], [[PHP]], [[Python]], [[Scala (linguaggio di programmazione)|Scala]], [[Seed7]], [[Vala (linguaggio di programmazione)|Vala]]
|implementazione_riferimento = interprete con JITter
|sistema_operativo = [[Windows]], [[Linux]], [[macOS]]
Line 23 ⟶ 22:
== Storia ==
[[File:James Gosling 2008.jpg|miniatura|sinistra|[[James Gosling]], autore di Java]]
Java è stato creato a partire da ricerche effettuate alla [[Stanford University]] agli inizi degli [[anni novanta]]. Nel [[1992]] nasce il linguaggio Oak (in italiano 'quercia'), prodotto da [[Sun Microsystems]] e realizzato da un gruppo di esperti sviluppatori capitanati da [[James Gosling]].<ref name="JLS, prefazione alla prima edizione">{{cita web|url=http://java.sun.com/docs/books/jls/third_edition/html/j.preface.html|titolo=The Java Language Specification|accesso=5 maggio 2011}}</ref> Questo nome fu successivamente cambiato in Java (una varietà di [[Java (caffè)|caffè]] [[indonesiana]]; il logo adottato è una tazzina per tale bevanda) per problemi di [[copyright]]: il linguaggio di programmazione Oak esisteva già.<ref>{{cita web|url=http://www.javaworld.com/javaworld/jw-10-1996/jw-10-javaname.html|titolo=JavaWorld.com, "So why did they decide to call it Java?"|accesso=5 maggio 2011|urlarchivio=https://web.archive.org/web/20090803031758/http://www.javaworld.com/javaworld/jw-10-1996/jw-10-javaname.html|urlmorto=sì}}</ref>
 
Per facilitare il passaggio a Java ai programmatori ''old-fashioned'', legati in particolare a linguaggi come il [[C++]], la [[sintassi]] di base ([[struttura di controllo|strutture di controllo]], [[operatore (informatica)|operatori]] ecc.) è stata mantenuta pressoché identica a quella del C++<ref>Come indicato in {{cita web|url=http://java.sun.com/docs/white/langenv/Intro.doc2.html#349|titolo=Design Goals of the Java(TM) Programming Language: Simple, Object Oriented, and Familiar|accesso=6 maggio 2011}}</ref><ref>{{cita testo|url=http://java.sun.com/docs/white/langenv/Intro.doc2.html#349|titolo=The Java Language Environment<!-- Titolo generato automaticamente -->}}</ref>; tuttavia a livello di linguaggio non sono state introdotte caratteristiche ritenute fonte di complessità non necessaria e che favoriscono l'introduzione di determinati bug durante la programmazione, come l'aritmetica dei puntatori e l'ereditarietà multipla delle classi.<ref>{{cita testo|url=http://java.sun.com/docs/white/langenv/Simple.doc2.html|titolo=The Java Language Environment<!-- Titolo generato automaticamente -->}}</ref> Per le caratteristiche orientate agli oggetti del linguaggio ci si è ispirati al [[C++]] e soprattutto all'[[Objective C]].<ref>{{cita testo|url=http://java.sun.com/docs/overviews/java/java-overview-1.html#HEADING1-13|titolo=The Java(tm) Language: An Overview<!-- Titolo generato automaticamente -->}}</ref>
Line 29 ⟶ 28:
In un primo momento Sun decise di destinare questo nuovo prodotto alla creazione di applicazioni complesse per piccoli dispositivi elettronici; fu solo nel [[1993]] con l'esplosione di [[internet]] che Java iniziò a farsi notare come strumento per iniziare a programmare per internet. Contemporaneamente Netscape Corporation annunciò la scelta di dotare il suo allora omonimo e celeberrimo [[browser]] della [[Java Virtual Machine]] (JVM). Questo segna una rivoluzione nel mondo di Internet: grazie agli [[applet]] le pagine web diventarono interattive a livello client, ovvero le applicazioni vengono eseguite direttamente sulla macchina dell'utente di internet e non su un server remoto. Per esempio gli utenti poterono utilizzare giochi direttamente sulle pagine web e usufruire di chat dinamiche e interattive.
 
Java fu annunciato ufficialmente il 23 maggio [[1995]] a SunWorld. Il 13 novembre [[2006]] la Sun Microsystems ha distribuito la sua implementazione del compilatore Java e della macchina virtuale sotto licenza [[GNU General Public License|GPL]]. Non tutte le piattaforme Java sono libere. L'ambiente Java libero si chiama IcedTea.<ref>"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."{{cita testo|url=http://www.sun.com/software/opensource/java/faq.jsp#b2|titolo=Free and Open Source Java FAQ|urlarchivio=https://web.archive.org/web/20120303230525/http://www.oracle.com/us/sun/index.htm#b2 }}; the source is being released via the {{cita testo|url=https://openjdk.dev.java.net/|titolo=OpenJDK|urlarchivio=https://web.archive.org/web/20070611104244/https://openjdk.dev.java.net/ }} project.</ref> L'8 maggio [[2007]] Sun ha pubblicato anche le librerie, tranne alcuni componenti non di sua proprietà, sotto licenza GPL, rendendo Java un linguaggio di programmazione la cui implementazione di riferimento è libera.<ref>{{Cita web| url=http://mail.openjdk.java.net/pipermail/announce/2007-May.txt| titolo=Open JDK is here!| editore=Sun Microsystems| data=8 maggio 2007| accesso=9 maggio 2007}}</ref> Il linguaggio è definito da un documento chiamato ''The Java Language Specification,'' spesso abbreviato ''JLS''. La prima edizione del documento è stata pubblicata nel 1996.<ref name="JLS su java.sun.com">{{cita web|url=http://java.sun.com/docs/books/jls/|titolo=The Java Language Specification|accesso=5 maggio 2011}}</ref> Da allora il linguaggio ha subito numerose modifiche e integrazioni, aggiunte di volta in volta nelle edizioni successive. AIl fine17 2022settembre la2024 versioneè piùstata recenterilasciata dellel'ultima specifiche èversione, la ''Java SE 19 Edition23''.<ref name="JLS su java.sun.com"/>
===Nome===
Sembra che il nome 'Oak' derivasse dal fatto che Gosling e i 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.
Line 203 ⟶ 202:
 
==== Ereditarietà ====
[[File:Java-graphics2d-shape-hierarchy.png|miniatura|Esempio di polimorfismo: dalla base comune ''Shape'' discendono molti tipi differenti, dotati di comportamenti diversi]]
{{vedi anche|Ereditarietà (informatica)}}
[[File:Java-graphics2d-shape-hierarchy.png|miniatura|Esempio di polimorfismo: dalla base comune ''Shape'' discendono molti tipi differenti, dotati di comportamenti diversi]]
È supportata l{{'}}''ereditarietà'' tra tipi. Questo permette di stabilire la ''gerarchia'' delle classi che compongono un programma. Il linguaggio impone che a capo della gerarchia ci sia la nota classe <code>java.lang.Object</code>.<ref>{{cita libro|autore=James Gosling, Bill Joy, Guy Steele, Gilad Bracha|titolo=The Java Language Specification, Third Edition|capitolo=Chapter 4. Types, Values, and Variables|url=http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.3.2|accesso=6 maggio 2011}}</ref>
 
Line 252 ⟶ 251:
 
==== Librerie di terze parti ====
In aggiunta il [[programmatore]] può utilizzare un numero arbitrario di librerie di terze parti. Queste librerie, contenute in vari [[package (Java)|package]], vengono utilizzate dal [[programmatore]] per utilizzare determinati [[Funzione (informatica)|metodi]] o [[Variabile (informatica)|attributi]] comuni per semplificare e uniformare i [[programma (informatica)|programmi]] e renderli maggiormente leggibili ai programmatori. Esistono numerosissimi package utilizzabili dai programmatori nel [[linguaggio Java]]. Ad esempio esistono package:
* di [[Input/output|input e output]] (''java.io'');
* per i [[Funzione (informatica)|metodi]] e le [[costanti matematiche]] (''java.Math'');
Line 267 ⟶ 266:
 
== Versioni ==
Nel settembre 2017, Mark Reinhold, chief Architect della piattaforma Java, ha proposto di modificare il piano di pubblicazione, da una versione ogni due anni agli attuali sei mesi. Non tutte le versioni però hanno un supporto prolungato (LTS - Long Term Support), quest'ultime vengono pubblicate ogni 3 anni, attualmente sono LTS lale versioneversioni 21, 17, 11 e la 8.
 
{| class="wikitable"
Line 320 ⟶ 319:
| {{Version|o|Java SE 20}} || marzo 2023|| settembre 2023 per OpenJDK || Non disponibile
|-
| {{Version|cco|Java SE 21 (LTS)}} || settembre 2023|| settembre 2028 <br />marzo 2032 per Liberica JDK BellSoft<ref>{{Cita web|titolo=Liberica JDK 21 roadmap|url=https://bell-sw.com/support/#roadmap}}</ref>|| settembre 2031 per Oracle
|-
| {{Version|o|Java SE 22}} || marzo 2024|| settembre 2024 || {{dunno}}
|-
| {{Version|c|Java SE 23}} || settembre 2024 || marzo 2025 || {{dunno}}
|-
| {{Version|p|Java SE 2224}} || marzo 20242025 || {{dunno}}settembre 2025 || {{dunno}}
|-
| {{Version|p|Java SE 25 (LTS)}} || settembre 2025 || settembre 2028 per Oracle || Settembre 2033 per Oracle
|-
| colspan="4" | {{Version|l|show=111101}}