View Full Version : [Java] Valutazione JNA
Tamiel Longbeard
06-08-2009, 10:40
Salve ragazzi, il mio professore di reti di calcolatori mi ha assegnato un "progetto" e cioè realizzare un semplice programma che metta in luce le proprietà della libreria Java Native Access (JNA (https://jna.dev.java.net/)) che permetta di "valutare l'utilità e la bontà" della suddetta libreria, ma forse perchè non ho ben capito a cosa serve la suddetta, non idea di che applicazione realizzare.. qualcuno di voi può darmi una mano, un qualunque se pur piccolo aiuto? Grazie mille :D
https://jna.dev.java.net/
banryu79
06-08-2009, 11:32
Interessatissima sta libreria JNA, manco sapevo che esisteva :)
@Tamiel Longbeard:
In pratica consente di avere accesso alle librerie native di sistema, come ad esempio le .dll nei sistemi Windows based, senza usare direttamente JNI e quindi solo scrivendo codice Java :)
Nella pagina linkata da Rsk c'è un link a un "coso" che si chiama JNAerator ed è un tool per generare automaticamente mapping JNA alle funzioni e strutture dichiarate in un C header file.
Come idea per una qualche applicazione basta che pensi, ad esempio, a qualche funzionalità legata al sistema operativo per la quale non eiste una controparte nelle librerie standard (JDK).
Molto interessante, me la segno per darci un'occhiata più avanti appena ho tempo.
franksisca
07-08-2009, 00:11
Interessatissima sta libreria JNA, manco sapevo che esisteva :)
@Tamiel Longbeard:
In pratica consente di avere accesso alle librerie native di sistema, come ad esempio le .dll nei sistemi Windows based, senza usare direttamente JNI e quindi solo scrivendo codice Java :)
Nella pagina linkata da Rsk c'è un link a un "coso" che si chiama JNAerator ed è un tool per generare automaticamente mapping JNA alle funzioni e strutture dichiarate in un C header file.
Come idea per una qualche applicazione basta che pensi, ad esempio, a qualche funzionalità legata al sistema operativo per la quale non eiste una controparte nelle librerie standard (JDK).
Molto interessante, me la segno per darci un'occhiata più avanti appena ho tempo.
***
nuovoUtente86
07-08-2009, 00:46
Non conosco questa libreria, però se consente l' utilizzo di api native di sistema potresti simulare un' applicazione client server con supporto multithread.
Tamiel Longbeard
08-08-2009, 15:14
Innanzitutto grazie a tutti per le risposte, mi sono tral'altro accorto di aver scritto malissimo la domanda, infatti quello che intendevo dire è che non conosco abbastanza (per non dire che non le conosco affatto) le dll e soci per inventarmi qualcosa da solo. In ogni caso grazie per i suggerimenti, ce ne sono altri :D ?
http://www.tutorialspoint.com/dll/index.htm
https://jna.dev.java.net/ questo si che é un contributo utile, hai ricopiato in un tuo post un link che era giá presente nel post originale :asd:
hai bisogno di alzare il post counter? :D
Non conosco questa libreria, però se consente l' utilizzo di api native di sistema potresti simulare un' applicazione client server con supporto multithread. fattibilissimo anche in Java puro.
io suggerirei piuttosto qualcosa che usi le cosiddette layered windows:
http://msdn.microsoft.com/en-us/library/ms997507.aspx
http://msdn.microsoft.com/en-us/library/ms632599(VS.85).aspx#layered
in Java puro infatti (cioé in Swing) non é possibile realizzare shaped windows o finestre con un canale alpha. guarda caso infatti uno degli esempi disponibili sulla pagina tramite WebStart é proprio un orologio visualizzato in una finestra rotonda e semitrasparente. dovresti fare qualcosa di analogo IMHO.
questo si che é un contributo utile, hai ricopiato in un tuo post un link che era giá presente nel post originale :asd:
hai bisogno di alzare il post counter? :D
Rilassati non lo avevo mica visto.
nuovoUtente86
10-08-2009, 13:13
questo si che é un contributo utile, hai ricopiato in un tuo post un link che era giá presente nel post originale :asd:
hai bisogno di alzare il post counter? :D
fattibilissimo anche in Java puro.
io suggerirei piuttosto qualcosa che usi le cosiddette layered windows:
http://msdn.microsoft.com/en-us/library/ms997507.aspx
http://msdn.microsoft.com/en-us/library/ms632599(VS.85).aspx#layered
in Java puro infatti (cioé in Swing) non é possibile realizzare shaped windows o finestre con un canale alpha. guarda caso infatti uno degli esempi disponibili sulla pagina tramite WebStart é proprio un orologio visualizzato in una finestra rotonda e semitrasparente. dovresti fare qualcosa di analogo IMHO.
Deve fare l' esame di reti e non di programmazione grafica. Inoltre per quanto la gestione dei socket sia possibilissima anche in Java puro, si eviterebbe eccessivo overhead utilizzando le librerie native.
Deve fare l' esame di reti e non di programmazione grafica. allora suggerirei un traceroute, credo che non sia possibile farlo in puro Java.
Inoltre per quanto la gestione dei socket sia possibilissima anche in Java puro, si eviterebbe eccessivo overhead utilizzando le librerie native. di quale overhead stiamo parlando?
in Java puro infatti (cioé in Swing) non é possibile realizzare shaped windows o finestre con un canale alpha.
Negativo.
DanieleC88
11-08-2009, 18:58
Negativo.
http://today.java.net/pub/a/today/2008/03/18/translucent-and-shaped-swing-windows.html
:yeah:
Ehhh, vecchio segugio! :D
Negativo. fa uso di non-core APIs introdotte in aggiornamenti recenti di Java 6 (a partire dal 10 mi pare di capire), non sapevo che esistesse questa possibilitá perché l'ultima volta che ho investigato quelle API ancora non esistevano nella versione 6 di Java :stordita:
tra l'altro l'articolo dice che probabilmente in Java 7 avrebbero cambiato collocazione e invece io continuo a non vederle nelle core APIs, a meno che non abbiano cambiato nome.
edit - buono a sapersi comunque eh! :D
nuovoUtente86
11-08-2009, 21:01
allora suggerirei un traceroute, credo che non sia possibile farlo in puro Java.
di quale overhead stiamo parlando?
Overhead non riferito a quello introdotto dall stack TCP/IP ma nell' accezione generale di non necessario, in questò caso introdotto in termini di risorsa computazionale da un linguaggio interpretrato ( o se vogliamo pseudo-compilato) e managed come Java.Se non ti piace overhead possiamo dire sovraccarico ma il succo è quello.
[...] in questò caso introdotto in termini di risorsa computazionale da un linguaggio interpretrato quale non é (non per definizione, non con la virtual machine standard).
( o se vogliamo pseudo-compilato) e "pseudo-compilato" starebbe per?
e managed come Java. e quali penalitá comporterebbe nello specifico la natura managed di Java nella realizzazione di applicazioni client/server?
Se non ti piace overhead possiamo dire sovraccarico ma il succo è quello. risparmia le tue patetiche ironie, non ti ho chiesto il significato del termine.
Tamiel Longbeard
12-08-2009, 10:38
Deve fare l' esame di reti e non di programmazione grafica. Inoltre per quanto la gestione dei socket sia possibilissima anche in Java puro, si eviterebbe eccessivo overhead utilizzando le librerie native.
Bhe il professore adesso ha cambiato ambito e ha iniziato a insegnare Java e ho visto che altri progetti che ha assegnato con le reti non centrano nemmeno volendoceli far centrare...
allora suggerirei un traceroute, credo che non sia possibile farlo in puro Java.
Ah si? Ammetto di non aver ancor visto uno straccio di codice di un traceroute però dal funzionamento teorico non mi sembrava impossibile ... ma ammetto di essere ignorante...
nuovoUtente86
12-08-2009, 12:23
quale non é (non per definizione, non con la virtual machine standard).
e "pseudo-compilato" starebbe per?
e quali penalitá comporterebbe nello specifico la natura managed di Java nella realizzazione di applicazioni client/server?
risparmia le tue patetiche ironie, non ti ho chiesto il significato del termine.
Un linguaggio è pseudo-compilato, quando dalla sua compilazione viene generato codice intermedio (nel caso di Java in bytecode)non direttamente comprensibile dall' architettura hw, ma interpretabile o eseguibile da un runtime(come la JVM).Questo livello di astrazione si paga con perdita di performance.
Un linguaggio è pseudo-compilato, quando dalla sua compilazione viene generato codice intermedio (nel caso di Java in bytecode)non direttamente comprensibile dall' architettura hw, ma interpretabile o eseguibile da un runtime(come la JVM).Questo livello di astrazione si paga con perdita di performance. si tratta di una perdita che in certi casi potrebbe essere ampiamente compensata da altre caratteristiche della piattaforma che, al contrario, incrementano la performance rispetto ad un'applicazione nativa compilata prima del deploy. alcune osservazioni:
1) il garbage collector tiene traccia della memoria allocata dinamicamente e quindi permette di rimandare la deallocazione della stessa lasciando piu CPU alle altre attivitá del programma. la memoria puó poi essere deallocata in tempi che altrimenti sarebbero stati di idle, per esempio.
2) la compilazione JIT permette di sfruttare gli instruction set specifici della CPU ospite.
3) la compilazione JIT basa le ottimizzazioni su profiling effettivo, non sul cosiddetto "guesswork".
4) al fine di ottimizzare il caricamento delle classi la HotSpot VM compila solo le porzioni di codice usate piu di una tantum.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.