Java99: Архитектура и интерфейсы

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">Java:
                          архитектура и интерфейсы
      Многим наверняка уже известно, что язык  Java  был  разработан  фирмой
Sun,  как  платформенно-независимый,  переносимый,  объектно-ориентированный
язык  для  Internet  и  Intranet.  Я  не  вижу  особого  смысла  перечислять
преимущества языка, его отличия от C++ - это уже описано в десятках  книг  и
сотнях  публикаций,  как  за  рубежом,  так  и  в  нашей  стране.  Здесь  мы
остановимся на том, что представляет собой платформа Java сегодня, из  каких
компонентов она состоит и какие средства, доступны для разработчиков.  Таким
образом, по завершении данного цикла вы должны  будете  получить  достаточно
четкое представление о том, что  предлагает  фирма  Sun,  какими  средствами
разработки можно пользоваться, какие существуют компоненты  и  средства  для
их создания и как с помощью Java можно создавать корпоративные решения.
      Технология Java
Технология Java обеспечивает разработчиков  основой  для  создания  решений,
при разработке которых не  нужно  задумываться  об  операционной  системе  и
аппаратной платформе, на которых эти решения  будут  функционировать.  Часто
используемое выражение "Написано однажды – работает  везде"  лучшим  образом
характеризует  основное  назначение  этой   технологии.   Независимость   от
платформы достигается за счет того, что уникальные характеристики каждой  из
поддерживаемых Java 2 платформ,  реализованы  в  виде  оболочки,  называемой
Java Runtime Environment (JRE). Во  время  создания  приложения  разработчик
пишет код на языке Java  так,  как  если  бы  в  мире  была  бы  всего  одна
программно/аппаратная платформа. Компилятор языка  Java  преобразует  код  в
последовательность  байт-кодов,  которая  будет  выполняться  на  одной   из
платформ в рамках JRE.
      Java Runtime Environment содержит специальные средства проверки  кода,
обеспечивающие  надежность  и  защищенность  программ,  загрузчик   классов,
который динамически загружает классы в  процессе  выполнения  и  виртуальную
машину Java (Java  VM),  которая  выполняет  последовательность  байт-кодов,
взаимодействую   с   конкретной   операционной   системой.   Такой   подходт
освобождает разработчика от необходимости  обращать  внимания  на  специфику
какой-то  конкретной  операционной  системы  и  позволяет   внедрять   Java-
приложения на более чем одной платформе. Компоненты JavaRuntime  Environment
показаны на следующей диаграмме.
       [pic]

      То, что язык Java за короткое время стал  одним  из  самых  популярных
коммерческих  объектно-ориентированных  языков  программирования,   помогает
распространению технологии Java и подтверждается тем, что в настоящее  время
этот язык использует около 1 млн. разработчиков (80% из них  создает  кросс-
платформенные приложения), продукты для Java выпускают сотни фирм,  а  число
копий JDK, загруженных с сайта фирмы Sun, превысило 2.5 млн.
Платформа Java 2
      Платформа Java 2 (Java Development Kit 1.2), объявленная фирмой Sun  в
декабре 1998  года,  представляет  собой  физическую  реализацию  технологии
Java. Собственно говоря,  она  заключена  в  небольшом  по  объему  файле  и
состоит из следующих основных компонентов:
 . Средства разработки на Java – редактор, компилятор, отладчик  и  средство
   для документации Java API
 . Богатый набор Java-библиотек  и  базовых  классов  (foundation  classes),
   которые используются для  создания  графических  интерфейсов,  доступа  к
   базам  данных,  реализации  сетевых   функций,   разработки   приложений,
   работающих с несколькими языками и т.п.
 . Java 2 Runtime Environment – средство  для  динамической  загрузки  Java-
   классов, их проверки и выполнения Java-байт-кода.
      Архитектура платформы Java 2 показана на следующей диаграмме.
[pic]
      Изначально, Sun выпустила Java 2  Runtime  Environment  для  следующих
платформ: Solaris, Windows NT  Server  4.0  и  Windows  95/98.  В  ближайшие
месяцы  поставщики  других  платформ  выпустят  соответствующие  JRE.  Таким
образом, Java 2 будет реализована на следующих платформах:
|AIX                 |Digital UNIX        |HP-UX               |
|IRIX                |Linux               |Mac OS              |
|NetWare             |OpenServer          |OpenVMS             |
|OS/2                |OS/390              |RISC-OS             |
|Solaris             |Windows 95          |Windows 98          |
|Windows NT          |Windows NT-Alpha    |UnixWare            |
|                    |(DEC)               |                    |


Java 2 в деталях
      Давайте рассмотрим  состав  Java  2  более  подробно.  Я  выделил  три
основных компонента - средства разработки на Java,  набор  Java-библиотек  и
базовых классов и Java 2 Runtime Environment.
Средства разработки на Java
      В  состав  JDK  1.2  входит  большое  число  утилит,   которые   можно
подразделить на несколько категорий:
 . Базовые утилиты
 . RMI-утилиты
 . Средства для локализации приложений
 . Средства для защиты приложений
 . IDL-утилиты
Базовые утилиты
      Утилиты, относящиеся к этой категории, служат основой Java Development
Kit. Они используются для компиляции и отладки создаваемых  Java-приложений.
К базовым утилитам относятся:
|javac         |Компилятор языка Java                                    |
|java          |Загрузчик Java-приложений. Используется и в стадии       |
|              |разработки, и в стадии внедрения приложений              |
|javadoc       |Генератор документации для API                           |
|appletviewer  |Утилита для запуска и отладки приложений без             |
|              |использования web-браузера                               |
|jar           |Утилита для управления Java Archive (JAR)-файлами        |
|jdb           |Отладчик Java-приложений.                                |
|javah         |Генератор заголовочных файлов и заголушек для языка C    |
|javap         |Дизассемблер Java-классов                                |
|extcheck      |Утилита для обнаружения конфликов между JAR-файлами      |


RMI-утилиты
      Утилиты, относящиеся  к  этой  категории,  используются  для  создания
приложений, взаимодействующих между  собой  по  Internet  или  другим  типам
сетей. К таким утилитам относятся:

 
|rmic         |Утилита для генерации заглушек и скелетов для удаленных   |
|             |объектов                                                  |
|rmiregistry  |Утилита для регистрации удаленных объектов                |
|rmid         |Средство системной активации RMI                          |
|serialver    |Возвращает serialVersionUID.для данного класса            |


Средства для локализации приложений
      К средствам для локализации приложений относится утилита native2ascii,
выполняющая преобразование текста в Unicode Latin-1.
Средства для защиты приложений
      Утилиты,  относящиеся  к  этой  категории,  используются  для  задания
уровней защиты и создания приложений, который работают на  удаленных  узлах.
К таким утилитам относятся:
|keytool     |Средство для управления сертификатами                      |
|jarsigner   |Утилита для генерации и проверки цифровых подписей в       |
|            |JAR-файлах                                                 |
|policytool  |Графическое средство для управления файлами доступа        |


IDL-утилиты
      Утилиты, относящиеся  к  этой  категории,  используются  при  создании
приложений, использующих CORBA для доступа к базам данных. К таким  утилитам