J2objc: trasformare codice Java in Objective C
Features
Come precedentemente illustrato, l'obiettivo di j2objc è realizzare un'operazione di traduzione tra linguaggi: in questo caso, linguaggi di programmazione. Naturalmente quindi le feature dell'applicazione, ovvero le caratteristiche rilevanti e di interesse per gli utenti, si sostanziano nella quantità e nella qualità di elementi grammaticali e sintattici del linguaggio sorgente (Java) che possono essere tradotti nel linguaggio di destinazione (Objective C). In altre parole, j2objc è tanto più efficace quanto più si dimostra in grado di tradurre in modo affidabile da Java a Objective C ogni tipo di costrutto, compresi i più complessi e raffinati.
Dal punto di vista qualitativo, j2objc si propone di attestarsi su uno standard elevato, consentendo la traduzione automatica anche di elementi del linguaggio Java come:
- inner classes
- classi anonime
- eccezioni
- gestione dei thread
- generic types
- meccanismo della reflection
Anche i test JUnit per la verifica del software possono essere tradotti ed eseguiti tramite j2objc.
Sebbene la proposta di j2objc sia orientata alla creazione di un punto di riferimento stabile, allo stato attuale il software è ancora a metà tra la fase alpha-release e la fase beta-release, risultando quindi non esente da bug. Almeno per ora è perciò lecito attendersi qualche piccolo problema a livello di affidabilità. Da considerare però che j2objc è sviluppato da un colosso come Google, che ha senz'altro le carte in regola per creare una comunità di utenti ampia e dinamica, in grado quindi di risolvere questi piccoli problemi a mano a mano che si presentano, affinando progressivamente il software e rendendolo ancora più appetibile in prospettiva.
Valutiamo a questo punto come sia effettivamente possibile servirsi di j2objc, traducendo un programma di esempio (scritto in linguaggio Java) in Objective C.
Esempio di utilizzo
Immaginiamo di avere già scaricato j2objc e di avere a disposizione un file di nome Test.java che rappresenti un programma scritto in linguaggio Java. Esaminiamo ora le operazioni che ci consentono di tradurre tale programma in Objective C e di eseguirlo.
Per prima cosa, effettuiamo l'operazione di traduzione, digitando da riga di comando:
j2objc Test.java
A seguito di tale comando, viene creato un nuovo file di nome Test.m, che rappresenta il programma contenuto in Test.java tradotto in Objective C. Possiamo a questo punto compilare tale file con:
j2objcc -c Test.m
Creiamo così un file di nome Test.o che rappresenta lo stesso programma in codice oggetto: si tratta dell'usuale passaggio intermedio che porta da un programma realizzato in un linguaggio di programmazione di alto livello (più simile cioè al linguaggio comune che al linguaggio macchina) a un file eseguibile (cioè in un programma che, all'atto dell'esecuzione, procede a trasformare i dati in input in informazioni in output). La transizione verso il file eseguibile può essere completata per mezzo di:
j2objcc -o test Test.o
Viene così creato un file eseguibile di nome test (il nome è specificato dall'utente, di seguito al flag -o). L'esecuzione di test può essere avviata con:
./test Test
Verificheremo che il comportamento è esattamente quello indicato dal file originale Test.java. Segnaliamo infine che j2objc può anche essere integrato col popolare ambiente di sviluppo Eclipse, tramite un apposito plugin.