Newsgroup: it.comp.java
Titolo: codice nativo!

Ciao a tutti,
vorrei porvi una questione, dunque diciamo che io ho una funzione in codice
nativo C e che la voglio utilizzare in un mio programma Java. Inoltre questa
funzione fa parte di una dll ma per il momento non mi interessa. Diciamo che
io voglio usare questa funzione quindi all'interno del mio programma. Per
fare ciò decido di utilizzare J/Direct. Ora la domanda che vi pongo è la
seguente:
se io ho la seguente funzione nativa:
short prova(unsigned short addr, unsigned char *buf, unsigned short n);
nel programma java la devo dichiarare nel seguente modo:
static native int prova(int addr, String buf,int n) ?
poichè in buf c'è l'output della funzione, nel programma java posso
utilizzare la variabile definita nella funzione String buf?
Qualcuno sa dove posso trovare un po di documentazione su J/Direct?
Grazie anticipatamente.
Ciao a tutti

Ciao, andrea!
Il giorno 25/05/2004 alle ore 11:25 hai scritto:
 a> vorrei porvi una questione, dunque diciamo che io ho una funzione in
 a> codice nativo C e che la voglio utilizzare in un mio programma Java.
Ok.
 a> Inoltre questa funzione fa parte di una dll ma per il momento non mi
 a> interessa.
Beh interessa eccome, visto che e' l'unico modo per farlo.
 a> Diciamo che io voglio usare questa funzione quindi all'interno del mio
 a> programma. Per fare ciň decido di utilizzare J/Direct.
J/Direct ? A quanto ne so e' una tecnologia proprietaria di Microsoft e
quindi non portabile (e oserei direi nemmeno piu' supportata vista la
diatriba Sun-Microsoft). Perche' non usi il piu' standard JNI che e' fatto
apposta ?
 a> se io ho la seguente funzione nativa:
 a> short prova(unsigned short addr, unsigned char *buf, unsigned short n);
 a> nel programma java la devo dichiarare nel seguente modo:
Meglio che dai un'occhiata a questo:
http://java.sun.com/docs/books/jni/html/jniTOC.html
Bye
-- 
There is no passion; There is serenity.
http://www.maccasoft.com

 diatriba Sun-Microsoft).
Diatriba???
Tutto risolto, al solito modo: Microsoft ha letteralmente coperto di soldi
la Sun (si parla di 900 milioni di $) e la pace magicamente è tornata.
Adesso è tutto un susseguirsi di coccole e bacetti tra i dirigenti delle due
aziende.
Per Java si prevedono tempi duri...

 Per Java si prevedono tempi duri...
fagocitazione?
-- 
artemis.alpeia();

Ciao, Tristano!
Il giorno 25/05/2004 alle ore 12:27 hai scritto:
 T> Diatriba???
 T> Tutto risolto, al solito modo: Microsoft ha letteralmente coperto di
 T> soldi la Sun (si parla di 900 milioni di $) e la pace magicamente è
 T> tornata.
Si lo so, ma cio' non toglie che J/Direct (se e' quello) e' una tecnologia
proprietaria non supportata al di fuori dell'SDK Microsoft quindi
assolutamente da evitare. JNI e' invece la tecnologia standard per i metodi
nativi.
 T> Per Java si prevedono tempi duri...
Ma dai...
Bye
-- 
Fear leads to anger, anger leads to hate, hate leads to suffering.
http://www.maccasoft.com

 fagocitazione?
si' ma con discrezione per non avere problemi con antitrust
bye
Touch

Ciao, andrea!
Il giorno 26/05/2004 alle ore 11:13 hai scritto:
 a> Perchè ho una dll che devo richiamare da un'applet e le funzioni di
 a> questa dll non rispecchiano la definizione di JNI. Mi toccerebbe
 a> riscrivere tutto il codice c delle funzioni.
Non serve riscrivere tutto il codice, basta scrivere un wrapper, cioe' una
DLL aggiuntiva che non fa altro che chiamare le funzioni dell'altra DLL
dalle funzioni JNI.
Bye
-- 
There is no death; There is the Force.
http://www.maccasoft.com


Mi potresti fare un esempio? Ti Ringrazio!


Ciao, andrea!
Il giorno 27/05/2004 alle ore 09:45 hai scritto:
 a> Mi potresti fare un esempio? Ti Ringrazio!
void funzione_jni()
{
  funzione_dll();
}
Bye
-- 



Cioč vedi se ho capito bene:
io nella mia dll per esempio ho le funzion1 select(...),print(...), ecc, nel
mio programmino java quindi mi dichiaro delle funzioni native per il mio
wrapper ad esempio: selectWrapper(), printWrapper(), ecc. A questo punto nel
mio file .c generato la funzione selectWrapper() dovra fare la seguente
cosa?
void selectWrapper(){
   select();
}
ho capito bene?


Ciao, andrea!
Il giorno 27/05/2004 alle ore 16:32 hai scritto:
 a> void selectWrapper(){
 a>    select();
 a> }
 a> ho capito bene?
Si.
