Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Что минимально нужно знать разработчику о JavaBean
В чем суть архитектуры JavaBean

Для тех, кто уже программирует на Delphi или Visual Basic, суть та же: написание повторно используемых компонентов и сборка из них готовых программ, как из первичных строительных блоков.
Совокупность компонентов, выбираемых из специального контейнера (обычно, лента меню в RAD-системах), может включать набор простейших кнопок, текстовых скроллинговых (имеющих полосы прокрутки) полей и окон со списками или более сложные компоненты, такие как календарь или даже электронная таблица (рис. 2.1, 2.2).

В традиционных языках программирования имеются специальные средства для создания таких компонентов, например, инструменты Visual Basic Extension (VBX), "языково-независимые" элементы OLE Custom Control (OCX), специальные средства в ОС Unix — toolkits и widgets.
Однако зерна черного кофе JavaBeans — в просторечии "бинсы" или даже просто Бобы, имеют мост к элементам ActiveX и могут вкладывать себя в эту технологию.
JavaBeans Bridge for ActiveX обеспечивает пользователей всех продуктов, использующих технологию ActiveX, например, таких как Word, Visual Basic, Delphi и др., выступающих как полноценные OLE/COM/ActiveX-контейнеры, возможностью встраивать и использовать переносимые JavaBean- компоненты точно так же, как если бы они были родными ActiveX- элементами.

Специальная графическая утилита записывает в OLE-формате библиотечную и регистровую информацию о выбранном JavaBean, т. е. как бы вводит его в семью OCX-элементов.

Bean может действовать как сервер OLE/COM/ActiveX, т. е. любой его метод может быть вызван из Visual Basic или Delphi. В то же время и сам Bean способен реагировать на события, поступающие из OLE/COM/ActiveX-контейнера. Например, он может обрабатывать события, инициированные в языке сценариев Visual Basic Script (VBScript).

Для программистов это означает, что они смогут пополнять свои большие, написанные, к примеру, на Visual Basic или Delphi приложения, модулями на Java, если они оформлены как JavaBean. Программист может вообще не задумываться, каким образом этот модуль сделан, просто он будет использовать в своих целях его свойства и методы. Парадигма программирования расширяется еще и тем, что JavaBean имеют много других замечательных особенностей.

 

Рассмотрим их по порядку.

Начнем с того, что JavaBean является надстройкой над традиционной Java-технологией, хотя ни в чем ей не противоречит и использует только Java-конструкции, синтаксис и семантику Java-классов и интерфейсов. Однако JavaBean — это не просто библиотеки классов, — компоненты могут иметь изменяемые свойства, наборы методов и порождать события.

Событийная модель в компонентах очень изощренная. Например, изменение свойств какого-либо компонента может служить источником события и об этом извещаются другие компоненты, в том случае, если они зарегистрировались на обработку этого события в качестве подписчиков. Само извещение иногда называют распространением события и при этом у объектов подписчиков вызывается специальный метод обработки события. Самое интересное заключается в том, что всегда можно выяснить, что может и чего не может тот или иной компонент.

Компонент обязан афишировать свои характеристики, в которые входят:
- методы, которые можно вызывать;
- свойства, которые можно изменять;
- события, которые можно обрабатывать.

 

Выяснение данных характеристик со стороны других компонентов называется интроспекцией. В архитектуре Java эти методы были реализованы изначально и заключены в базовый класс java.iang.reflect. Тем не менее в архитектуре JavaBean существуют дополнительные классы Beaninfo и introspector.

 

Интересно отметить, что немного времени спустя после опубликования стандартов на спецификации JavaBean сразу стали появляться системы программирования на Java (например, Visual Age фирмы IBM), которые предлагают разработчикам графические средства программирования для построения собственных событийных моделей и управления взаимодействием  компонентов на основе JavaBean.

Это очень важно, если учитывать еще и то обстоятельство, что хотя в базовой концепции JavaBean описывается только локальное взаимодействие компонентов в пределах одной виртуальной Java- машины, на самом деле подразумевается, что эти компоненты могут находиться где угодно и что они могут взаимодействовать друг с другом по протоколу RMI или CORBA.

Графическое программирование применяется для того, чтобы минимизировать, а в идеале вообще исключить ручное написание кода и включение его в программу при помощи текстового редактора. Вместо этого используются чисто графические наглядные средства, которые связывают схематические изображения компонентов и определяют их реакцию на то или иное событие с помощью задания свойств или вызова нужных методов.

На рис. 2.3 изображено, как при помощи графических средств программируются функции компонента "Калькулятор". Выбор событий и действий над ними осуществляется из предлагаемого списка. Исходный код на Java генерируется автоматически.

