Monday, March 4, 2019

JPL Spice Toolkit, Java, JNA - come utilizzare la libreria nativa libcspice.so in ambiente Java

Sono due anni che prometto di occuparmi di domificazione e ogni volta trovo una scusa per rinviare. Sarà che non sento molto il problema, sarà che ce n'è fin troppi di sistemi di domificazione, sarà che il più usato (Placidus) ha un comportamento degenere alle latitudini estreme, per un motivo o per l'altro trovo sempre qualcos'altro di cui occuparmi.

Da qualche giorno sto pasticciando con JAVA (vi ricordo che non sono un professionista né dell'informatica né dell'astrologia), l'ho usato un po' in passato per ambienti desktop e un po' per creare qualcosa per Android. Mi chiedevo se era possibile usare una libreria nativa come la libreria dinamica libcspice.so che avevo compilato qualche post addietro, in piattaforma JAVA, un po' come abbiamo fatto con la libreria ctypes di Python.

Il metodo effettivamente esiste, anzi ne esiste più di uno, c'è SWIG, c'è JNI, ma poi ho cominciato a usare JNA e ha funzionato abbastanza presto. Ho, pertanto, deciso di scrivere un piccolo tutorial su JNA, visto che quello che si trova in giro, anche in ambienti seri come Stack Overflow è poco più di Hello World. (per inciso, se un giorno scoppierà una rivoluzione, sarà per l'esasperazione dei programmatori che si trovano sempre un HelloWorld inutile ogni volta che cercano qualche informazione sul web).

Se andate indietro di qualche post e rileggete quello che ho scritto su ctypes, vi renderete conto che è una libreria non di immediata comprensione, ma che, una volta imparate le basi, diventa estremamente soddisfacente. La stessa cosa vale per JNA, interfaccia in puro linguaggio JAVA per il binding di funzioni nascoste in una libreria di sistema, sia essa una DLL di Windows o una SO di Linux. Se avrete la pazienza di seguirmi, ho qualche piccolo trucco da esporre in chiaro.

Per rendere le cose più semplici, partirò, come ho fatto per Python ctypes, con il call di costanti presenti nel JPL toolkit e aggiungerò progressivamente delle chiamate a funzioni, facendovi partecipi di questo accostamento iniziale a JNA. Mi perdonerete se l'approccio potrà sembrare poco professionale, ma, ripeto, sono un programmatore amatoriale.

Al prossimo post, penso di scriverlo a giorni, le mie routine sono sufficientemente mature per una breve esposizione. A presto.

No comments:

Post a Comment

How to create a virtual linux machine with qemu under Debian or Ubuntu with near native graphics performance

It's been a long time since my latest post. I know, I'm lazy. But every now and then I like to publish something that other people c...