2008-10-12 4 views
11

Я слушаю подкаст java posse, об этом часто говорят о компонентах (компоненты примечаний не являются (явно) объектами). Они жалуются на то, что Java не имеет компонентов и контрастирует с .NET. Компоненты, по-видимому, упрощают разработку приложений (а не только графических приложений).Что такое компонент

Я могу определить из обсуждения некоторые качества, которые имеет компонент, что-то делать с развязкой (замена одного компонента на другой - это просто вопрос сантехники). Он имеет кое-что со свойствами, он определенно имеет что-то делать с событиями и делегатами.

Так на вопросы:

./ может кто-нибудь объяснить мне, что какой-либо компонент. (и почему java beans не являются компонентами).

./ может кто-нибудь объяснить, как они помогают развитию.

./ может кто-нибудь объяснить, почему у java нет их, если они так полезны.

ответ

2

Software Engineering Radio есть эпизод точно на эту тему: http://se-radio.net/podcast/2008-02/episode-87-software-components

Основная идея заключается в том, что программный компонент может описать то, что его собственные зависимости и услуги, в виде метаданных. Я не знаю, почему вы, возможно, слышали, что Java не имеет компонентов, поскольку вы можете себе представить архитектуру Java, где компоненты описывают себя через метаданные. Полагаю, это просто, что определение платформы Java само по себе не имеет компонентной архитектуры.

Обновление: действительно, не нужно представлять такую ​​архитектуру, потому что, как указывали другие, Java-бобы или сервлеты, безусловно, можно рассматривать как архитектуру на основе компонентов.

+0

Спасибо за указание ссылки, я обязательно посмотрю. Относительно того, почему я не думаю, что компоненты не существуют .. ну на данный момент я не совсем понимаю, что это такое, поэтому я не делаю никаких утверждений в любом случае. Спросите Джо Нуксолла, что он парень, который, похоже, хочет сказать, что они еще не существуют. – 2008-10-12 21:25:48

3

Термин компонент является одним из самых двусмысленных и переоцененных в OO.

Большинство людей согласятся с тем, что компонент состоит из группы классов, которые совместно используют один или несколько интерфейсов. Один из классов берет на себя роль «front-end», то есть реализует интерфейс, но делегирует работу другим классам внутри группы. Как вы говорите, компоненты должны быть заменены без остальной системы, зная.

Прекрасным примером компонентной архитектуры был COM. Это отличный пример, потому что он был так сильно использован и жестко определен. Но обратите внимание, что потребность в этой архитектуре была основана на негибкости модели компиляции и развертывания C++.

В Java вы можете сделать очень много для класса, не нарушая бинарную совместимость с остальной частью системы. Таким образом, нет необходимости создавать жесткие, основанные на компонентах архитектуры. Но все зависит от того, как вы определяете этот термин, например, любой проект, построенный с использованием инъекции зависимостей, может рассчитываться как «компонентный».

0

Я не знаю компонентов .NET, особенно из Java POV, я бы сказал, что компонент - это какой-то функциональный блок, который должен иметь определенный интерфейс/принцип использования. Хотя Java не имеет компонентов в качестве языковой концепции, в Java есть компоненты IMHO. Технические компоненты были бы например .:

  • EJBs
  • Сервлеты

Функциональные компоненты были бы, например,:

  • Автоматическое обновление для приложения
  • механизм Формула, которая позволяет расчеты на модели данных

архитектурные компоненты могут быть JAR-файлы или OSGi расслоения.

Конечно, всегда есть место для интерпретации;)

1

Это зависит от того, что вы подразумеваете под «компонентом». Этот термин может означать много разных вещей во многих разных контекстах, поэтому он может легко запутываться. С учетом сказанного, вот мое понимание предмета:

Компонент отличается от объекта (хотя объекты часто используются для представления и сборки компонентов). Разница заключается в нескольких вещах:

  1. Объекты, как правило, просто «вещи», тогда как компоненты являются актерами. Разница заключается в том, что компонент является частью процесса, а объект представляет собой абстрактную идею.
  2. Компоненты помогают обеспечить повторное использование кода и возможность подключения, поскольку они в основном небольшие «подпрограммы» (или иногда программы сами по себе), которые идеально подходят для работы с другими компонентами.
  3. Вы склонны видеть компоненты больше в системах обмена сообщениями «ничего общего», таких как Erlang или Kamaelia, главным образом потому, что эти типы фреймворков, как правило, лучше всего подходят для компонентно-ориентированного проектирования.

Есть много хороших примеров компонентно-ориентированного дизайна, но моим первым выбором будет UNIX. Основная идея UNIX заключается в том, что это скорее набор небольших программ, предназначенных для совместной работы, а не состоящий из нескольких монолитных программ.

1

Программное обеспечение поставляется в нескольких группировках. Вот куски Java.

  • Заявления.
  • Функции метода. Несколько операторов.
  • Класс. Несколько атрибутов и функции метода.
  • Файл. Один или несколько классов. Один класс - это открытый класс в файле, другие классы скрыты в файле.
  • Пакет. Несколько классов. Они образуют иерархию.

«Компонент», «Слой», «Ярус» и другие философские группировки - как правило - условные. Среда VB COM имела формализм для компонентов. Все остальные рассматривают их как просто идеи.

Фасоль - это классы. Может ли быть один класс компонентом? Может быть. Компонент обычно представляет собой набор классов. Иногда всего два - формальный интерфейс и реализация.

Components поможет вам сосредоточиться на логическую группировке классов, пакеты, группировок и т.д.

Поскольку компонент фиктивный каждом языке более или менее они есть. Существует несколько языковых формализмов для компонентов. Они не нужны. Это идея или принцип, который вы используете для структурирования своего мышления.

Вы можете с некоторой осторожностью определить подход к «компонентам» с интерфейсом и метаданными и множеством других функций.

2

Хотя в начале Java понятие компонента много раз связано с компонентами Gui, общий смысл компонента в разработке программного обеспечения выходит за рамки этого понятия.

Проще говоря, компонент является частью программного обеспечения, которое может использоваться повторно. Подобно кирпичам, мы объединяем и объединяем их для создания целого приложения. Ключевым понятием программных компонентов в современных средах является Метаданные, которые описывает содержимое компонента и включает повторное использование.

В 1996 году JDK 1.0 была первой управляемой средой выполнения, предоставляющей компоненты с метаданными. В этом случае компоненты составляют .class файлов, содержащих байт-коды и метаданные. Тем не менее, и в соответствии с Спецификацией Java, a .class файл только содержит определение одного типа. Таким образом, для развертывания набора типов в качестве компонента мы можем использовать архив Jar, содержащий несколько файлов .class.

С другой стороны, на платформе .Net, которая обеспечивает ту же идею, что и многократно используемые компоненты, компонент может содержать более одного типа определения. В этом случае компонент (aka сборка в .Net) представляет собой файл .dll или .exe.

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