Java как центр архипелага - страница 4

стр.

достоинства,  как  масштабируемость.  Значит, необходима прямая

связь между клиентскими системами, написанными на языке Java, и

произвольными сервисами (рис. 6).

Рис. 6. Прямая связь между Java-клиентами и корпоративными сер-

верами.

Как реализовать такую связь?

В общем виде ответ очевиден - нужны  средства  для  полноценной

интеграции  Java в распределенную об®ектную среду. На серверной

стороне компания Sun Microsystems имеет соответствующую  техно-

логию  -  NEO  (NEtworked Objects, сетевые об®екты). Технология

NEO удовлетворяет спецификациям COъBA  (Common  Object  ъequest

Broker  Architecture),  являющимся промышленным стандартом. При

реализации корпоративных информационных систем с использованием

NEO наиболее естественным представляется  использование  треху-

ровневой  архитектуры  с  серверами приложений, построенными на

об®ектных принципах, на втором уровне и с базовыми и  унаследо-

ванными серверами на третьем уровне (рис. 7).

Рис.  7. Трехуровневая архитектура корпоративной информационной

системы.

К сожелению, столь общий ответ никак не  помогает  осуществлять

прямую связь между Java-клиентом и NEO-сервером. Конечно, можно

воспользоваться  стандартными средствами программирования в се-

тевой среде (а Java допускает использование библиотек, написан-

ных на C/C++, равно как и вставку машинных кодов), но если  это

было  бы  единственной возможностью, Java рисковала остаться на

уровне "оживлялок" для MS-Windows. В конце марта 1996 года ком-

пания SunSoft об®явила о появлении  нового  продукта  с  именем

Joe,  как  раз  и предназначенного для существенного облегчения

встраивания Java-клиентов в  информационные  системы  Интранет,

построенные  в трехуровневой архитектуре с использованием среды

NEO (рис. 8).

Рис. 8. Распределение ролей между Java, Joe и NEO.

Таким образом, сложилась полная и изумительно красивая  картина

организации  современных  Интранет-систем.  В  данной статье мы

уделим основное внимание технологии Java.  Далее  будет  кратко

рассмотрены возможности, предоставляемые системой Joe.


        4. Java - язык и технология

        * 4.1. Язык Java

При описании языка Java будет предполагаться, что читатель, хо-

тя бы в общих чертах, знаком с языком C++.

          4.1.1. Об®ектная модель языка Java

Когда  говорят об об®ектно-ориентированном языке программирова-

ния, предполагают поддержку трех механизмов:

- инкапсуляция

- наследование

- полиморфизм.

Инкапсуляция и наследование в языке Java реализуются с  помощью

понятия класса.

            4.1.1.1. Классы

Понятие класса в языках Java и C++ очень близки. Класс является

шаблоном для создания об®ектов; он может содержать данные и ме-

тоды.  Приведем  пример  класса, описывающего точки в двумерном

пространстве (здесь и далее номера строк используются для  пос-

ледующих пояснений и не являются частью Java-программ).

1     class Point extends Object {

2       private double x;

3       private double y;

4       Point (double x, double y) {

5         this.x = x;

6         this.y = y;

7       }

8       Point () {

9         this (0.0, 0.0);

10      }

11      public void setX (double x) {

12        this.x = x;

13      }

14      public void setY (double y) {

15        this.y = y;

16      }

        . . .

17    }

В  языке  Java  нельзя отрывать определение метода (функции) от

описания заголовка. Синтаксическая конструкция class  полностью

включает  в себя всю информацию о классе. В частности, реализа-

ции методов обязаны содержаться внутри этой конструкции.

Для  обозначения  наследования  используется   ключевое   слово

extends (строка 1). Класс Object - это корень дерева наследова-

ния.  В  Java  не бывает классов-"сирот": у всех классов, кроме

Object, есть предшественник. Подробнее наследование и предопре-

деленные классы будут рассмотрены далее.

Режимы доступа к элементам класса (private, protected,  public)

те  же,  что  и  в C++, за одним важным исключением. Если режим

доступа опущен,  предполагается,  что  соответствующий  элемент

доступен в пределах пакета (см. далее).

В строке 9 приведен пример явного вызова одного конструктора из

другого.