Vedo molti pacchetti Java con api, impl e jar (nome-api.jar, nome-impl.jar, nome-bundle.jar). Qualcuno potrebbe spiegare cosa significano? Sono tutti e tre necessari per l'app?Qual è lo scopo: api.jar + impl.jar + bundle.jar?
risposta
L'idea è che è possibile separare le dipendenze dell'applicazione; nel tentativo di rendere le applicazioni più portabili. L'idea è che è possibile rendere l'applicazione dipendente dallo api.jar
durante la compilazione. Quindi, quando si desidera eseguire il programma, è quindi possibile passare al vaso di implementazione appropriato (impl.jar
) e al contenitore del gruppo di risorse appropriato (bundle.jar
).
Come esempio, supponiamo che la libreria esegua alcune interazioni con il database. Scrivi il tuo codice in modo che faccia riferimento allo api.jar
. Supponiamo ora di aver bisogno di lavorare con un tipo specifico di database, ad es. MySQL: aggiungerebbe lo impl.jar
specifico per i database MySQL al classpath per farlo funzionare (se è necessario un altro database in un secondo momento, è sufficiente passare quel jar nel classpath).
Il bundle.jar
è un po 'più oscuro e non così comune. Questo potrebbe essere usato per fornire impostazioni di configurazione per la libreria. Ad esempio potrebbe essere utilizzato per fornire impostazioni specifiche della lingua, o qualche configurazione più specifica. Nel caso della libreria di database potrebbe essere che l'implementazione è progettata per tutte le versioni di MySQL e il resource bundle jar fornisce file di configurazione che gli permettono di funzionare per una specifica versione di MySQL.
Spesso:
name-api.jar
contiene solo l'interfaccia delle API.name-impl.jar
fornisce un'implementazione di tutte le interfacce in nome-api.jarname-bundle.jar
fasci tutto con tutte le classi necessarie per eseguire un'applicazione Java.
Non ho mai visto un accordo del genere.
Se il designer ha inserito l'app in tre JAR, direi che sono necessari tutti e tre.
Ma dovresti riconoscere che è solo una scelta fatta dal designer. È possibile che lui/lei possa aver appena creato un singolo JAR con tutto ciò che contiene e che tu non sia il più saggio.
sto cercando di indovinare, ma se si dovesse aprire quei vasi che ci si vede solo interfacce nel JAR API, le implementazioni di quelle interfacce nella JAR impl, e pacchetti di risorse e altri file .properties nel vaso fascio . Provalo e guarda Imparerai qualcosa.
api.jar
contiene interfacce API. Queste sono interfacce come un contratto che dovrebbe seguire l'implementazione dell'API.
impl.jar
è l'implementazione di api.jar
. Non puoi semplicemente avere lo impl.jar
senza lo api.jar
.
bundle.jar
è le risorse (se non sbaglio). Quelle sono risorse necessarie per il codice di implementazione necessario per l'esecuzione.
- 1. Qual è lo scopo di. * \\?
- 2. Qual è lo scopo dei record attivi?
- 3. Qual è lo scopo di Array.GetLowerBound (int)?
- 4. Qual è lo scopo di :: in C#?
- 5. Qual è lo scopo delle classi astratte?
- 6. Qual è lo scopo di IAsyncStateMachine.SetStateMachine?
- 7. Qual è lo scopo di riutilizzareIdentificatore?
- 8. Qual è lo scopo dell'iniz! inizializzatore disponibile?
- 9. Database Pivoting: qual è lo scopo?
- 10. Qual è lo scopo di IntentSender?
- 11. Qual è lo scopo di @EnableTransactionManagement?
- 12. Qual è lo scopo di .git/log
- 13. Qual è lo scopo dell'attributo tag NSMenuItem?
- 14. Qual è lo scopo di angular-sanitize?
- 15. Qual è lo scopo di com.sun.org.apache.xpath.internal.operations.String?
- 16. Qual è lo scopo dei file pdb?
- 17. Qual è lo scopo di java.math.MutableBigInteger?
- 18. Qual è lo scopo della classe Expression?
- 19. Qual è lo scopo di $ eq
- 20. Qual è lo scopo degli oggetti # requireNonNull
- 21. Scala: qual è lo scopo dell'override
- 22. Qual è lo scopo di HttpHeaders.TryAddWithoutValidation?
- 23. Qual è lo scopo dell'intestazione features.h?
- 24. Qual è lo scopo di Microsoft.Net.Compilers?
- 25. php umask (0) qual è lo scopo
- 26. Qual è lo scopo di requestWindowFeature()?
- 27. Qual è lo scopo del controllo VisitorIdentification?
- 28. Qual è lo scopo dell'annotazione @Override?
- 29. Qual è lo scopo del file Manifest
- 30. Qual è lo scopo dell'hack * CSS?