Компоненты Java применяются в основном по двум причинам: из-за возможности многократного использования большим числом приложений и благодаря интерфейсам. Правильное применение интерфейсов может принести большую пользу, позволяя, например, строить самодостаточные единицы пли одновременно и параллельно разрабатывать приложения. Компоненты лучше всего применять в процессе сборки приложений. Компонентный подход должен быть не революционным, а эволюционным. Собирая, т.е. объединяя заранее заготовленные компоненты, разработчики могут создавать новые конструкции.
Сборные системы, состоящие из компонентов, называются программными компонентами (software components). "Программный компонент — это структурная единица с заранее оговоренными интерфейсами и исключительно явными контекстными зависимостями. Он может быть установлен автономно и включен в конструкцию посторонними" [European Conference on Object-Oriented Programming (ECOOP), 1996].
Изначально программные компоненты рассматривались но аналогии с аппаратными компонентами и микросхемами. Они совершенно самостоятельны, т.е. независимы от среды и приложения и при построении работоспособной системы взаимодействуют друг с другом посредством методов (операций), заявленных в их интерфейсах. Подробнее о программных компонентах мы поговорим в главе 5 при построении компонентного приложения, состоящего из трех зерен Enterprise JavaBeans.