ilDodo ha scritto:
devo sviluppare un applicazione in JAVA che mi consenta di utilizzare dei metodi presenti in una .DLL
so che per fare ciò devo passare attraverso un ponte JNI ma ho molta confusione in testa
Qualcuno potrebbe spiegarmi il più dettagliatamente possibile come risolvere ?!
Java Native Interface permette di invocare codice nativo in librerie "dinamiche" (.dll/.so/altro a seconda del sistema operativo), tipicamente realizzate in C/C++.
Il punto fondamentale però è che la libreria dinamica non può essere una qualunque. La libreria deve essere sviluppata rispettando tutta una serie di aspetti e "convenzioni" specifiche di JNI. Poi la libreria per JNI potrà a sua volta invocare altro, ad esempio codice in librerie dinamiche di sistema o altre.
Non so che DLL hai necessità di invocare. Segui comunque questa logica:
1) Se si tratta di una libreria di sistema o comunque di una funzionalità che è "notevole"/utile o che concettualmente esiste per i vari S.O., verifica se esiste già una libreria Java che fa uso di JNI e ti semplifica il lavoro "astraendo" l'accesso a quella funzionalità.
2) Altrimenti verifica il progetto JNA (Java Native Access, cerca in rete). Ti permette di invocare funzioni in librerie dinamiche
senza dover sviluppare una DLL. In pratica fa da "ponte" verso una qualunque libreria dinamica.
3) Altrimenti ancora devi per forza lavorare a livello di JNI, sviluppando una libreria dinamica in C/C++.
Mi sembra scontato che per 2) e soprattutto 3), devi avere conoscenze molto solide su C/C++ e sulle librerie dinamiche e eventualmente anche sulle API native del S.O.