Fondamenti Java: 1.1. Introduzione a Java

Storia di Java: origini ed evoluzione del linguaggio

Il linguaggio di programmazione di alto livello orientato agli oggetti Java è stato sviluppato e rilasciato da Sun Microsystems (ora parte di Oracle Corporation) nel 1995. Il progetto Green è stato avviato nei primi anni ’90 da James Gosling insieme a un piccolo gruppo di ingegneri. L’obiettivo principale era sviluppare un linguaggio per dispositivi elettronici come decoder per la televisione interattiva. Ma il loro lavoro non ha prodotto alcun frutto commerciale in un primo momento.

In origine si chiamava Oak poiché c’erano alcuni problemi di marchio nel nominare il linguaggio Java. Il nome Java stesso è stato scelto alludendo a un tipo di caffè indonesiano, Java, riflettendo l’iniziativa e l’inventiva del team di sviluppo.

Quando Internet ha iniziato a essere ampiamente utilizzato, a metà degli anni ’90, Java era germogliato come linguaggio adatto al Web perché poteva eseguire applet nei browser. Questa esecuzione ha reso il nuovo linguaggio di Sun estremamente popolare per la creazione di applicazioni interattive online. Da allora, è cresciuto fino a diventare uno dei linguaggi di programmazione più popolari al mondo grazie alla sua portabilità e alla vasta comunità di sviluppatori.

Caratteristiche principali

  • Portabilità: il codice Java viene compilato in bytecode; questo è un formato intermedio che può essere eseguito su qualsiasi dispositivo su cui è stata implementata Java Virtual Machine. Ciò consente di scrivere codice una volta e di eseguirlo su più piattaforme senza modifiche.
  • Orientato agli oggetti: Java è un linguaggio orientato agli oggetti che impone modularità, riutilizzabilità, manutenibilità del codice tramite classi, oggetti, ereditarietà, polimorfismo e incapsulamento.
  • Robustezza: Java dà priorità al controllo del tipo sia in fase di compilazione che di runtime, alla gestione delle eccezioni e alla gestione automatica della memoria tramite garbage collection che riduce al minimo il rischio per lo sviluppatore di errori come buffer overflow.
  • Sicurezza: oltre al modello di sicurezza di Java, include un gestore di sicurezza configurabile che ospita con risorse di sistema e controllo degli accessi in fase di runtime, quindi è applicabile ad altri ambienti di rete ad eccezione degli ambienti di rete locali non sicuri.
  • Multithreading: Java ha un forte supporto integrato per la programmazione multithread che aiuta lo sviluppatore a scrivere programmi che possono eseguire molte attività contemporaneamente, mantenendo così le risorse di sistema.

È pensato per lavorare in ambienti di rete distribuiti, fornendo librerie per assistere con le comunicazioni di rete, la gestione delle connessioni e l’accesso remoto agli oggetti (RMI)

Edizioni Java

Java è disponibile in diverse edizioni, ciascuna adattata a specifiche esigenze di sviluppo:

Java SE (Standard Edition)

La Standard Edition di Java include le funzionalità essenziali per la creazione di semplici applicazioni desktop e server.

Le librerie principali includono raccolte, I/O, networking, multithreading, reflection e altre. Le interfacce utente grafiche sono sviluppate utilizzando AWT e Swing. JDBC fornisce l’accesso ai database relazionali.

Java Enterprise Edition (EE)

Estende le API Java SE con API che vengono utilizzate per creare applicazioni aziendali su larga scala come parte di quanto segue:

  • Tecnologie Web: Servlet, JSP e JSF.
  • Componenti aziendali: EJB, JMS.

È disponibile anche il supporto per i servizi Web SOAP e RESTful.

Sicurezza avanzata: meccanismi di autenticazione, autorizzazione e gestione delle transazioni.

Java ME

Java 2 Micro Edition (J2ME) è specificamente mirato a dispositivi con risorse minime, ad esempio telefoni cellulari, PDA o sistemi embedded. Alcune delle sue caratteristiche importanti sono:

  • Configurazioni e profili: Connected Limited Device Configuration (CLDC) e Mobile Information Device Profile (MIDP). Ciò consente a Java di essere adattato alle esigenze di una vasta gamma di dispositivi.
  • API ottimizzate: includono librerie di rete, I/O e grafiche leggere, tutte pensate per dispositivi con memoria limitata. L’obiettivo di progettazione era di avere dimensioni di file JAR molto ridotte in modo che consumassero pochissima preziosa memoria.

JavaFX non è un’edizione autonoma; è un ambiente per sviluppare applicazioni desktop ricche di contenuti multimediali. Fornisce:

  • Interfacce utente moderne con controlli avanzati, visualizzazioni e animazioni
  • Supporto multimediale tramite riproduzione audio e video integrata
  • Integrazione Web tramite l’incorporamento di contenuti Web nelle applicazioni

L’ecosistema Java

L’ampia comunità e i numerosi strumenti di sviluppo supportano l’ecosistema Java:

  • Java Virtual Machine (JVM): è l’ambiente di esecuzione centrale per il codice Java. Interpreta ed esegue bytecode, gestisce la memoria e ottimizza le prestazioni con l’aiuto del compilatore Just-In-Time (JIT).
  • Java Development Kit: è il compilatore, gli strumenti di debug e le librerie, oltre ad altri strumenti di sviluppo.
  • Gli strumenti di sviluppo comprendono ricchi ambienti di sviluppo integrati come Eclipse, IntelliJ IDEA o NetBeans che forniscono modifica del codice, debug, refactoring e integrazione con sistemi di controllo delle versioni.
  • Framework e librerie aiutano a promuovere applicazioni complesse: sono disponibili diversi framework come Spring o Hibernate e librerie.

Java: prospettive presenti e future

Java continua ad aggiornarsi con ogni nuova versione introducendo funzionalità più sofisticate e apportando miglioramenti. Ecco alcuni dei recenti:

  • Programmazione funzionale: Java 8 include espressioni lambda e Stream API, consentendo una programmazione molto concisa ed efficiente.
  • Modularità: il sistema di moduli (Project Jigsaw) è stato aggiunto in Java 9 per una migliore strutturazione del codice e una maggiore sicurezza.
  • Nuove funzionalità del linguaggio: il miglioramento del pattern matching, dei record e dei blocchi di testo conferisce maggiore modernità e flessibilità al linguaggio.
  • Supporto a lungo termine: Java 11 e Java 17 sono esempi di release con supporto a lungo termine, che possono fungere da buona base per le applicazioni aziendali.

Mantenuto fresco dalla sua maturità, dalla grande comunità di sviluppatori e dall’innovazione continua, Java rimane uno dei linguaggi più ampiamente utilizzati nel mondo professionale.

Lascia un commento