Однако одним визуальным программированием, естественно, не исчерпываются возможности JavaBean. Это всего лишь иллюстрация их вероятных областей применения. Как уже говорилось, серверы баз данных могут выступать в качестве контейнеров JavaBean, предоставляя пользователям свои объекты с афишируемыми функциями, тесно связанными с данными и способами их извлечения и обработки.

Представляете, какие возможности открываются программистам и проектировщикам логических моделей баз данных и алгоритмов, связанных с данными?

Конкретным же пользователям можно предложить очень простой интуитивный интерфейс для самых невероятных запросов, включая и аналитические. В базах данных, благодаря JavaBeans, теперь могут сохраняться разнообразные данные, в том числе и самых непредсказуемых типов. В этом смысле на первый план выступает проблема подготовки специалистов, способных усвоить и найти применение этим поистине безграничным возможностям.

Проектировщики должны начать мыслить в совершенно иных категориях и других, непривычных системах координат. Это очень трудно. Поэтому главная роль в будущем будет принадлежать системному аналитику, системному проектировщику, а не программисту. Это хорошо понимали еще в 60-е годы создатели первых операционных систем, которые называли себя системными архитекторами.

В книге "Как создаются и разрабатываются большие системы" одного из создателей памятника человеческому гению — операционной системы IBM OS/360 — Брукса-младшего приводится замечательное высказывание. Автор говорит о том, что он дал бы миллион долларов тому, кто изобрел идею часов — циферблат и стрелки, заключенные в металлический корпус с прикрепленным к нему ремешком, и всего только 100 тысяч долларов тому, кто привел этот механизм в действие, т. е. изготовил и соединил вместе все шестеренки, пружинки, оси и т. д. Программирование никогда не должно становиться самоцелью, это всего лишь средство. Компонентная архитектура JavaBeans предполагает именно такой подход к программированию.

Идея часов — это пример истинной компонентной модели с тремя основными компонентами: корпус, циферблат и стрелки, и она доказывает, что никогда нечто не возникает из ничего. Все мы, в той или иной мере являемся наследниками идей, изложенных в книгах Брукса, Дейкстры, Йодана.

 

Какие еще возможности предлагает компонентная архитектура JavaBeans?

После того как компонент разработан, он может быть сохранен на компьютере в точности так же, как и обычные файлы. Java помнит структуру объекта и вы, при желании, всегда можете воспользоваться интерфейсом java.io. seriaiizabie, чтобы получить стандартную форму графа объектов, или преобразовать компонент при помощи интерфейса Externaiizabie, когда надо представить компонент в качестве элемента другой объектной среды, например, ActiveX.

Естественно, что слишком большие компоненты можно упаковать и это даже рекомендуется для снижения трафика сети, когда вы работаете в распределенной системе. Для этого необходимо использовать стандартный Java-архиватор, который создает файлы с расширением .jar. Java-архивы могут содержать классы, изображения, справочную информацию, и к каждому архиву может быть прикреплен специальный файл manifest, описывающий содержание архива и даже связи между компонентами.

JavaBean можно создавать при помощи пакета BDK или из любой RAD- системы, поддерживающей эту технологию, например, Sybase PowerJ или Borland JBuilder. В сущности, эти системы просто облегчают работу кодировщику, предлагая ему каркасы классов различных типов, в которые он вкладывает свои коды или использует готовые компоненты JavaBean. Точно так же, как и обычные программы и апплеты, новый Bean можно создать по образцу. Нужно просто следовать определенным концептуальным правилам, хорошо изложенным в спецификации JavaBean.

В настоящее время доступна для опробования новая версия Enterprise JavaBeans, в которой детально проработаны соотношения компонент/контейнер. Теперь в единую объектную среду можно инкапсулировать совокупность компонентов, объединенных в контейнере, а с другой стороны — сам контейнер может выступать в виде родительской среды, скрывая от компонентов особенности внешней, возможно, даже и чуждой им среды и, предоставляя им для функционирования, свой контекст. Заслуживает также внимания и инициатива фирмы IBM/Lotus, предложившей фирме Sun обогатить имеющийся интерфейс JavaBean средствами для эффективного обмена данными между компонентами, получившими название InfoBus.

Ключевым понятием в этой спецификации, уже вошедшей во все новые реализации JDK, является информационная шина. Эта шина описывается классом InfoBus. Компоненты подключаются к ней и выставляют на нее данные, в том числе и структурированные, которыми они хотят обменяться с другими компонентами. Обмен происходит в асинхронном режиме и не накладывает никаких ограничений. Доступ к данным осуществляется по их именам. Методы класса InfoBus порождают экземпляры класса, т. е. информационные шины обеспечивают подключение к ним компонентов и обрабатывают события, связанные с обменом данными.

 

     
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru