si, si perde la portabilità diciamo "integrata"(termini coniati sul momento per questo contesto mi sa). Cmq non è che crei un programma, ma una libreria(le dll in windows proprio) che richiami in Java. Tutta la JVM si fonda su questo meccanismo: astrarre un'operazione che con l'interfaccia di programmazione in Java resta uguale(sia linux, windows, mac, *bsd, solaris... bhò netware o ndis2 :-) ) però il codice nativo che viene richiamato cambia.
Se esistesse nella core standard il metodo(per esempio)
toolkit.getDefaultToolkit().setWallpaper(Image img)
la JVM se è quella di windows saprà che dovrà eseguire il codice nativo presente in... mettiamo win.dll, se la JVM è quella di linux e sta usando kde in sysKde.o (nomi così eh)
Infatti quando in Java richiami la libreria non metti l'estensione, ma la JVM guarda su che sistema gira e trova sola la libreria prensente nelle cartelle del jre(aggiungendo l'ext usata dal sistema).
Un esempio su come creare un metodo nativo lo trovi negli appunti Java "gestire nativamente mouse in windows" e anche il programma già compilato nell'omonima sezione sotto sorgenti.(usa la ricerca casomai)
Ad ogni modo, il tipo di progetto(programma in background che interagisce in qualcosa col sistema operativo) non è fra i purpose di Java, si può fare, ma... diciamo che i vantaggi ottenuti non superano il lavoro fatto(IMHO).
ciao
Ultima modifica effettuata da netarrow il 08/06/2006 alle 18:34 |