Post

Eclipse: Font Size

DOMANDA: Come si cambia la dimensione dei caratteri del codice in Eclipse? RISPOSTA: La domanda di oggi nasce dall'esigenza tipica nata durante le lezioni o le presentazioni di codice al pubblico che puntualmente non riesce a leggere nemmeno una riga a causa delle dimensioni di default di Eclipse troppo ridotte. Per modificarle è sufficiente seguire questi passi: 1. selezionare dal menù Window -> Preferences -> General -> Appearance -> Colors and Fonts ;  2. selezionare la prospettiva e la categoria da modificare  dalla lista a destra. N el nostro  esempio Java ; 3. selezionare Java Editor Text Font ; 4. cliccare il tasto  Edit sulla destra; 5. selezionare tipo, stile e dimensione del Font ; 6. cliccare OK . Seguiti questi passi il pubblico potrà finalmente ammirare (e criticare) il vostro codice senza alcun dubbio visivo! Nella stessa finestra possiamo modificare anche altre opzioni come lo sfondo , le labels , ecc...,

Eclipse: Shortcuts (scorciatoie) da tastiera

DOMANDA: Quali sono le shortcuts di Eclipse più utili? RISPOSTA: Usare le shortcuts  da tastiera migliora di molto le prestazioni di un programmatore. Di seguito sono elencate le shortcuts di default, fermo restando che potete sempre cambiarle o aggiungerne di personalizzate (in fondo al post vediamo come). Vediamo alcune delle più utili: Ctrl + spazio Autocomplete, ossia mostra i suggerimenti della parola che state scrivendo. Ctrl + 7 Commenta/Decommenta la riga corrente o la selezione di codice in blocco. Ctrl + Click Eseguito sul nome di un metodo o di una classe, apre la finestra in cui si trova il metodo o la classe ed il cursore si sposta esattamente al punto desiderato. Ctrl + Shift + R Refactoring, ossia rinomina la variabile selezionata ovunque nel workspace aggiornandone i riferimenti. Ctrl + H Cerca il testo selezionato all'interno del workspace. Utile ad esempio per sapere dove un setter o getter viene chiamato. Tab/Shift + Tab Ind

Strutture dati: List, Set, Map

DOMANDA: Che differenza c'è fra List, Set e Map? Quale devo usare? RISPOSTA: Un Data Structure è una struttura ottimizzata per collezionare dati. List e Set sono strutture dati che estendono Collection mentre Map vive indipendentemente.  Una Collection è un contenitore di un insieme di valori, una sorta di array dinamico. A seconda dell'utilità, si possono usare diverse implementazioni dell'interfaccia Collection. Essa infine può essere tipizzata , ossia contenere solo dati di un certo tipo, tale tipo si indica attraverso i Generics (indicandolo fra parentesi angolari). Siccome il tipo è un oggetto , per esprimere primitivi come int  bisogna usare i wrapper come Integer . List Contiene dati ordinati. I duplicati sono permessi. Aggiunge un elemento: add(Object obj). Accede ad un elemento: get(int index). Rimuove un elemento: remove(Object obj) o remove(int index). Le List servono nel caso in cui i dati possano essere duplicati.  Due c

JNI: Richiamare DLL .NET da Java

DOMANDA: In Java è possibile chiamare delle funzioni contenute in una DLL .NET? RISPOSTA: Anche se limita fortemente l' indipendenza dalla piattaforma tipica di questo linguaggio, in Java è possibile richiamare i metodi contenuti all'interno di una DLL grazie alle librerie Jni4Net . Tali librerie permettono la creazione metodi ponte (bridge o proxy) attorno alla classe C# richiamabili da Java che si occupano della trasformazione dei dati nella comunicazione tra i due linguaggi. Vediamo come possiamo risolvere il nostro problema: Prerequisito : Avere installato e configurato correttamente il Java Development Kit (qui usiamo la versione 7 update 5 del JDK) e il compilatore C# csc.exe (disponibile anche in VisualStudio). Seguiamo attentamente le operazioni elencate di seguito: 1. Scarichiamo le librerie BIN  jni4net   (qui utilizziamo la versione 0.8.6 ) 2. Scompattiamo il file compresso appena scaricato 3. Entriamo nella cartella s

ExecutorService: Eseguire Thread a gruppi di N

DOMANDA: Come posso schedulare i Thread affinché siano eseguiti a gruppi di N? RISPOSTA: Esiste un oggetto della classe java.util.Concurrent chiamato ExecutorService che risolve il problema in poche righe di codice. Vediamo un esempio in cui vogliamo svolgere dieci operazioni (ciascuna della durata di mezzo secondo)  eseguendole a gruppi di 2 . Classe Operazione : package executorservice; public class Operazione implements Runnable { private long id ;   public Operazione( long id) { this . id = id; } @Override public void run() { System. out .print( id + " " ); try { Thread.sleep(500); // mezzo secondo di pausa } catch (InterruptedException e) { e.printStackTrace(); } } } La classe di Test : package  executorservice; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class TestConcurrent { public static void main(String[] args) {

Impostare java.exe nel PATH di Windows a runtime

DOMANDA: Come posso avviare automaticamente un jar eseguibile senza controllare che il programma java.exe sia correttamente impostato tra le variabili d'ambiente? RISPOSTA: Nel post Creare un eseguibile Java è stato descritto come realizzare un jar eseguibile e avviarlo con un semplice doppio click. Tutto ciò avviene correttamente se l'associazione dei file .jar con il programma java.exe è avvenuta correttamente nel mondo Windows. Per metterci al sicuro che il nostro jar sia sempre eseguito, possiamo definire un file batch (.bat) che esegue i comandi che Windows (con le corrette impostazioni) eseguirebbe per noi. Lo script batch riportato di seguito esegue i seguenti passi: 1. Utilizzo del comando where java per recuperare il percorso del file java.exe 2. Memorizzazione del percorso del file java.exe nella variabile d'ambiente java_path 3. Aggiornamento della variabile d'ambiente PATH aggiungendo il valore della variabile ja

Creare file Microsoft Excel .XLS e .XLSX con Apache POI

DOMANDA: In Java è possibile creare un file Microsoft Excel .xls o .xlsx? RISPOSTA: Così come visto per i file Microsoft Word .doc e .docx è possibile creare dei file Microsoft Excel .xls e .xlsx con la libreria gratuita Apache Poi . Guardiamo insieme un esempio: package xsl; import java.io.FileOutputStream; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellReference; import org.apache.poi.xssf.streaming.SXSSFWorkbook; public class XlsApachePoi {    public static void main(String[] args) throws Throwable {       Workbook wb = new SXSSFWorkbook(100); // creo il file (100 righe massimo in memoria)       Sheet sh = wb.createSheet(); // creo un foglio       for ( int numRighe = 0; numRighe < 100; numRighe++){          Row row = sh.createRow(numRighe); // creo una riga          for ( int cell