Post

Java, il linguaggio di programmazione più usato al mondo

DOMANDA: Quanti programmatori Java esistono al mondo? RISPOSTA: Consultando il sito della Oracle  possiamo stupirci del numero di programmatori Java esistenti al mondo: ben 9 milioni ! Wikipedia ne dichiara 10 milioni , ma una stima forse più realistica è quella di NumberOf.net  che parla comunque di  9.007.346 . Qualunque sia il risultato esatto la vera notizia è che Java si afferma come linguaggio più utilizzato al mondo ! Altri numeri interessanti sono: Un bilione di download all'anno (quindi cir ca 1.000.000.000.000/anno) Tre bilioni di dispositivi su cui gira Java  (quindi cir ca 3.000.000.000.000) Sul 97% degli Enterprise Desktop gira Java Sul 100% dei player Blue-Ray c'è Java Numeri da capogiro cresciuti soprattutto da quando, nel 2007, Java è passato all' open source . Con questa bella notizia per tutti i programmatori Java , vi annuncio la pausa estiva di Agosto in cui non verranno pubblicati nuovi articoli. Ci rivediamo

JFreeChart: statistiche e grafici in Java

DOMANDA: Come si creano grafici e statistiche in Java? RISPOSTA: Uno dei possibili modi per creare  velocemente  statistiche e grafici in Java è utilizzando JFreeChart , una libreria che, con pochi sforzi, ci permette di ottenere dei buoni risultati. Per far funzionare l'esempio abbiamo bisogno delle seguenti librerie: - jfreechart- 1.0.14 .jar (scaricabile da qui ) - jcommon- 1.0.17 .jar (scaricabile da qui ) (le versioni indicate sono quelle utilizzate nell'esempio) Qualora non importassimo le librerie JCommon incorreremo nel seguente errore: The type org.jfree.util.PublicCloneable cannot be resolved.         It is indirectly referenced from required .class files Guardiamo ora come, in un unico esempio di Test , riusciamo a stampare tre file ( istogramma.jpg, torta1.png, torta2.png ):  package statistiche; import java.io.File; import java.io.IOException; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFree

Caricamento di immagini multiple

DOMANDA: Come posso caricare immagini multiple in un'interfaccia grafica Java? RISPOSTA: Prendendo spunto dalla domanda fatta nel post Caricamento di immagini , vi mostrerò ora come caricare immagini multiple . Le differenze sono sostanzialmente nella creazione di un oggetto Immagine dedicato ed alla gestione di un numero dinamico di immagini.  Vediamo la nuova classe Immagine.java : package immagini; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class Immagine { private static long count = 0; private long id ; private BufferedImage image ; private int x ; private int y ;     // "imagePath" è il path dell'immagine da caricare     // x e y sono le coordinate dell'immagine public Immagine(String imagePath, int x, int y) { this .image = loadImage(imagePath); this . x = x; this . y = y; this . id = count ++;

Check compatibilità Java Virtual Machine

DOMANDA: Come posso controllare se la versione della Java Virtual Machine (JVM) installata è compatibile con il mio programma? RISPOSTA: Per controllare la versione della Java Virtual Machine   (JVM) installata e informare l'utente dell'incompatibilità con il nostro programma, possiamo usare uno script batch basato sulla major.minor version delle distribuzioni di Java . Nel caso in cui provassimo ad eseguire un jar compilato con Java 7 su una JVM 6 , riceveremmo la seguente eccezione : Exception in thread "main" java.lang.UnsupportedClassVersionError : NomeClasseMain: Unsupported major.minor version 51.0         at java.lang.ClassLoader.defineClass1(Native Method)         at java.lang.ClassLoader.defineClassCond(Unknown Source)         at java.lang.ClassLoader.defineClass(Unknown Source)         at java.security.SecureClassLoader.defineClass(Unknown Source)         at java.net.URLClassLoader.

Servlet 3.0: @WebServlet

DOMANDA: Come si configurano le Servlet 3.0 con l'Annotation @WebServlet? RISPOSTA: Le Servlet 3.0 possono essere configurate in modo tradizionale aggiungendo le seguenti righe al web.xml : <servlet>    <servlet-name> MiaServlet </servlet-name>    <servlet-class> it.blogspot.lancill.TestServlet </servlet-class>    <init-param>        <param-name> parametro1 </param-name>       <param-value> http://lancill.blogspot.it </param-value>     </init-param>  </servlet>  <servlet-mapping>     <servlet-name> MiaServlet </servlet-name>     <url-pattern> /servlet/* </url-pattern>  </servlet-mapping> Con questa configurazione la nostra Servlet , di nome MiaServlet , riceverà un parametro di inizializzazione ( parametro1 ) valorizzato con " http://lancill.blogspot.it " e risponderà a qualunque url che comincerà per " /servlet/" . Quindi se d

Creare Thread in Java

DOMANDA: Cos'è e come si crea un Thread?  RISPOSTA: Il Thread  è una parte di un processo che può essere lanciata parallelamente ad altre sottoparti per riuscire a concludere il processo iniziale in un tempo minore.  Supponiamo che un processo sia fatto da due metodi che impiegano rispettivamente 10 e 7 secondi ad essere completati. In linea teorica se questi due metodi fossero lanciati in due Thread paralleli, il tempo totale sarebbe di 10 secondi (cioè il tempo massimo impiegato da uno dei due) invece dei 17 che impiegherebbero se eseguiti in sequenza. Esistono due modi per creare un Thread : estendere la classe java.lang.Thread o implementare l'interfaccia java.lang.Runnable . Il vantaggio di utilizzare Runnable è quello di lasciarci la libertà di estendere qualunque altra classe. Ricordiamo infatti che Java non consente l'ereditarietà multipla.  Calcola1 è un Thread creato estendendo la classe Thread : package  thread; public class Calcola1 ex

Apache Tomcat: modificare la porta HTTP/HTTPS

DOMANDA: Ho installato Apache Tomcat sulla porta di default 8080, c'è modo di modificarla senza reinstallarlo? RISPOSTA: Si è possibile.  Per modificare la porta HTTP di Tomcat , ovvero la porta su cui il webserver Apache risponde alle richieste HTTP , è necessario modificare il file di configurazione server.xml , presente nella cartella conf del path di installazione (di solito è  C:\Programmi\Apache Software Foundation\Tomcat 7.0\conf\server.xml ). In questo file troviamo, tra le tante configurazioni, queste righe: <!-- <Connector executor="tomcatThreadPool" port=" 8080 " protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> --> Modificando il valore 8080 possiamo modificare la porta di ascolto di Tomcat per le richieste HTTP . Per modificare la porta HTTPS il procedimento è analogo, ma interessa le righe subito in basso alle precedenti: <!-- <Connec