Java Tutorial - Parte 2 0.1
Un tutorial per esempi
Caricamento in corso...
Ricerca in corso...
Nessun risultato
Introduzione

A chi è rivolta questa guida

Questo corso di programmazione Java insegna la programmazione di una GUI (Graphic User Interface = Interfaccia grafica) ed è la seconda parte del corso Java da ne scritto. Pertanto, l'autore presume che il lettore abbia già assimilato tutte le caratteristiche essenziali del linguaggi Java e della programmazione ad oggetti:

  • astrazione dei dati
  • ereditarietà
  • polimorfismo

Essendo la seconda parte del tutorial Java, è sicuramente un requisito raccomandato quello di aver letto la prima parte; non è essenziale ma si deve almeno padroneggiare bene gli argomenti di base trattati nella prima parte. Se non lo avete ancora fatto e volete leggerla, clikkate questo link: Java tutorial Parte Prima - Indice generale.
Per insegnarvi a programmare una GUI svilupperemo una piccola applicazione GUI per computer desktop e/o notebook che devono essere equipaggiati con un ambiente GUI come per esempio Windows™ oppure, nel caso di una macchina Linux deve avere uno dei suoi ambienti GUI come KDE o GNOME.
La applicazione che scriveremo è un giochino: il mastermind un gioco che tutti noi abbiamo fatto da bambini con carta e penna; chi con i numeri, chi con le lettere ed altri con i colori. Si tratta di una applicazione piuttosto semplice ma grazie ad essa esploreremo molte situazioni in cui ci si trova scrivendo progetti anche più grandi. Impareremo quindi a:

  • realizzare una semplice Intelligenza Artificaile che può giocare con noi (e che ci darà anche del filo da torcere, vedrete)
  • connetterci con un giocatore remoto sulla rete
  • utilizzare i threads per le operazioni lunghe

Poichè gli strumenti di sviluppo usati in questo tutorial sono gli stessi usati nella prima parte del corso è necessario provvedere alla loro installazione nel caso il lettore non abbia letto la prima parte di questo tutorial.
Nel prossimo capitolo verrà insegnato ad installare gli strumenti necessari e verrà anche descritto in breve il loro utilizzo. Per chi ha letto la prima parte di questo tutorial non è necessario procedere alla installazione degli strumenti di sviluppo descritti nel prossimo capitolo.

Una breve panoramica

La particolarità di questo tutorial rispetto a molti altri disponibili è che insegna la programmazione Java in ambiente GUI sviluppando una applicazione seguendo la filosofia di apprendimento learn by examples (=impara dagli esempi). Di seguito vengono elencati gli argomenti trattati nei vari capitoli di questo tutorial:

Requisiti hardware,software e conoscenze richieste

Prerequisiti per sistemi windows ™

Per poter installare il JDK (Java Development Kit) è necessario disporre di un sistema win32 non troppo datato. Vanno sicuramente bene i sistemi da Windows™ versione 8 e successivi mentre non sono più supportati i vecchi sistemi Windows 95/98/ME anxhe se sono a 32 bit.

Si presuppone inoltre che l'utente abbia familiarità con i seguenti concetti:

  • l'uso dei principali strumenti per scrivere testi (notepad o wordpad)
  • l'uso del prompt dei comandi di MS-DOS
  • l'installazione di nuovi programmi
  • l'uso di compressori / decompressori quali WinZip (non raccomandato) o 7-Zip (raccomandato)
  • la creazione, modifica e navigazione nelle cartelle e sottocartelle

Prerequisiti per sistemi Linux o unix-like

Poichè questi sistemi sono esclusivamente a 32 bit (o superiori), i requisiti hardware e software di un sistema GNU/Linux o unix sono sicuramente soddisfatti se nel computer è installato uno di questi sistemi. Per quanto riguarda gli strumenti di sviluppo quali il compilatore GCC, tutti questi sistemi sono già normalmente equipaggiati con essi.

