logo
PITS-1-2010new2

2.4.6. Перспективные идеи и средства для Internet

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

  1. Новые эффективные языковые средства:

    1. Уже интенсивно отрабатывается идея: сделать Web универсальным механизмом доступа к ресурсам Internet. Многие сервисы имеют свои домашние страницы в Web, что облегчает доступ к ним.

    2. Серверы Web, доступные браузерам, это архитектура для следующей ступени развития средств удаленной обработки данных в системах клиент-сервер.

    3. Дальше просматривается возможность процедуры запуска на Web-серверах больших ПС, которые вызваны работающими браузерами клиентов на станциях [38].

Рассмотрим некоторые основные идеи и особенности применения новых языковых средств программирования Web-приложений.

Java-технология (SUN Microsystems) разработана специально для «оживления» Web и использует распределенные малые приложения – апплеты (Applets) [5-7, 38]. Апплеты посылаются по Сети от серверов браузерам, имеющим встроенные Java-интерпретаторы. На месте апплеты выполняются встроенным в браузер загрузчиком класса апплетов. Значит, кроме документов у пользователя теперь появляется доступ к малым (быстрым) приложениям.

Язык Java (1995 г.) разработан в корпорации SUN Microsystems. Изначально считалось, что язык Java имеет серьезные средства защиты от хакеров и вирусов, отличается повышенной надежностью и безопасностью языковых конструкций по сравнению с языками С/С++, обеспечивает независимость от программно-аппаратной платформы.

Идея защиты сводится к запретам записи информации на диск и по адресам ОП с использованием адресной арифметики. Но сегодня этого явно недостаточно для построения надежно защищенной системы. К сожалению, существует масса способов внедрения в систему и без описанных действий. После выявления «дыр» в браузере Navigator компания Netscape предложила проверять IP-адреса, с которыми работает апплет на идентичность с IP-адресом HTTP-сервера, с которого апплет получен. Для реальной же защиты в программу-интерфейс придется вставить полноценный защитный экран (firewall) с возможностями конфигурирования TCP/UDP портов и анализа содержания пакетов, и то, как показывает практика, это не приводит к стопроцентной безопасности.

Приложения и апплеты Java перед выполнением проходят следующие 5 шагов последовательных преобразований.

  1. Исходный текст с помощью специального конвертора Java Compiler транслируется в линеаризованный объектный код – байт-код Java.

  2. Затем этот байт-код попадает в виртуальную машину Java (Virtual Java Machine, VJM), которая и привязывает его к конкретной платформе.

  3. Далее код загружается посредством загрузчика Bytecode Loader.

  4. После этого байт-код обрабатывается специальным верификатором Bytecode Verifier, так как при передаче по Сети возможны искажения и воздействия.

  5. Если Bytecode Verifier дает положительный результат проверки, автоматически запускается интерпретатор байт-кода.

Узкими местами в плане безопасности являются шаги 4 и 5: насколько неуязвим сам Bytecode Verifier или насколько быстр интерпретатор VJM?

Интерпретатор работает крайне медленно. Но эта проблема частично решена с помощью процедуры пост-компиляции, когда специальные компиляторы just-in-time Application Accelerators for Java преобразуют байт-код в исполняемый код конкретной платформы (вместо медленной интерпретации).

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

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

Еще одной интересной разработкой является язык сценариев управления просмотром гипертекстовых страниц JavaScript (1995 г.), разработанный в компании Netscape. Его прообразом еще до анонсирования Java был язык LiveWare. Появление в нем фреймов, многооконности, динамической загрузки страниц и ряда других расширений от компании Netscape явно показывали направление развития ее браузера Navigator (1994 г.), поскольку технология LiveWare по своей архитектуре очень напоминала Java. Та же возможность разработки приложений для сервера HTTP, мобильный код, исполняемый браузером Navigator. Но, кроме этого, в HTML страницы можно встраивать еще и исходные тексты программ. Последняя возможность превратила Navigator в самодостаточную среду программирования, которую можно использовать не только в Internet, но и в локальных системах. Используя JavaScript, можно организовать гибкий многооконный интерфейс с контекстной справочной системой и встроенной графикой, при этом многие вопросы проверки вводимых пользователем данных можно возложить на функции JavaScript. По своим функциональным возможностям JavaScript пока уступает Java. Можно организовать открытие нового окна, прокрутку текста, запрограммировать калькулятор, которых в Сети уже около двух десятков, проверку ввода, но не более того.

Отдельной интересной темой является объектно-ориентированный характер JavaScript. Язык JavaScript ориентирован на встроенные объекты браузеров компании Netscape (окна, формы, поля форм, элементы рабочих областей браузера и т.п.). Это сильно облегчает обучение программистов и позволяет сразу писать интересные и полезные программы. Но отсутствуют наследование свойств объектов и обмен данными между различными объектами, например двумя окнами браузера. Пока JavaScript сейчас – это просто язык сценариев просмотра HTML страниц.

Характерно, что при использовании обычных программ-интерфейсов (браузеров) Java-приложения могут быть использованы только в качестве API-модулей сервера или CGI-скриптов, что не выделяет их из общего набора других программ этого типа и ограничивает область применения Java-технологии. Она расширяется только в случае применения браузеров компании Netscape или HotJava (SUN Microsystems). Здесь уже возможно создать набор апплетов, которые будут выполняться при помощи этих программ на компьютере пользователя.

Кроме того, при использовании браузера HotJava и Java Development Kit можно расширить возможности самой программы-интерфейса за счет разработки новых модулей.

Juice-технология улучшена и более универсальна по сравнению с Java-технологией. Juice-технология опирается на объектно-ориентированный язык программирования (ООЯП) Oberon, разработанный Никлаусом Виртом (автором языков Pascal и Modula 2), по надежности и безопасности не уступающий Java. Его особенности:

Juice-технология опирается на ОС Oberon, которая может быть установлена в качестве единственной или поверх любой другой ОС. Juice-технология основана на динамической (on-the-fly) кодогенерации по схеме Франца, имеющей следующие особенности.

  1. Компилятор транслирует исходный текст на ООЯП Oberon в промежуточный код древовидной структуры (по типу семантического словаря), обеспечивающий плотность кода и сохраняющий информацию о структуре программы. Не теряется, как в случае линеаризованного байт-кода высокоуровневая информация о структуре программы, которая нужна для контроля целостности и последующей оптимизации кода.

  2. Затем работает кодогенерирующий загрузчик (его размер около 100 К):

TCL(тикл)-технология (SUN Microsystems) использует связку TCL/TK (Tool Command Language/Tool Kit).

TCL – удобный интерпретируемый язык сценариев, особенно эффективный при написании пользовательских интерфейсов приложений и далекий от ООЯП, он ближе к функциональным языкам. TK – средство для работы с библиотеками графических объектов интерфейса (виджетов). В отличие от ГИП Motif для среды UNIX TK обходится без конструкций языков С/С++.

Связка TCL/TK может работать в паре с Java, например, прототипировать сложные апплеты Java, склеивать фрагменты кода. Но TCL/TK мощен и сам по себе. Известны TCL/TK-программа Tetris, составляющая всего 500 строк кода, а также мощная система управления нефтяными платформами в РВ – около 0,5 млн. строк кода.