Введение
В этой теме мы познакомимся с некоторыми методами интеграции, позже будем изучать подробности применения того или иного метода. Методы применяются в различных случаях. Очевидно, что практически всегда применимость того или иного метода определяется теми возможностями, которые вам предлагают разработчики интегрируемого приложения. Соответственно, разрабатывая свое собственное программное средство, не забывайте, что вероятно, его потребуется интегрировать в некую единую систему. И тогда встанет вопрос о том, что вы предусмотрели для настройки, наращивания функциональности или интеграции.
Пути устранения аппаратных различий, кросс – платформенные приложения.
Как избавиться от аппаратных различий. Можно было бы на все установить жесткие стандарты. Это реальный путь, человечество идет по нему. Но одновременно со стандартными решениями должны существовать альтернативные методы, иначе мы придем к застою. В настоящее время по экономическим, политическим, технологическим причинам строгая стандартизация аппаратуры невозможна!
Пока кратко заметим, что технология COM вообще обходит стороной проблему аппаратной несовместимости: в ней предполагается, что все компоненты ИС работают на одной аппаратной платформе под управлением одной операционной системы (Windows, конечно!).
В технологии.Net также оставлена эта проблема на обочине, хотя и предприняты некоторые шаги в этом направлении.
Разработчики технологии CORBA с самого начала ставили цель: добиться слаженной работы компонент, разработанных для разных аппаратных платформ, разнообразных унаследованных систем (то есть систем, разработанных и откомпилированных много лет назад).
Одно из возможных решений на пути устранения аппаратной несовместимости – создание кросс - платформенных приложений. Вы догадываетесь, что это – задача не из легких. Каждый процессор обладает своим набором команд, внутренними форматами данных, операционная система – своими системными вызовами, кодами прерываний и т.п. Поэтому задача создания операционно независимой программы в общем случае не имеет решения.
Во многих системах программирования (C++ Builder 6) помогают создавать кросс – платформенные решения, предоставив разработчикам разные библиотеки для разных операционных систем (точнее, семейств ОС).
Таким образом, кросс – платформенное приложение, это приложение, которое может быть перестроено на ту или иную платформу, чаще всего для этого требуется перекомпиляция. Подчеркнем, это не выполняемый файл, могущий работать на разной аппаратуре, таких, вообще говоря, нет!
JAVA applets, апплеты.
Красивое решение предложено фирмой Sun – сторонниками языка JAVA. На разных компьютерах было предложено реализовать некоторую виртуальную JAVA-машину, то есть интерпретатор JAVA кода. Заметим, в скобках, что задача интерпретатора состоит в чтении и выполнении команд в JAVA-коде. При этом сама JAVA-машина написана в командах текущего процессора. Такое решение позволяет распространять программы на JAVA, которые будет интерпретировать JAVA-машина, встроенная в некоторое приложение. Эти программы называют JAVA-апплетами. В Windows интерпретатор JAVA-кода встроен в Internet Explorer.
Оценим это решение. Во-первых, JAVA-код можно передавать по сети, не заботясь об аппаратной совместимости. Во-вторых, это решение лучше с точки зрения обеспечения безопасности. JAVA-апплет работает в адресном пространстве браузера, более того, на виртуальной машине, то есть с набором команд, предоставляемым виртуальной машиной. Следовательно, этот код работает с моделируемыми ресурсами и не имеет никакого доступа к действительным ресурсам компьютера. Конечно, это вносит определенные ограничения на то, что можно сделать в JAVA-апплете.
Любая программа, написанная, например на С++, получает доступ ко всем ресурсам компьютера: его файловой системе, оперативной памяти. Поскольку Java-программы выполняются виртуальной машиной, разработчики виртуальной машины определяют параметры доступа Java-программ к ресурсам компьютера. Окружение, в котором работает Java-программа, называется оболочкой времени выполнения (runtime environment). Доступ к файловой системе имеет только виртуальная машина, а Java-программа – только косвенно, поэтому она не может удалить или записать файл на диск.
Попытаемся проиллюстрировать сказанное. Операционная система выделяет работающему приложению одну или несколько страниц оперативной памяти (по требованию приложения). Рассматриваемое работающее приложение – виртуальная машина. А уже эта программа моделирует с помощью своих внутренних данных оперативную память. Например, оперативная память может быть представлена в виде строковой переменной П. Поэтому, если Java – программа создает переменную, то это – часть переменной П. Виртуальная машина следит за тем, чтобы Java-приложение не выходило за рамки отведенной ему памяти. Работа с файлами не запрещена в Java апплетах, но это на самом деле не работа с файловой системой компьютера, а работа с программой, моделирующей файловую систему. Например, диск может быть представлен другой строковой переменной Д. После закрытия виртуальной машины, вся выделенная ей оперативная память освобождается.
Механизмы организации работы с оперативной памятью или с диском в виртуальной машине несколько напоминают традиционные решения, принятые в операционных системах.
Интересно, что фирма Microsoft пошла по этому же пути, создавая в настоящее время.Net-машину, но об этом – позже.
Не путайте JAVA-appletts, вставляемые в html-код при помощи тэга <applet>, с программами на Jscript, содержащимися в тэге-контейнере <script>! Программа на JScript передается по сети в исходном виде и выполняется браузером, при этом команды (операторы) программы переводятся в машинный код компьютера клиента и дополняют команды браузера. Программа на Jscript выполняются в адресном пространстве браузера, с его полномочиями, поэтому она имеет доступ ко всем ресурсам компьютера, к которым имеет доступ браузер, в частности, к файловой системе.
При рассмотрении технологии JAVA – applets следует обратить внимание на важное понятие: динамическое связывание.
Так как Java-код интерпретируется виртуальной машиной, то есть отсутствует этап построителя задачи, то задача собирается из фрагментов в процессе выполнения (интерпретации), это позволяет загружать по сети только те фрагменты, которые нужны, что несколько экономит передачи по сети. Механизм, обеспечивающий такую сборку, называется "динамическим связыванием" (dynamic binding).
Не забывайте, что здесь получается выигрыш в объеме сетевых передач, но проигрыш во времени выполнения, так как требуется время на интерпретацию (почти компиляция), кроме того, требуется постоянное соединение с Интернет и возможны задержки (пока требуемый фрагмент не будет передан посети).