Alcune distribuzioni GNU/Linux, tuttavia, non installano automaticamente gli strumenti di sviluppo Java e sarà necessario, in questo caso, usare gli strumenti di amministrazione per provvedervi. Di solito, nelle distribuzioni moderne, si tratta di strumenti grafici che facilitano enormemente il compito all'amministratore del sistema.

Si presuppone inoltre che l'utente abbia familiarità con i seguenti concetti:

  • l'uso della shell unix (terminale)
  • l'esecuzione di programmi a riga di comando
  • l'installazione di nuovi programmi
  • l'uso di compressori / decompressori quali gzip o tar
  • l'uso dei comandi per la creazione, modifica e navigazione nelle cartelle e sottocartelle

Prerequisiti per sistemi Apple

Da fare
non avendo una macchina Apple non saprei proprio come procedere

Convenzioni stilistiche e sintattiche

In questo capitolo verranno descritte le convenzioni sia sintattiche che di stile applicate in tutte le pagine di questa guida. La guida è suddivisa in capitoli ed ogni capitolo tratta un argomento specifico. Il capitolo è a sua volta suddiviso in sezioni le quali possono avere delle sotto-sezioni. Per esempio, il testo che state leggendo fà parte del capitolo Introduzione, sezione Convenzioni.
Nel mondo dei computer e dell'informatica in generale, la lingua usata sin dagli inizi è l'inglese e, ancora oggi, l'inglese è, e si suppone rimarrà ancora per molto tempo, la lingua più diffusa. Per quanto possibile gli autori cercheranno sempre di trovare la parola corrispondente in italiano ma, a volte, non è possibile oppure il vocabolo inglese è divenuto di uso comune anche in Italia. Se prendiamo, ad esempio, le memorie di massa, il termine inglese harddisk è molto più conosciuto in Italia del corrispondente termine italiano disco rigido oppure anche disco fisso.

In questo corso di programmazione alcune parole saranno scritte con uno stile diverso dal testo normale:

  • le sigle sono scritte in lettere maiuscole; se il loro significato non è ampiamente conosciuto, saranno riportate fra parentesi tonde le parole in lingua originale che le costituiscono oltre alla eventuale traduzione in italiano come per esempio: CPU (Central Processing Unit = Unità Centrale di Elaborazione)
  • le parole inglesi saranno scritte in corsivo come per esempio harddisk e la eventuale traduzione in lingua italiana sarà riportata tra parentesi tonde preceduta dal segno di uguale: harddisk (=disco rigido)
  • i nomi di società, prodotti, di marchi commerciali o brevetti ed i nomi ampiamente conosciuti sono scritti in grassetto come per esempio Linux, Firefox e Fedora a meno che essi non siano link a risorse esterne od interne alla guida.
  • sono scritti in un font monospaced le parole riservate del linguaggio oppure le funzioni di libreria come per esempio switch (parola riservata), e println (metodo della libreria di base di Java).
  • i link a pagine esterne o interne alla guida sono scritte con il classico stile del link del web riconoscibile anche dal fatto che il cursore cambia forma quando vi si trova sopra. Esempio: http://www.acme.com

    Oltre allo stile applicato alle singole parole, nella guida vengono usati stili particolari applicati ad interi paragrafi per evidenziarne l'importanza oppure la pericolosità nel caso si commettano errori. Di seguito sono riportati i principali stili di paragrafo usati:

Lo stile warning

Un paragrafo con un bordo rosso sulla sinistra indica che le operazioni descritte e da compiere sul proprio computer sono potenzialmente pericolose per l'integrità del sistema. Porre particolare attenzione e seguire scrupolosamente le istruzioni.

Lo stile important

Un paragrafo con un bordo blu sulla sinistra indica che i concetti esposti sono particolarmente importanti per la corretta comprensione dei capitoli o sezioni successivi. Il lettore è invitato a soffermarsi sul paragrafo e controllare se il concetto è stato assimilato; in caso negativo, è opportuno rileggere l'intero capitolo.

