Java Tutorial - Parte 2
0.1
Un tutorial per esempi
Caricamento in corso...
Ricerca in corso...
Nessun risultato
Indice generale
Introduzione
A chi è rivolta questa guida
Una breve panoramica
Requisiti hardware,software e conoscenze richieste
Prerequisiti per sistemi windows ™
Prerequisiti per sistemi Linux o unix-like
Prerequisiti per sistemi Apple
Convenzioni stilistiche e sintattiche
I termini della licenza di questa guida
Crediti e ringraziamenti
Il log delle modifiche
Autori ed editori
Gli strumenti di sviluppo
Ambienti integrati e tools CLI
Installer automatici
Installazione manuale
Scaricare gli archivi compressi
Decomprimere l'archio
Impostare il PATH
Verificare la installazione
Disinstallazione
La Graphic User Interface
Introduzione alla GUI
Application Program Interface
Ambienti cross-platform
La libreria GUI di Java
Un esempio di app Java
Che significa invokeLater?
Il gioco del Mastermind
Le regole del gioco
Le sequenze
I parametri di gioco
Il progetto mastermind
I giocatori del Mastermind
I giocatori locali
Il giocatore umano
Il giocatore di test
Il giocatore AI
Il giocatore remoto
Gestire le versioni della app
La organizzazione della applicazione
Versione 0.1 - Le classi comuni
Introduzione
I files sorgente
La classe MMLogger
I livelli di log
Gli handlers dei messaggi
La classe di log specializzata
Il nome del logger
La classe MMProperties
Generalità delle proprietà
Le proprietà del Mastermind
Il costruttore
I metodi
La classe MMException
La classe Params
I costruttori
I metodi
La classe Sequence
La classe Results
I costruttori
I metodi
La classe Version
Una suite di test
Ulteriore documentazione
Versione 0.2 - la UI e le sequenze
Introduzione
I nuovi files sorgente
Il pannello delle sequenze
I membri dati
Il costruttore
Il layout del pannello sequenze
Inserire le sequenze nel pannello
La sequenza nella GUI
I simboli delle sequenze
I costruttori
I membri dati
I metodi concreti
I metodi astratti
Il disegno dei simboli
La classe principale
Il metodo main
Il layout dei componenti
Il gestore degli eventi
Il ridimensionamento del frame
Ulteriore documentazione
Versione 0.3: il pannello del giocatore
Introduzione
I nuovi files sorgente
Caratteristiche del pannello giocatore
Il sottopannello delle sequenze
Il sottopannello dei bottoni
Creare i bottoni di comando
Il nuovo pannello delle sequenze
Il pannello del giocatore
Il costruttore
Il metodo createPanel
Il listener degli eventi
Il metodo addSymbol
Il metodo backspace
Il metodo cancel
I metodi done, check e resign
Il listener di input
La classe principale
Il ridimensionamento del frame
Ulteriore documentazione
Versione 0.4: i giocatori HUMAN e TEST
Introduzione
I nuovi files sorgente
Il layout della applicazione
La gerarchia dei players
Il giocatore generico
I giocatori locali
Il giocatore umano
Il giocatore di test
Il giocatore remoto
Il manager dei giocatori
La barra di stato
La logica del gioco
Il Notify Listener
La classe base del gioco
La interfaccia Application
Il MasterMind server
Il MasterMind client
La classe principale
Lo splash-screen
I metodi della classe principale
Le finestre modali
Event Dispatching Thread
Umano contro umano
Ulteriore documentazione
Versione 0.5: il giocatore A.I.
Introduzione
I nuovi files sorgente
L'algoritmo classico
L'implementazione del algoritmo
Il costruttore
La tabella delle guess
Elaborare una guess
Scartare le guess impossibili
Efficenza dell'algoritmo
Il giocatore A.I.
La classe principale
Giochiamo alcune partite
AI contro giocatore di test
AI contro se stessa
Ulteriore documentazione
Versione 0.6: EDT ed i threads secondari
Introduzione
I nuovi files sorgente
Il metodo 'sleep'
Il nuovo Main06
La proprietà guessDelay
Il Event Dispatching Thread
Creare nuovi threads
La classe SwingWorker
il metodo doInBackground
il metodo done
Ulteriore documentazione
Versione 0.7: Il pannello delle proprietà
Introduzione
I nuovi files sorgente
Il layout del pannello proprietà
Il sottopannello dei parametri di gioco
Il sottopannello dei giocatori
Il sottopannello dei parametri di rete
Leggere le proprietà dal pannello
Il listener degli eventi
La classe principale
Ulteriore documentazione
Il giocatore remote: le comunicazioni
Introduzione
Storia
Internet Protocol (IP)
Il modello ISO/OSI
Il protocollo TCP/IP
Java Networking
Cos'è un socket?
Creare un socket
Scrittura su un socket
Lettura da un socket
Chiusura di un socket
Un esempio pratico
Un piccolo telnet
Introduzione
A cosa serve telnet
I files sorgente
Gli streams ed i writers / readers
Protocollo applicativo
Il protocollo lato server
Il protocollo lato client
I/O bloccante o non-bloccante?
La classe TinyClient
Il metodo main del client
Il blocco try-catch
Intercettare le eccezioni
Il metodo printResponse
La classe TinyServer
Il metodo main del server
Il blocco try-catch
Il metodo executeCommand
Il blocco try-with-resources
Esecuzione di un processo esterno
Ulteriore documentazione
Versione 0.8: il protocollo Mastermind
Introduzione
I nuovi files sorgente
Il protocollo applicativo
Messaggi di servizio
Messaggi di notifica
Messaggi di input
Tabella dei tipi di messaggio
La classe Message
Il giocatore remoto
La classe Connection
I membri dati
Lo stato della connessione
I costruttori
I metodi astratti
I metodi concreti
I metodi di I/O della connessione
Il listener degli eventi
input / output non bloccante
La interfaccia ConnectionListener
Il pannello della connessione
Ulteriore documentazione
Versione 0.8: implementazione del TCP/IP
Introduzione
JavaNIO (Java New IO)
I canali di NIO
I buffers di NIO
I sockets Internet
La connessione in Mastermind
Messaggi completi
Il formato del messaggio
Altri formati
La classe ConnectionTCP
Il metodo doConnect
Il metodo doClose
Il metodo doSendMessage
Il metodo doReadMessage
Il client MasterMind
Ulteriore documentazione
Versione 0.8: le code di invio e ricezione
Introduzione
I files sorgente
La coda di invio
La coda di ricezione
Il thread SendQueue
La classe RecvQueue
La sincronizzazione
Ulteriore documentazione
Versione 0.8.1: Scovare i bugs
Introduzione
Strategia di debug
La classe ConnectionTest
I membri dati
Il costruttore
I metodi astratti
Simulare la connessione
Forzare le eccezioni
Una applicazione ostile
Gestire i bugs
Tracciare i bugs
I files sorgente
Correggere i bugs
Version 0.9: la ricerca dei giocatori in rete
Introduzione
Il protocollo UDP
L'indirizzo di broadcast
L'indirizzo multicast
I pacchetti UDP in Mastermind
Le interfacce di rete
Le classi Java
La classe NetworkInterface
La classe MulticastSocket
La classe DatagramPacket
La classe InetSocketAddress
Implementazione in Mastermind
I files sorgente
Le proprietà della app
Le interfacce di rete
La classe MCInterface
MulticastWorker: la classe base
MulticastWorker: I costruttori
MulticastWorker: I metodi
Errori di invio/ricezione
Pubblicare i risultati
MulticastSender: invio dei pacchetti UDP
MulticastReceiver: ricezione dei pacchetti UDP
Il listener degli eventi UDP
Curiosità
Ulteriore documentazione
Versione 1.0: release candidate
Introduzione
I nuovi files sorgente
La persistenza delle proprietà
Il nome del file delle proprietà
Le modifiche al Main
Chiusura della applicazione
Eastern Egg
Le backdoors
Archivio Java
Ulteriore documentazione
Conclusioni
Versioni successive
Le code bloccanti
Introduzione
Le code bloccanti
Il contenuto del file compresso
Il main
Il Feeder
Il consumer
Altre implementazioni
DelayQueue
LinkedBlockingQueue
PriorityBlockingQueue
SynchronousQueue
Ulteriore documentazione
Componenti personalizzati
Introduzione
Il contenuto del file compresso
I membri dati di Speedometer
I costruttori di Speedometer
I metodi di Speedometer
Il metodo paintComponent
Il ridimensionamento del componente
Il test del componente
Il worker thread
La cancellazione del thread
La esecuzione in background
Elaborare i risultati intermedi
Ulteriore documentazione
Un compito per voi
Appendice
JSON vs XML
Gli orologi del sistema
Le operazioni atomiche
Generato da
1.12.0