El Java és unllenguatge compilat amb unamàquina virtual d'intermediari[4] i, per tant, pot semblar lent en comparació amb altres llenguatges, però ofereix un índex de re-utilització de codi molt elevat, sent possible trobar moltes llibreries lliures deJava. És un llenguatge flexible i potent tot i la facilitat amb la qual es programa i dels resultats que ofereix. Un dels trets que el caracteritza i que el fa una eina molt valorada a l'hora de desenvoluparaplicacions distribuïdes, és el fet que és un llenguatgemulti-plataforma.
Generalment els programes de Java es compilen en unbytecode[5] (fitxer .class) que pot córrer en unaMàquina Virtual Java.Sun Microsystems disposa de tres implementacions diferents deJava: J2SE per a aplicacions d'escriptori;J2EE per aaplicacions distribuïdes i J2ME per aplataformes amb recursos més reduïts com ara mòbils oPDAs. Per a cada una de les tres implementacions és possible descarregar elJRE(entorn d'execució Java) per a executaraplicacions o elSDK(Eines per al desenvolupament d'aplicacions) per a programaraplicacions enJava, aquest últim també inclou elJRE.
Unprograma desenvolupat ambJava no necessita compilar-se de nou per a poder executar-se en qualsevol de les plataformes que disposi d'una versió instal·lada deJRE prou actualitzada per alprograma.
James Gosling,Mike Sheridan iPatrick Naughton van iniciar el projecte de llenguatge Java el juny de 1991.[6] Java es va dissenyar originalment per a la televisió interactiva, però era massa avançat per a la indústria de la televisió digital per cable en aquell moment.[7] El llenguatge inicialment es va anomenarOak inspirant en l'alzina que es trobava al davant de l'oficina de Gosling. Més tard el projecte es va anomenarGreen i finalment va ser rebatejat com aJava, inspirat en elCafè Java, un tipus de cafè d'Indonèsia.[8] Gosling va dissenyar Java amb una sintaxi d'estilC/C++ que els programadors de sistemes i aplicacions trobarien familiars.[9]
A partir del setembre de 2023, Java 8, 17 i 21 són compatibles com a versions desuport a llarg termini (LTS).[10]
Oracle va llançar l'última actualització pública de cost zero per a la versióJava 8 LTS dellegat el gener de 2019 per a ús comercial, tot i que, d'altra manera, encara suportarà Java 8 amb actualitzacions públiques per a ús personal indefinidament. Altres venedors han començat a oferir versions (builds) de cost zero d'OpenJDK 21, 8 i 17 que encara estan rebent actualitzacions de seguretat i altres.
Principals versions de llançament de Java, juntament amb les seves dates de llançament:
Senzill: Java s'ha creat perquè sigui un llenguatge senzill amb una sintaxi elegant. Únicament consta de tres tipus de dades primàries, eliminant els punters i l'herència múltiple
Distribuït: Java permet la construcció d'aplicacions distribuïdes per mitjà d'una col·lecció específica de classes.
Interpretat: Es necessita unintèrpret per executar els programes de Java, això alenteix als programes però els dona flexibilitat.
Robust: Java és un llenguatge robust i fiable, s'ha escrit pensant a poder verificar errors i està molt tipificat.
Segur: Java té pocs problemes de seguretat, característica molt important en les aplicacions distribuïdes d'Internet.
Arquitectura neutral: Java és independent de la plataforma final on s'executarà el programa.
Portable: Java és un llenguatge d'alt nivell i de plataforma independent, això li dona portabilitat.
Alt rendiment: Els compiladors Java han anat millorant les seves prestacions. Els nous compiladors coneguts com aJIT permeten un rendiment molt semblant als llenguatges convencionals compilats.
Concurrent: Java permet l'execució de múltiples fils d'execució, o diverses tasques de forma simultània.
Dinàmic: En temps d'execució, l'entorn Java es pot ampliar mitjançant enllaços a classes que poden estar localitzades en servidors remots o enxarxa.
Els tipus de dades fan referència al tipus d'informació que es treballa, on la unitat mínima d'emmagatzematge és la dada, també es pot considerar com el rang de valors que pot prendre una variable durant l'execució del programa.
Els tipus primitius en Java tenen la mateixa mida en cada implementació menys els tipus booleans que pot variar.
Utilitzen 16 bits i codifiquen caràcters segons el format UNICODE (no com ASCII que fa servir 8 bits). El Tipus de dada char és un dígit individual, sense signe el qual es pot representar com numèrics (0 al 9), lletres (a-z) i símbol ($, _).NOTA: En llenguatge java la codificació Unicode permet treballar amb tots els caràcters de diferents idiomes.
La sintaxi del Java deriva en gran part del C. Però a diferència d'aquest, que combina la sintaxi per a programació genèrica, estructurada i orientada a objectes, el Java va ser dissenyat gairebé exclusivament com a llenguatge orientat a objectes.[14] Tot el codi es troba dins d'una classe, i tot és un objecte (excepte nombres ordinals i reals, booleans i caràcters per motius de rendiment).
Utilitza mètodes per comentar similars al C. Hi ha diferents tipus de comentari: una sola línia amb duesbarres obliqües, múltiples línies començades per /* i acabades amb */, i el tipus de comentari deJavadoc que comença amb una barra obliqua i dos asteriscs i acaba amb */. L'estil Javadoc permet fer córrer l'executable de Javadoc per compilar la documentació del programa.
Exemple:
// Exemple de comentari d'una línia emprant dues barres obliqües/* Exemple de comentari de múltiples línies emprant la barra obliqua i un asterisc. Permet emmagatzemar molta informació però és important tancar el comentari. *//** * Aquest és un exemple de comentari Javadoc; El Javadoc pot * compilar la documentació a partir d'aquest text. */
Tot a Java està dins d'una classe, fins i tot, programes autònoms.
El codi font es guarda en arxius amb el mateix nom que la classe que contenen i amb extensió “.java”. Una classe (class) declarada pública (public) ha de seguir aquest conveni. En l'exemple anterior, la classe ésHola, i per això el codi font s'ha de guardar en el fitxer “Hola.java”.
El compilador genera un arxiu de classe (amb extensió “.class”) per cada una de les classes definides en l'arxiu font. Una classe anònima es tracta com si el seu nom fos la concatenació del nom de la classe que la tanca, el símbol “$”, i un nombre enter.
Els programes que s'executen de forma independent i autònoma, han de contenir el mètode”main()”.
La paraula reservada”void” indica que el mètode main no retorna res.
El mètode main ha d'admetre unarray d'objectes del tipus String. Per convenció és anomenat”args”, encara que pot utilitzar-se qualsevol altre identificador.
La paraula reservada”static” indica que el mètode és unmètode de classe, associat a la classe en lloc d'una instància d'aquesta. El mètode main ha de ser estàtic o ’’de classe’’.
La paraula reservadapublic significa que un mètode pot ser cridat des d'altres classes, o que la classe pot ser utilitzada per classes fora de la jerarquia de la mateixa classe. Altres tipus d'accés són”private” o”protected”.
La utilitat d'impressió (en pantalla, per exemple) forma part de la biblioteca estàndard de Java: la classe ‘’’System’’’ defineix un camp públic estàtic anomenat ‘’’out’’’. L'objecteout és una instància de ‘’’PrintStream’’’, que ofereix el mètode ‘’’println (String)’’’ per a bolcar dades a la pantalla (la sortida estàndard).
Les aplicacions autònomes s'executen donant a l'entorn d'execució de Java el nom de la classe el qual el seu mètode main deu invocar-se. Per exemple, una línia de comandos (enUnix oWindows) de la formajava –cp. Hola executarà el programa de l'exemple (prèviament compilat i generat “Hola.class”). El nom de la classe el qual el seu mètode main es pot especificar també al fitxer “MANIFEST” de l'arxiu d'empaquetament de Java (.jar).
De cara al desenvolupador elJava ens aporta propietats molt interessants, la més destacable de les quals és que ésmultiplataforma, o sigui que el podem fer servir des deWindows,Linux, o des del nostre mòbil per exemple.
↑Object-oriented programming«The History of Java Technology».Sun Developer Network, c. 1995. Arxivat de l'original el 10 febrer 2010. [Consulta: 30 abril 2010].