Lo stile codice

Lo stile codice indica un paragrafo di codice sorgente che deve essere copiato dal lettore nel proprio editor di fiducia come per esempio il seguente:

int main()
{
printf( "Hello" );
}

Lo stile verbatim

Questo stile è caratterizzato da un font mono-spaced ed in cui il browser mantiene la formattazione originaria ed è usato per evidenziare calcoli, algoritmi ed, in genere, tutte quelle operazioni in cui è necessaria una formattazione rigida.

 Questo stile è caratterizzato da un font mono-spaced e da una formattazione rigida

I termini della licenza di questa guida

Questa guida è rilasciata sotto la GNU Free Documentation License (GNU FDL) versione 1.3 che potete trovare nella sua originale lingua inglese a questo link: https://www.gnu.org/licenses/fdl-1.3.html#license-text. Una traduzione non ufficiale in italiano della GNU FDL 1.3 è disponibile su Wikipedia
Una copia della licenza GNU FDL 1.3 è inserita nell'archivio compresso che contiene questo tutorial in formato trasparente e può essere visionata anche senza una connessione ad Internet clikkando questo link.

Siccome la licenza è scritta in legalese che, sappiamo bene, è di difficile comprensione anche in italiano (figuriamoci in inglese), riporto più sotto i punti essenziali sui quali si fonda la licenza GNU FDL:

  • è possibile copiare e ridistribuire l'opera in tutto o in parte con qualsiasi mezzo sia elettronico che di altro tipo purchè essa venga accompagnata dalla licenza GNU FDL
  • se viene distribuita una copia non modificata dell'opera allora è necessario preservare il titolo, il copyright dell'autore nonchè il nome dell'editore (che nel caso di questa opera è galdom.it
  • è possibile modificare in tutto o in parte l'opera e distribuire l'opera modificata purchè essa venga rilasciata sotto licenza GNU FDL versione 1.3 o successiva
  • è possibile modificare in tutto o in parte l'opera e distribuire l'opera modificata purchè non venga in alcun modo modificata la Sezione Non Modificabile che appare all'inizio di questa opera
  • ogni lavoro derivato dall'originale dovrebbe avere un titolo diverso dall'originale a meno che l'autore dell'originale non disponga diversamente per iscritto; a questo proposito gli autori del presente documento sollevano il modificatore da questo obbligo: è possibile usare lo stesso titolo
  • il lavoro derivato dovrà contenere il nome di chi ha eseguito le modifiche come editore dell'opera ma deve comunque preservare il copyright del documento originale
  • è possibile stampare l'opera (sia in originale che un lavoro derivato) in un libro e venderne le copie a patto che il libro sia rilasciato con licenza GNU FDL versione 1.3 o successiva e che rispetti tutti i vincoli imposti per le copie senza modifiche; tuttavia, è possibile aggiungere del testo sia in copertina che in retro-copertina.
  • è possibile tradurre l'opera in tutto o in parte in qualsiasi altra lingua; la traduzione è da considerarsi come opera derivata e quindi soggiace a tutte le regole e limitazioni viste sopra per i lavori derivati
  • ogni lavoro derivato dovrà preservare il testo del capitolo Crediti (eventualmente sarà possibile aggiungere ulteriori crediti) ed il testo della Copertina dovrà anche aggiungere nel capitolo Changelog le modifiche eseguite e da chi sono state fatte seguendo lo stesso schema di versioning
Gli autori devono avvisare il distributore o modificatore dell'opera che le note esposte qui sopra, per quanto tradotte il più fedelmente possibile, non possono sostituirsi alla licenza originale in lingua inglese e che, in caso di contestazioni giudiziali, quello che fà fede è la licenza ORIGINALE IN LINGUA INGLESE.

Crediti e ringraziamenti

