2012-03-22 2 views

ответ

6

Идея состоит в том, что вы можете отделить зависимости приложения; в попытке сделать приложения более портативными. Идея состоит в том, что вы можете сделать приложение зависимым от api.jar при компиляции. Затем, когда вы хотите запустить программу, вы можете переключить соответствующую банку реализации (impl.jar) и соответствующую банку ресурсов (bundle.jar).

В качестве примера предположим, что библиотека взаимодействует с базой данных. Вы пишете свой код, чтобы он ссылался на api.jar. Теперь предположим, что вам нужно, чтобы он работал с конкретным типом базы данных, например. MySQL - вы бы затем добавили impl.jar, который относится к базам данных MySQL, к пути к классам, чтобы заставить его работать (если вам нужна другая база данных позже - вам нужно только переключить эту банку в пути к классам).

bundle.jar немного более неясен и не так распространен. Это можно использовать для настройки конфигурации библиотеки. Например, он может использоваться для предоставления языковых настроек или для более конкретной конфигурации. В случае с библиотекой базы данных может быть реализовано, что реализация предназначена для всех версий MySQL, а набор ресурсов содержит файлы конфигурации, которые позволяют ему работать для определенной версии MySQL.

6

Часто:

  • name-api.jar содержит только интерфейс API.
  • name-impl.jar обеспечивает реализацию всех интерфейсов в имени-api.jar
  • name-bundle.jar Связки все со всеми необходимыми классами для запуска приложения Java.
-1

Я никогда не видел такого устройства.

Если дизайнер упаковал приложение в три JAR, то я бы сказал, что все три необходимы.

Но вы должны признать, что это просто выбор, сделанный дизайнером. Возможно, он мог бы создать только один JAR со всем, что было бы в нем, и вы не были бы более мудрее.

Я предполагаю, что теперь, но если вы откроете эти JAR, вы увидите только интерфейсы в JAR API, реализации этих интерфейсов в JAR-интерфейсе, а также пакеты ресурсов и другие .properties-файлы в пакете JAR , Попробуй и посмотри. Вы узнаете что-то.

1

api.jar содержит интерфейсы API. Это интерфейсы в качестве контракта, которым должна следовать реализация API.

impl.jar является реализация api.jar. Вы не можете просто иметь impl.jar без api.jar.

bundle.jar - это ресурсы (если я не ошибаюсь). Это ресурсы, необходимые для кода реализации, необходимого для запуска.

Смежные вопросы