Чтение онлайн

ЖАНРЫ

JavaScript. Подробное руководство, 6-е издание
Шрифт:

Rhino определяет несколько важных глобальных функций, не являющихся частью базового языка JavaScript:

// Специфические глобальные функции, определяемые интерпретатором

// Введите help в строке приглашения rhino, чтобы получить дополнительную информацию

print(х); // Глобальная функция вывода в консоль

version(170); // Требует от Rhino задействовать особенности версии 1.7 );

load(filename.... // Загружает и выполняет один
или более файлов

// с программами на языке JavaScript

readFile(file); // Читает текстовый файл и возвращает его содержимое в виде строки

readUrl(url); // Читает текстовое содержимое по адресу URL и возвращает

// в виде строки

spawn(f); // Вызывает f или загружает и выполняет файл f

// в новом потоке выполнения

runCommand(cmd. // Запускает системную команду с нулем или более

[args...]) // аргументов командной строки

quit // Завершает работу Rhino

Как получить Rhino

Интерпретатор Rhino - свободное программное обеспечение, разработанное проектом Mozilla. Вы можете загрузить копию по адресуВерсия Rhino 1.7г2 реализует ECMAScript 3 и ряд расширений языка, описанных в главе 11. Rhino - достаточно зрелый программный продукт, и новые его версии появляются не так часто. На момент написания этих строк в репозитории с исходными текстами была доступна предварительная версия 1.7гЗ, включающая частичную реализацию стандарта ECMAScript 5.

Rhino распространяется в виде JAR-архива. Запускается он командой, как показано ниже:

java -jar rhino1_7R2/js.jar program.js

Если опустить параметр program.js, интерпретатор Rhino запустится в интерактивном режиме, который позволит вам опробовать простенькие программы и однострочные примеры.

**************************************************

Обратите внимание на функцию

print:
мы будем использовать ее в этом разделе вместо
console.log.
Интерпретатор Rhino представляет пакеты и классы Java как объекты JavaScript:

// Глобальная переменная Packages определяет корень иерархии пакетов Java

Packages.any.package.name // Любой пакет из CLASSPATH

java.lang // Глобальная переменная java - краткая ссылка на Packages.java

javax.swing // A javax - краткая ссылка на Packages.javax

// Классы: доступны как свойства пакетов

var System = java.lang.System;

var JFrame = javax.swing.JFrame;

Поскольку пакеты и классы представлены как объекты JavaScript, их можно присваивать переменным, чтобы давать им более короткие имена. Но при желании их можно импортировать более формальным способом:

var ArrayList = java.util.ArrayList; //
Создать краткое имя для класса

importClass(java.util.HashMap); // Аналог: var HashMap=java.util.HashMap

// Импорт пакета (отложенный) с помощью importPackage.

// Не следует импортировать java.lang: слишком много конфликтов имен

// с глобальными переменными JavaScript.

importPackage(java.util);

importPackage(java.net);

// Другой прием: передать произвольное количество классов и пакетов функции

// JavaImporter и использовать возвращаемый объект с инструкцией with

var guipkgs = JavaImporter(java.awt, java.awt.event, Packages.javax.swing);

with (guipkgs) {

/* Здесь определены такие классы, как Font, ActionListener и JFrame */

}

С помощью ключевого слова

new
можно создавать экземпляры классов языка Java, как если бы это были классы JavaScript:

// Объекты: создание из классов Java с помощью ключевого слова new

var f = new java. io. File("tmp/test''); // Этот объект используется ниже

var out = new java.io.FileWriter(f);

Интерпретатор Rhino позволяет использовать JavaScript-оператор instanceof для работы с объектами и классами на языке Java:

f instanceof java.io.File // => true

out instanceof java.io.Reader // => false: объект Writer, а не Reader

out instanceof java.io.Closeable // => true: Writer реализует Closeable

Как видно выше в примерах создания объектов экземпляров, интерпретатор Rhino позволяет передавать значения конструкторам Java и присваивать возвращаемые ими значения переменным JavaScript. (Обратите внимание на неявное преобразование типов, выполняемое интерпретатором Rhino в этом примере: JavaScript-строка "/tmp/test" автоматически преобразуется в значение типа java.lang.String.) Методы Java очень похожи на конструкторы Java, и Rhino позволяет программам на языке JavaScript вызывать методы на языке Java:

// Статические методы на языке Java действуют подобно функциям JavaScript

java.lang.System.getProperty("java.version") // Вернет версию Java

var isDigit = java.lang.Character.isDigit; // Присвоит статич. метод переменной

isDigit("t") // => true: Арабская цифра 2

// Вызвать методы экземпляра объектов f и out на языке Java, созданных выше

Поделиться с друзьями: