Sunday, October 09, 2005

Java... goes free

In questi giorni ho guardato con maggiore attenzione gcj. Dopo essermi documentato un po' e aver focalizzato i pregi maggiori (risparmio di memoria, amento in velocità, è free-software!) nonchè i difetti più visibili (Non tutte le classi di J2SE sono implementate: in particolare c'è uno scarso supporto per AWT e SWING) mi sono messo a giocarci un po'.

Un primo test di compilazione nativa su un programmino abbastanza stupido (connessioni http ed un minimo di parsing) ha dato esito positivo senza apparenti problemi. Galvanizzato da questo successo ho subito provato con qualcosa di più complesso: un HelloWorld grafico utilizzando le SWT.

Qui le cose non sono andate altrettanto bene, infatti mi sono bloccato alla fase di compilazione:

nivox@host:~/Test/$gcj --classpath $SWT_HOME/swt.jar -c test/swt/Test.java

nivox@host:~/Test/$ ls
test Test.o

nivox@host:~/Test/$gcj --main=Test -lswt-gtk-3138
ccDiLjH7.i:(.text+0x2e): undefined reference to `Test::class$'
ccDiLjH7.i:(.text+0x32): undefined reference to `Test::class$'
Test.o: In function `test::swt::Test::main(JArray*)':
Test.java:(.text+0x2e): undefined reference to `org::eclipse::swt::widgets::Display::class$'
Test.java:(.text+0x32): undefined reference to `org::eclipse::swt::widgets::Display::class$'
Test.java:(.text+0x44): undefined reference to `org::eclipse::swt::widgets::Display::Display()'
Test.java:(.text+0x52): undefined reference to `org::eclipse::swt::widgets::Shell::class$'
Test.java:(.text+0x56): undefined reference to `org::eclipse::swt::widgets::Shell::class$'
Test.java:(.text+0x70): undefined reference to `org::eclipse::swt::widgets::Shell::Shell(org::eclipse::swt::widgets::Display*)'
...

Tutto ciò è molto frustrante... stò sbagliando qualcosa, ma non capisco cosa... e purtroppo anche google non mi è stato d'aiuto. Nei prossimi giorni vedrò di andare a fondo in questa faccienda.

Sono rimasto impressionato dalle potenzialità di GNU gcj e di altri progetti come GNU Classpath e Kaffe. E molto fiducioso per Apache Harmony: un progetto non ancora ufficiale della Apache Foundation (E' stato proposto a Maggio) che mira ad una implementazione libera di J2SE concentrando gli sforzi dei tre porgetti di cui sopra. Qui il blog non ufficiale del progetto: l'ultimo post è di Giugno... ma spero di avere presto buone nuove da parte di questo promettente progetto.

2 comments:

Anonymous said...

Some articles that may help:
Create native, cross-platform GUI applications

Create native, cross-platform GUI applications, revisited

Anonymous said...

Ecco un corso per certificarsi come JAVA CONSULTANT E DEVELOPER!
La società è Accademia Informatica s.r.l. e il bando è Regione Lazio. Fate un giro su http://accademiainformatica.clickmeter.com/234255.html