Java

Comunicazione mediante WebSocket e Tomcat 7

Le WebSocket rappresentano una tecnologia che consente una comunicazione bidirezionale e full-duplex tra il client e il server.
In particolare, consente ad applicazioni browser-based di comunicare con un host remoto senza la necessità di aprire connessioni multiple utilizzando AJAX o IFrame, in combinazione con il long polling.

Lato client, le WebSocket sono implementate nella maggior parte dei browser di ultima generazione. La tabella riportata sul sito caniuse.com può essere d’aiuto.
Lato server, esistono diverse implementazioni di WebSocket. In questo articolo prenderemo in considerazione l’implementazione Java fornita da Apache Tomcat 7. Come indicato nella documentazione, l’API potrebbe essere soggetta a cambiamenti.

Continua >

Informazioni sulla memoria in Java

Ogni applicazione Java ha associata un istanza della classe Runtime che può essere utilizzata per vari motivi. Uno di questi è controllare lo stato della memoria.

I metodi che ci interessano sono tre:

public long freeMemory()
public long maxMemory()
public long totalMemory()

Continua >

Leggere da un Readable con la classe Scanner

Per un’introduzione sulla classe Scanner vedi: Java: la classe Scanner.

La classe Scanner consente di leggere dei token da diverse fonti (File, InputStream, String…). Può tuttavia capitare di dover leggere da una qualche struttura diversa. In questo caso ci viene in aiuto il costruttore:

Scanner(Readable source)

e la capacità di Scanner di avere come fonte un Readable

Continua >

La classe LineNumberReader di Java

La classe LineNumberReader rappresenta un buffer di caratteri con la peculiarità di tenere traccia del numero di riga. Una riga viene considerata terminata se viene incontrato un line feed (‘\n’), un carriage return (‘\r’) o un carriage return seguito immediatamente da un line feed.

Continua >

Java: Serializzare un oggetto in XML

L’API di Java (dalla versione 1.4) mette a disposizione la classe XMLEncoder per serializzare un oggetto (un JavaBean) e ottenerne una rappresentazione testuale , sotto forma di documento XML.
Dualmente, è possibile deserializzare un oggetto utilizzando la classe XMLDecoder.

Continua >

Analizzatore lessicale per espressioni regolari

Un analizzatore lessicale è un fase fondamentale della compilazione/interpretazione. Il suo scopo è quello di accettare in ingresso uno stream di caratteri e produrre uno stream di token, dove ogni token è rappresentato dal testo e dal tipo.

Continua >

Java: Serializzazione e interfaccia Externalizable

In Java è possibile trasformare un oggetto in un serie di byte (serializzazione) marcando la classe da serializzare come Serializable. java.io.Serializable è un inferfaccia “segnaposto” che non contiene metodi. Le classi che implementano quest’interfaccia indicano la possibilità di essere serializzate/deserializzate.

Continua >

JSP: gestire le eccezioni con la direttiva page

La direttiva page delle pagine JSP possiede un attributo, errorPage, che permette di specificare una pagina di errore da mostrare in caso avvenga un’eccezione non gestita.
La pagina di errore può settare a true l’attributo isErrorPage, in modo da ottenere l’oggetto implicito exception e ricavare la fonte dell’eccezione.

Continua >

I Generics Java

I generics in Java, introdotti a partire dalla versione 1.5, consentono di definire un’astrazione sul tipo di oggetto da utilizzare in una classe, similmente a quanto avviene utilizzando i template in C++.

Per creare una classe generica, scriviamo qualcosa simile alla seguente porzione di codice:

public class GenericsTest
{
	public static class Pair<S, T>
	{
		public S first;
		public T second;

		public Pair(S first, T second)
		{
			this.first = first;
			this.second = second;
		}
	}

	public static void main(String[] args)
	{
		Pair<String, Integer> pair =
			new Pair<String, Integer>("Antonio", 22);
		System.out.println(pair.first + ", " + pair.second);
	}
}

Continua >

Creare un modello personalizzato per una JTable

In Java, ogni tabella utilizza un modello per gestire i dati rappresentati.
Il modello in questione deve implementare i metodi definiti nell’interfaccia javax.swing.table.TableModel. Qualora non venisse specificato un modello, la classe JTable crea un’istanza di javax.swing.table.DefaultTableModel

Table model

Continua >