PDA

View Full Version : Java 8 - JNI, qualche chiarimento.


Salve94Roma
24-06-2017, 03:55
Mi servirebbe qualche chiarimento circa il JNI, l'interfaccia java nativa.

Sto studiando un pochino di java avanzato, e mi sono imbattuto nel JNI.

Ho vari dubbi, pensavo di fondere java e c\c++.

Quanto senso ha fondere codice C\C++ al java per creare metodi più efficienti?
Mi troverei un programma privo di portabilità !!!!
Allora mi chiedo, è utile solo per accedere alle funzioni specifiche di sistema operativo, tipo utilizzare i driver di un lettore di barre o una fotocamera o ha senso anche per creare parti di programma ad alta efficienza ?

Ad esempio posso realizzare 3 metodi distinti in c++, uno per Windows, uno per Linux ed uno per iOs e dire al programma principle in java, Se stai girando in windows usa questo, altrimenti .....

In pratica JNI può avere senso anche per poter realizzare il 99% una sola volta e compatible con tutte le piattaforme ed 1% di codice N volte, tante quante i sistemi operativi che voglio coprire con il mio programma ?

Mi fermo qui, in attesa di un primo chiarimento e poi eventualmente porrò altre domande alla corte e gentile attenzione.

Ringrazio anticipatamente chiunque mi aiuterà a chiarirmi le idee.

sottovento
24-06-2017, 15:36
Direi che non ha senso utilizzare jni per migliorare le prestazioni dell'applicazione. Certo, le prime jvm erano davvero lente e forse a quel tempo avrebbe avuto un senso. Ora direi proprio di no.

Come hai giustamente detto puoi usare jni principalmente per accedere ai driver, al software scritto in altri linguaggi, per implementare funzionalita' non previste nel linguaggio, ecc. ma per ottimizzare, direi che trovare un caso in cui abbia senso sia difficile