468x60

lunedì 24 agosto 2009

Launch4j - wrapper Java in eseguibili Windows

Screenshot

Launch4j è un utile tool che permette di creare un file eseguibile nativo Windows completo di icona e splash screen, a partire dall'archivio JAR dell'applicazione. Launch4j non converte l'applicazione in un eseguibile, perchè questo può causare problemi. Semplicemente si pone come wrapper verso l'applicazione Java, ed è quindi comunque necessario che il sistema abbia installata una qualche versione della Java Runtime Environment (JRE). L'eseguibile generato può agire in due modi differenti. Solitamente l'archivio JAR viene totalmente incorporato nell'eseguibile, consentendo così di evitare di distribuirlo assieme all'applicazione. In alternativa, selezionando Don't wrap the jar, launch only, è possibile far si che l'eseguibile mantenga separato il file JAR, occupandosi solamente di eseguirlo invocando la JVM. In quest'ultimo caso è necessario distrubuire il file JAR assieme all'applicazione. E' importante sottolineare che i due approcci sono del tutto equivalenti, in quanto Launch4j non effettua conversioni del codice, ma funge semplicemente da wrapper. Una delle funzionalità più importanti e utili di Launch4j è la capacità di controllare automaticamente la presenza della JRE e la relativa versione, e di avvisare l'utente nel caso sia necessario scaricare un'altra versione della JRE, proponendo il link verso la pagina di download. Per sfruttare questa funzionalità è necessario specificare, nel tab JRE della GUI, la versione minima della JRE affinchè l'applicazione funzioni (es. 1.6.0.12), ed eventualmente anche la versione massima e il criterio di selezione della JRE nel caso sia installato anche il Java Development Kit (JDK). Nella stessa scheda è possibile anche impostare i parametri per l'esecuzione della JVM, quali le dimensioni dello heap e le opzioni della JVM. Nell'eseguibile vengono incorporate anche le informazioni sulla versione, il titolo dell'applicazione, il copyright, ecc... Tutto ciò è impostabile nel tab Version Info. E' anche possibile forzare Windows a consentire una sola esecuzione contemporanea dell'applicazione, impostando il mutex di controllo nel tab Single Instance. Infine una funzionalità simpatica è la possibilità di inserire uno splash screen.

sabato 22 agosto 2009

VoipCheap - ottimo software per voip gratuito

Ho provato VoipCheap, un software per il voip gratuito, e mi sono trovato abbastanza bene. La qualità dell'audio è buona, non eccellente, ma il prezzo è ottimo, perchè molte destinazioni possono essere contattate gratuitamente.

mercoledì 19 agosto 2009

System Tray in Java

Alcune volte occorre mostrare sulla System Tray del nostro sistema operativo un’icona della nostra applicazione, magari con qualche simpatica opzione o magari solo quando l’applicazione è minimizzata. Vediamo come ciò sia possibile utilizzando la classe SystemTray della libreria AWT presente dalla versione 6 di Java.

La classe SystemTray rappresenta la barra delle applicazioni della nostra scrivania. Su alcuni sistemi operativi, o più genericamente dovremmo parlare di desktop environment, la System Tray potrebbe non esistere o non essere supportata in questo caso quando cercheremo di ottenere l’istanza dell SystemTray con il metodo getSystemTray() verrà sollevata l’eccezione UnsupportedOperationException. Per testare se la barra è supportata basterà utilizzare il metodo isSupported().

La SystemTray può contenere più icone TrayIcon, aggiunt con il metodo add(java.awt.TrayIcon), e eliminate quando non più utili con remove(java.awt.TrayIcon). La classe TrayIcon consiste in un’immagine, un menù a popup e un insieme di listeners ad esso associati.

Vediamo un semplice esempio di utilizzo:

/**
*
* @author Carmelo Saffioti
*/
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

public class SysTrayDemo {

public static void main(String[] args) throws Exception {

if (!SystemTray.isSupported()) {
System.out.println("La SystemTray non è supportata");
return;
}

SystemTray tray = SystemTray.getSystemTray();
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image = toolkit.getImage("trayIcon.jpg");

PopupMenu menu = new PopupMenu();

MenuItem messageItem = new MenuItem("Mostra messaggio");
messageItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "www.carmelosaffioti.it");
}
});
menu.add(messageItem);

MenuItem closeItem = new MenuItem("Chiudi");
closeItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
menu.add(closeItem);

TrayIcon icon = new TrayIcon(image, "SystemTray app", menu);
icon.setImageAutoSize(true);
try {
tray.add(icon);
} catch (AWTException e) {
System.out.println("La TrayIcon non può essere aggiunta");
}
}
}

Balloontip - libreria open source per balloon tips in Java

Balloontip è una libreria open source che permette di utilizzare balloon tips nelle applicazioni Java Swing. Semplice e potente da utilizzare... provatela!

venerdì 7 agosto 2009

Ini4J - The Java Ini Library

Ini4J è una semplice API Java gestire files di configurazione nel formato Windows .ini. E' davvero molto leggera e semplice da utilizzare...
  • Gestione di sezioni multiple
  • Gestione di espressioni
  • Lettura/scrittura del registro di Windows, senza dover utilizzare codice nativo (JNI)
  • Supporto del .REG file format
Vediamo un semplice esempio:

[happy]
age = 99
height = 77.66
homeDir = /home/happy

//lettura
Wini ini = new Wini(new File(filename));
int age = ini.get("happy", "age", int.class);
double height = ini.get("happy", "height", double.class);
String dir = ini.get("happy", "homeDir");

//scrittura
Wini ini = new Wini(new File(filename));
ini.put("sleepy", "age", 55);
ini.put("sleepy", "weight", 45.6);
ini.store();

dopo la scrittura avremo:

[sleepy]
age = 55
weight = 45.6

mercoledì 5 agosto 2009

Applicazioni Java e Sql Server

Ho sviluppato alcune applicazioni Java che effettuano connessioni a database Microsoft Sql Server utilizzando come driver JTDS e come IDE Netbeans. Il codice utilizzato per la connessione al database è il seguente:
Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://server[:port]/database", "user", "password");
Se lo stesso codice viene utilizzato all'interno di una GUI, entra in lock, e la connessione al database non avviene.

Soluzione: nella configurazione di rete aggiungere una eccezione proxy per il server di cui alla connessione al database

mercoledì 29 luglio 2009

IF-ELSE con SqlServer

Lavorando con i database ho avuto modo di apprezzare la potenza di Microsoft Sql Server. Vediamo qui di seguito un piccolo esempio di utilizzo dei comandi IF-ELSE:

- Sintassi
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]

- Esempio
DECLARE @compareprice money, @cost money

EXECUTE Production.uspGetList '%Bikes%', 700, @compareprice OUT, @cost OUTPUT

IF @cost <= @compareprice
BEGIN
PRINT 'These products can be purchased for less than $'+RTRIM(CAST(@compareprice AS varchar(20)))+'.'
END
ELSE
PRINT 'The prices for all products in this category exceed $'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.'
468x60

Cerca su Google

Cerca nel Blog con Google