Questa guida è stata scritta da Luciano Cattani a partire dal agosto 2024 e rilasciata in Internet nel dicembre 2025. L'opera è stata scritta in originale, nessun capitolo o paragrafo è stato copiato da altre opere o guide nè elettroniche nè cartacee, anche se è possibile che alcune parti di questa opera siano simili a parti di altri lavori che trattano lo stesso argomento. /b Nel confermare che queste eventuali similitudini sono comunque frutto del caso, gli autori sono disponibili, dietro semplice segnalazione, a modificare questa guida in modo che non ci possano essere contestazioni riguardo a copyright di altre opere.

Nonostante questa sia una opera unica, l'autore deve ringraziare alcune persone ed organizzazioni dalle quali ha avuto suggerimenti, idee, linee guida e strumenti usati per creare questa guida. In particolare, desidero ringraziare:

  • il progetto OpenJDK che rilascia gli aggiornamenti del ambiente di sviluppo Java gratuitamente
  • la famosissima enciclopedia online Wikipedia che è stata la fonte di tutti gli algoritmi usati nei programmi di esempio e delle notizie e citazioni riportate nella guida
  • il progetto MinGW per aver scritto il porting del compilatore GCC in ambiente windows ed usato in questa guida
  • il progetto Twilight Dragon Media per aver creato un facile tool di installazione dell'ambiente MinGW usato in questa guida
  • il progetto Doxygen per aver creato un tool di documentazione flessibile e facile da usare col quale è stata realizzata questa guida
  • Clemens Krainer che ha scritto il codice originale del tachimetro usato in questo tutorial per creare un componente personalizzato, vedi Componenti personalizzati.
  • il portale Oracle - The Java Tutorial dal quale è stato tradotto in italiano un articolo in lingua inglese sulle comunicazioni in rete (vedi Java Networking
  • Jakob Jenkov che ha pubblicato un articolo in lingua inglese su JavaNIO e che ho tradotto quasi letteralmente in italiano in JavaNIO (Java New IO)

Gli autori invitano tutti i lettori di questa guida a contribuire a mantenerla aggiornata. Per segnalare errori, omissioni, approfondimenti o anche solo per inviare un feedback scrivete un messaggio e-mail a: luccat AT galdom DOT net

E' possibile scaricare questa opera in formato trasparente (cioè i sorgenti Doxygen) clikkando su questo link.

Il log delle modifiche

Questa guida è stata scritta usando strumenti software specifici e gli esempi proposti fanno riferimento a costrutti del linguaggio Java disponibili da quella versione in poi. Gli strumenti usati e le loro versioni sono:

  • il Java Development Kit versione 22
  • il GNU Compiler Collection versione 14

Lo schema di versioning di questa guida si allinea allo schema usato da quasi tutto il software e la documentazione open source. Il numero di versione è composto di tre cifre decimali separate da un punto

     x.y.z

il cui significato, partendo dalla cifra a sinistra è:

  • x: major version il numero di versione maggiore cambia quando nella guida verranno introdotti costrutti del linguaggio Java incompatibili con la versione 14 del JDK
  • y: minor version il numero di versione minore cambia quando vengono introdotti nuovi argomenti che richiedono, generalmente, una o più nuove sezioni.
  • x: bug-fix la terza cifra cambia quando vengono corretti errori o imprecisioni delle versioni precedenti

Autori ed editori

Come stabilito dal Preambolo della licenza GNU FDL la licenza prevede per autori ed editori il modo per ottenere il giusto riconoscimento del proprio lavoro, preservandoli dall'essere considerati responsabili per modifiche apportate da altri.
Si rende necessario quindi elencare in questa sezione gli autori e/o gli editori di eventuali copie modificate di questa opera. Accanto al nome dell'autore ed editore, dovranno essere indicate anche le versioni rilasciate da ciascuno, secondo lo schema descritto in Il log delle modifiche.

  • Luciano Cattani, Bolzano, Italy: versione 0.1

Argomento successivo - Indice Generale