Java Native Interface: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti.
 
(2 versioni intermedie di 2 utenti non mostrate)
Riga 4:
 
== Utilizzo di JNI ==
Una classe può definire un numero arbitrario di metodi implementati in codice nativo. Per far questo, nel sorgente della classe il metodo deve avere la parola-chiave <code>native</code> e deve avere un [[punto e virgola]] al posto del corpo del metodo.<ref name="mokabyte"/> Ad esempio:
 
<sourcesyntaxhighlight lang="java">
public class Classe {
Riga 14:
}
</syntaxhighlight>
</source>
 
Come si evince dall'esempio, non è necessario che la classe abbia ''solo'' metodi nativi.
Riga 21:
 
=== Uso dei metodi nativi ===
In genere, i metodi nativi vengono mantenuti privati dalla classe che li definisce, mentre dei metodi pubblici o <code>protected</code> (invocati dai [[client]] o dalle sottoclassi) fungono da ''[[wrapper]]''. In accordo con il principio dell'incapsulamento delle informazioni, questo consente di definire un'interfaccia per la classe che sia completamente indipendente dall'uso del codice nativo; in questo modo, sarà più facile in futuro modificare il comportamento della classe mantenendo un'interfaccia nativa [[retrcompatibilitàretrocompatibilità|retrocompatibile]] con le librerie native già implementate.
 
== Applicazioni pratiche ==
Riga 28:
L'uso del JNI si rende inoltre necessario quando l'implementazione di una certa funzionalità nel programma dipende dal sistema operativo in uso a ''run-time'' e non è presente nelle librerie standard di Java. Il programma risultante non può essere definito "100%-Java", in quanto esso fa direttamente uso di codice nativo.
 
Nell'implementazione Sun delle librerie standard della [[piattaforma Java]], sono molti i metodi ''native''. L'implementazione di questi metodi è presente solo nella [[macchina virtuale Java|macchina virtuale]] che verrà utilizzata a [[run-time]].
 
==JNI e portabilità==