Visualizzazione dei risultati da 1 a 10 su 19

Hybrid View

  1. #1
    Quote Originariamente inviata da federico.massim Visualizza il messaggio
    Salve,
    Per un progetto avrei bisogno di importare dinamicamente dei jar o file .class .
    Dato che sono molto interessato alle performance dell'applicazione, volevo sapere se il fatto di importare delle classi a runtime piuttosto che inserirle nel classpath poteva portare a una riduzione di prestazione ?

    Eventualmente, quale sarebbe il modo migliore di importare i jar nel codice, sempre avendo come obbiettivo quello di massimizzare la prestazione?

    Grazie in anticipo
    Federico.
    Normalmente quello che faccio e' creare un loader, cosi' da mettere i jar/class che voglio caricare in un file di proprieta' e caricarli all'avvio dell'applicazione.
    Pero' ovviamente potrei caricare questi file in qualsiasi altro momento, ad libitum

    codice:
        private URLClassLoader addJars(Properties props) throws MalformedURLException
        {
            int jarCount = Integer.parseInt(props.getProperty("jarfiles.count"));
            URL[] vectURL = new URL[jarCount];
            for (int i = 0; i < jarCount; i++)
            {
                String filename = props.getProperty("jarfile" + (i+1) + ".filename");
                URL u = new File(filename).toURI().toURL();
                vectURL[i] = u;
            }
    
            URLClassLoader loader = new URLClassLoader(vectURL);
            return loader;
        }
    Ti ritorna un class loader che puoi usare per istanziare le classi che ti interessano.
    Le prestazioni ovviamente non cambiano rispetto a mettere i .jar nel CLASSPATH

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Quote Originariamente inviata da sottovento Visualizza il messaggio
    Le prestazioni ovviamente non cambiano rispetto a mettere i .jar nel CLASSPATH
    non confondente il loader con il concetto di classpath.
    Il class loader è l'elemento a cui viene chiesto di CARICARE all'interno della JVM la classe che a te serve.
    Il classpath è il percorso all'interno del quale il classloader va alla ricerca dei jar di interesse. Tipicamente è una stringa con una serie di path a directory in cui ci sono n jar distinti.
    Quando parli di mettere i jar e caricarli, stai dicendo in un linguaggio molto molto naturale che a PRIORI fai il caricamento di una classe contenuta in un jar che sta nel classpath all'interno della JVM, non che metti fisicamente qualcosa dentro qualcos'altro.
    RTFM Read That F*** Manual!!!

  3. #3
    Quote Originariamente inviata da valia Visualizza il messaggio
    non confondente il loader con il concetto di classpath.
    Cerchero' di non confonderlo

    Quote Originariamente inviata da valia Visualizza il messaggio
    Il class loader è l'elemento a cui viene chiesto di CARICARE all'interno della JVM la classe che a te serve.
    Il classpath è il percorso all'interno del quale il classloader va alla ricerca dei jar di interesse. Tipicamente è una stringa con una serie di path a directory in cui ci sono n jar distinti.
    Quando parli di mettere i jar e caricarli, stai dicendo in un linguaggio molto molto naturale che a PRIORI fai il caricamento di una classe contenuta in un jar che sta nel classpath all'interno della JVM, non che metti fisicamente qualcosa dentro qualcos'altro.
    Non ho molto capito. Ad ogni modo credevo che la domanda di federico.massim fosse chiara: ho un .jar che non e' nel CLASSPATH e la mia applicazione per esempio vuole eseguire del codice ivi contenuto. Il .jar e' fornito runtime e potrebbe essere diverso ad ogni esecuzione. Come fare? Mi sono limitato a rispondere a questa domanda. Che poi, e' alla base del meccanismo dei plug in, giusto? (quanto meno faccio cosi', quando mi servono)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.