Ciao a tutti
Qualcuno ha mai utilizzato codice nativo java (JNI)...
Come funziona?
E' vero che si possono utilizzare porte USB, Paralle, etc etc come se il programma fosse scritto in C??
Grazie![]()
Ciao a tutti
Qualcuno ha mai utilizzato codice nativo java (JNI)...
Come funziona?
E' vero che si possono utilizzare porte USB, Paralle, etc etc come se il programma fosse scritto in C??
Grazie![]()
il programma lo scrivi in C, fai una DLL in C/C++ apposita che Java richiama. Praticamente tutto java si basa su questo concetto: viene astratta un'operazione che ha lo stesso nome codice nativo diverso, in questo modo l'interfaccia di programmazione resta la stessa ma la parte nativa cambia da JVM a JVM che è adatta al sistema operativo.
Qui hai un esempio, usare JNI in C++ per interfacciarsi alle api win32 adatte a gestire il mouse da java: http://www.pierotofy.it/pages/appunt...ouse_con_Java/
![]()
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)
ciao grazie mille per la risposta...
Ho letto la guida, ma non vedo neessuna DLL, solo file .h
Sbaglio?
Il precedimento sarebbe:
1)Creo un file java che richiama tramite System.loadLibrary("Mouse"); il programma C++ creato
2)La compilo, e poi la compilo con il commando javah, che restituisce una libreria .h che consente a java e C++ di interagire
3)Creare un file C++, quindi nativo che fa le operazioni che richiede il file java
Giusto? O non ho capito una mazza???![]()
Come si fanno a conoscere questi metodi nativi?
Grazie ancora![]()
System.loadLibrary("Mouse");
Mouse è la dll, l'estensione la aggiunge la JVM a seconda del sistema operativo in cui si trova; il file .cpp include il file .h generato da javah(più gli altri necessari a fare ciò che ti serve), poi lo compili in modalità Dynamic Linking Libraries, così ottieni una dll.
Qui puoi scaricare l'esempio: http://www.pierotofy.it/data/program...Java_Win32.zip
![]()
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)
asp asp!!!
Dunque io devo compilare il sorgente C++ (no quello che ha tirato fuori java), in modo da farlo diventare una DLL?
Per linux invece, che non esistono le DLL?
Compilo il file cpp che ho fatto normalmente???
Grazie
per linux basta che crei una libreria se non ricordo male .a, (devi passare i giusti parametri al gcc, non so quali però), fatto questo tieni dentro la cartella il file Mouse.dll e Mouse.a, quindi loadLibrary chiamerà "Mouse" e se stai su linux aggiunge solo .a, su windows .dll.
Ovviamente il codice C++ deve assere adatto a linux, quindi le api win32 non le puoi usre per dire.
Il file .h generato da javah contiene solo la firma dei metodi da usare, il corpo lo scrivi tu nel file .cpp o .c.
![]()
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)
ok perfetto!
Ma nel codice java, le funzioni SetCursorPos e ClickPoint, fanno parte delle api di windows? O li ci potevo mettere qualsiasi nome?
L'ultima cosa, dove si possono vedere tutte queste funzioni native?
Grazie![]()
qualsiasi nome.Ma nel codice java, le funzioni SetCursorPos e ClickPoint, fanno parte delle api di windows? O li ci potevo mettere qualsiasi nome?
ti riferisci alla api win32? le trovi sull'MSDN nella sezione win32 and COM: http://msdn.microsoft.com/library/L'ultima cosa, dove si possono vedere tutte queste funzioni native?
Su altri sistemi devi imparare le loro system call.
![]()
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)
oddio, qualsiasi nome? E come si fa a far riferimento a quelle api?Originariamente inviato da netarrow
qualsiasi nome.
ti riferisci alla api win32? le trovi sull'MSDN nella sezione win32 and COM: http://msdn.microsoft.com/library/
Su altri sistemi devi imparare le loro system call.
![]()
Non hanno un nome a cui bisogna riferirsi??? :master:
GRAZIE PER LA PAZIENZA!!![]()
C'è un problemino![]()
Su windows nessun problema, ma su linux???
Non esistono le DLL, come si potrebbe fare?
GRAZIE![]()