aprile 9th, 2010
1 Comment
Dopo anni di predominio del codice Java, divenuto il linguaggio più utilizzato dagli sviluppatori, C torna al primo posto nel mondo come linguaggio preferito per la scrittura di nuove applicazioni.

Il buon vecchio C è tornato alla posizione numero uno nella top 20 dei linguaggi di programmazione più utilizzati al mondo, scavalcando il rivale Java, che ne aveva occupato il posto per diversi anni.
La classifica tiene conto del TIOBE Programming Community Index e viene stilata mensilmente, fornendo un’indicazione sulla popolarità dei vari linguaggi di programmazione.
La discesa di Java in seconda posizione è dovuta al fatto che il linguaggio ha perso punti a causa di linguaggi di programmazione simili, come JavaFX, che si sta sempre più affermando e sta per entrare nella top 20.
Che dire di tutto ciò? Onore a C, che dopo anni di servizio resta uno dei linguaggi più validi e multipiattaforma di sempre.
La rivincita di C
TIOBE Programming Community Index for April 2010
aprile 8th, 2010
1 Comment
Per scrivere un’applicazione per iPhone, iPod Touch e iPad sono essenziali tre requisiti: la conoscenza del linguaggio Objective-C, l’SDK di Apple e il pagamento di 99 dollari all’anno per poter distribuire la propria creazione attraverso l’App Store.
Se però lo studio del linguaggio Objective-C dovesse rappresentare uno scoglio insormontabile, esistono degli strumenti alternativi per sfruttare la tecnologia delle applicazioni web e fare un uso combinato di HTML, CSS e JavaScript.
La prima soluzione si chiama PhoneGap, un framework open source che viene installato come uno user template di Xcode per poi far lavorare lo sviluppatore su un comune file index.html. Vengono inoltre messe a disposizione una serie di API, che sfruttano delle librerie interne per permettere la gestione dell’accelerometro e del GPS nonché delle altre funzioni standard dell’iPhone, come la rubrica dei contatti, la vibrazione e il suono. PhoneGap supporta anche le piattaforme Android e BlackBerry.
RhoMobile è un altro strumento simile a PhoneGap anche se molto più completo vista la presenza di tre distinti elementi: Rhodesè il framework vero e proprio con licenza a pagamento per ogni applicazione commerciale; RhoSync è il server per la sincronizzazione delle applicazioni enterprise e RhoHub, l’IDE per scrivere applicazioni senza bisogno dell’SDK perché ha un’interfaccia web, che supporta, oltre ad HTML, anche il linguaggio Ruby. Anche RhoMobile gestisce le funzionalità dell’iPhone legate all’accelerometro, al GPS e alla fotocamera, ma purtroppo visti i costi è chiaramente una soluzione orientata alle grandi aziende piuttosto che al singolo programmatore, sebbene la possibilità di sviluppare un’applicazione iPhone con Ruby la renda un’alternativa piuttosto appetibile.
Infine con Titanium abbiamo una sorta di via di mezzo tra le prime due soluzioni presentate: anch’esso permette la creazione di applicazioni native iPhone utilizzando HTML e JavaScript, ma ad esempio, rispetto a RhoMobile prevede una versione free(Community) e non necessita di Xcode, visto che ha un proprio SDK che si integra con l’interfaccia web del browser. Probabilmente per usabilità, caratteristiche supportate e facilità d’installazione è il migliore dei tre e prevede versioni anche per utenti Windows e Linux.
Sviluppare per iPhone senza conoscere il linguaggio Objective-C
gennaio 8th, 2010
No Comments
Sun Microsystems Inc. ha annunciato la disponibilità di Java™ Platform Enterprise Edition 6 (Java EE 6).
Java EE – la principale piattaforma per lo sviluppo e il deployment di applicazioni web ed enterprise – possiede ora nuove caratteristiche che ne incrementano la flessibilità e permettono alle aziende di adottare, in alternativa alla piattaforma enterprise completa, specifici scenari applicativi per meglio rispondere ai requisiti dei singoli progetti . Java EE SDK è già stato scaricato più di 18 milioni di volte e le specifiche sono supportate da 28 licenziatari che commercializzano prodotti compatibili con Java EE. Gli sviluppatori possono scaricare Java EE SDK dall’indirizzo http://java.sun.com/javaee/downloads/index.jsp.
Java EE 6 offre una solida base per la continua crescita della tecnologia Java sia dal punto di vista degli sviluppatori che da quello dei solution provider. Le specifiche Java EE 6 introducono i Profile, un sistema che permette di adeguare la piattaforma ai singoli scenari applicativi. I Profile offrono un maggior grado di flessibilità a clienti, ISV e vendor di piattaforma, aiutandoli ad affrontare meglio mercati specifici.
Web Profile, per esempio, è un profilo “compatto” realizzato appositamente per gli scenari basati su applicazioni Web che non richiedono tutto il set di funzionalità della piattaforma Java EE completa. Abbinato a importanti miglioramenti delle specifiche esistenti e all’introduzione della tecnologia Enterprise JavaBeans™ (EJB) 3.1 Lite, Web Profile consente agli sviluppatori Web di realizzare applicazioni in maniera rapida e semplice senza doversi costruire e gestire uno “stack custom”. Inoltre, gli sviluppatori che dovessero necessitare della potenza della piattaforma tradizionale possono passare agevolmente dall’ambiente Web Profile alla piattaforma Java EE 6 completa. Ulteriori profili saranno definiti in futuro attraverso il Java Community Process per affrontare differenti scenari applicativi.
ottobre 9th, 2009
1 Comment
Guava è una collezione di librerie Java non presenti in Google Collection Library anche se quest’ultima presto sarà incluso nel progetto. Al momento sono solo tre i namespace inclusi in tale progetto: com.google.common.primitives, com.google.common.io e com.google.common.util.concurrent. Queste librerie arricchiscono quelle Java con molte classi e API create dal gruppo di sviluppatori Google e utilizzate in molti dei loro progetti realizzati con tale linguaggio.
Spulciando un’overview vediamo un po’ di feature, che possono tornare utili ai nostri progetti. Un esempio è l’introduzione della classe CharMatcher per manipolare caratteri all’interno di una stringa come la funzione CharMatcher.is(‘-’). Le stringhe sono sempre manipolabili con la classe Joiner, che può legare una sequenza di numeri separati da uno o più caratteri scelti con la seguente riga di codice:
-
String s = Joiner.on(", ").join(numbers);
Per la separazione di stringe troviamo la classe Splitter in grado di separare parti di stringa da un testo complesso molto meglio di quanto faccia la funzione split() di Java:
-
Iterable<String> pieces =
-
Splitter.on(',').split("trivial,example")
Per ciò che riguarda l’I/O, le classi ByteStreams, CharSequence e Files promettono di leggere le righe di un file in modo molto stringato. Sotto infatti vediamo un esempio di routine in grado di contare le righe di un file:
-
int count = Files.readLines(
-
new File("/path/to/file"),
-
Charsets.UTF_8,
-
new LineProcessor<Integer>() {
-
int count = 0;
-
public boolean processLine(String line) {
-
count++;
-
}
-
public Integer getResult() { return count; }
-
});
Anche le primitive non sono esenti da novità con l’introduzione di classi come Ints, Longs o Bytes
.
-
int[] nums = ...;
-
List<Integer> list = Ints.asList(nums);
In attesa della versione 1.0, il rimando è ai javadoc ufficiali.
Guava, una collezione di librerie Java da Google
ottobre 8th, 2009
1 Comment
CodeRun è un IDE per sviluppare applicazioni ASP.NET, C#, PHP, JavaScript, HTML, CSS, Silverlight e WPF. Non è la classica applicazione da installare sulla propria macchina e da avviare all’occorrenza ma un servizio online che permette di scrivere applicazioni utilizzando il proprio browser internet. Sì, stiamo parlando proprio di un IDE online, con tanto di editor, di gestione della solution, di debug e di Error List. Si chiama CodeRun ed è un servizio totalmente gratuito. Trovate tutte le sue caratteristiche più salienti su questa pagina, mentre qui potete avviare direttamente l’IDE. Davvero interessante!
CodeRun, per programmare online
giugno 26th, 2009
1 Comment
Ajax è una tecnica di programmazione che consente lo sviluppo di RIA (Rich Internet Application).
Le RIA sono applicazioni web caratterizzate da grande interattività e velocità di esecuzione.
L’elaborazione dei dati avviene a livello client (browser) e le chiamate al server avvengono in “background” in modo asincrono (Ajax sta per Asynchronous JavaScript and XML).
Cosa significa in parole povere che lo scambio dati tra client e server avviene in background?
Vuol dire che lo scambio dati tra client e server permette l’aggiornamento dinamico della pagina web senza che quest’ultima venga ricaricata e senza dover richiamare una nuova pagina ma, soprattutto, è da sottolineare che non bisogna attendere che sia stata ultimata la richiesta per poterne effettuare altre.
Ajax non è un linguaggio di programmazione ma un insieme di tecnologie, vediamo quali sono:
- HTML/XHTML/CSS per il markup;
- DOM (Document Object Model) manipolato attraverso un linguaggio ECMAScript come JavaScript;
- XMLHttpRequest per lo scambio asincrono dei dati tra client e server;
- XML come formato per lo scambio dati. Non è obbligatorio e al suo posto si può scegliere un altro formato come JSON o anche semplice testo.
Le applicazioni web che fanno uso di Ajax necessitano di browser di ultima generazione che supportino tale tecnologia.
Tutti i principali browser come FireFox, Internet Explorer, Google Chrome, Opera e Safari supportano Ajax ma è buona norma testare i propri applicativi per verificare la compatibilità.
giugno 25th, 2009
1 Comment
Matt Snider ha scritto sul suo blog un interessante articolo in cui espone alcuni consigli utili ad ottimizzare la compressione dei file Javascript. Quello di comprimere i file Javascript è un compito comune, ma occorre eseguirlo nel migliore dei modi. Ecco dunque i consigli di Matt.
Usare meno “var”
Come sappiamo, per dichiarare una variabile occorre usare la keyword var, ma per gruppi di variabili, è consigliabile usarla una sola volta e raggruppare una lista di nomi:
view plaincopy to clipboardprint?
1. // tante var
2. var v1 = 1;
3. var v2 = {};
4. var v3 = function() {
5. // function code
6. };
7.
8. // una var
9. var v1 = 1,
10. v2 = {},
11. v3 = function() {
12. // function code
13. };
// tante var
var v1 = 1;
var v2 = {};
var v3 = function() {
// function code
};
// una var
var v1 = 1,
v2 = {},
v3 = function() {
// function code
};
Usare shortuct pointers per i namespace prolissi
giugno 25th, 2009
1 Comment
Che i form siano un elemento di criticità nel contesto di un sito non lo scopriamo oggi e non mancano approfondite analisi svolte con il metodo dell’eyetracking che hanno messo in risalto i fattori più problematici.
Sempre basato sul tracciamento oculare è lo studio recentemente svolto da CXPartners. Sotto esame il comportamento di un gruppo di utenti alle prese con i moduli di registrazione di eBay, Yahoo Mail, GMail e Hotmail.
La sintesi dei risultati consiste in 10 linee guida. Le label? L’ideale è posizionarle verticalmente rispetto al campo corrispondente e quando ciò non sia possibile è consigliabile piazzarle, ben evidenziate in grassetto, sul lato sinistro. Evitare poi di distribuire i campi su più di una colonna; per situazioni in cui si inseriscano due input di testo sulla stessa riga (classico il caso della coppia nome/cognome) è opportuno fare in modo che siano ben ravvicinati e che siano raggruppati sotto una sola label.
Interessante poi l’osservazione sui campi obbligatori. Il consiglio, in base alle osservazioni svolte, è di non usare l’asterisco come indicazione di una compilazione obbligatoria, ma di rendere esplicito il fatto che un campo è opzionale attraverso un’indicazione testuale.
Fonte: Uno studio sull’usabilità dei form
giugno 25th, 2009
4 Comments
In questo articolo esamineremo e utilizzaremo la libreria open source Skype4Java, per interagire con Skype, uno dei programmi VoIP più diffusi al mondo. Questa libreria può essere concettualmente suddivisa in due parti: la prima, contenente le classi e le interfacce Java utilizzabili dal programmatore, e la seconda che comprende le librerie native, richiamate tramite tecnologia JNI (Java Native Interface), per la comunicazione a basso livello con il client Skype.
È possibile scarircare la libreria e la documentazione del progetto dal sito ufficiale (https://developer.skype.com/wiki/Java_API).
Skype4Java ci permette è possibile effettuare moltissime operazioni, tra cui:
- Visualizzare e modificare le impostazioni del client (lingua, sfondi, proprietà)
- Visualizzare, aggiungere, modificare ed eliminare i contatti ed i gruppi
- Gestire il proprio profilo
- Avviare una sessione voce
- Avviare una sessione di chat
- Inviare SMS
La classe principale della libreria è com.skype.Skype. Questa classe ci fornisce numerosi metodi statici che ci permettono di recuperare moltissime informazioni: versione installata del client, lista dei gruppi, lista dei contatti, informazioni relative ai profili dei nostri contatti, e molte altre informazioni.
giugno 24th, 2009
3 Comments
A volte nasce l’esigenza di utilizzare una funzione che ritorna un cursore. Basti pensare ad un package centralizzato che gestisce funzionalita’ comuni. Il problema nasce nel momento in cui si voglia fare manutenzione al package comune senza dover modificare chi lo utilizza. Come dobbiamo comportarci con i tipi? Come definiamo la variabile che contiene il cursore di ritorno dalla funzione se tale cursore e’ una join di piu’ tabelle (quindi non possimo fare nome_tabella%rowtype), puo’ variare (per evoluzioni/correzioni) ed e’ dentro una funzione (quindi non possimo fare nome_cursore%rowtype)?
La risposta in breve e’: basta definire un tipo che sara’ il tipo della variabile che conterra’ il cursore e lo stesso tipo sara’ il tipo di ritorno della funzione. Nello specifico:
nell’header del PACKAGE comune definiamo un tipo record:
- TYPE ty_tipo_ritorno_rec IS RECORD (
- nome varchar2(100),
- cognome varchar2(100),
- dt_nasc date,
- dt_ult_mod date
- );