Розділ 14 LiveConnect. Огляд.
У розділі є такі розділи:
Що таке LiveConnect?
- Ви можете обернути/завантажити Ваш код як Java-об'єкт і використовувати LiveConnect безпосередньо.
- Ви можете обернути код як розподілений об'єкт CORBA і використовувати LiveConnect спільно з object request broker (ORB).
- Ви можете безпосередньо включати зовнішні бібліотеки до вашої програми.
Передбачається, що Ви вже знайомі із програмуванням на Java. Про використання Java з серверами Netscape див. Enterprise Server 3.5.1/3.6: Notes for Java Programmers 1 . Про LiveConnect див. DevEdge Library 2 .
Робота з Оболонками
Таблиця 14.1 Об'єкти LiveConnect
Об'єкт Опис
Об'єкт Packages
Якщо клас Java не є частиною пакетів java, sun або netscape, Ви маєте доступ до нього через об'єкт Packages. Наприклад, корпорація Redwood використовує пакет Java під назвою redwood як контейнер різних Java класів, які нею реалізовані. Для створення екземпляра класу HelloWorld у redwood Ви вводите конструктор класу:
Ви також можете отримати доступ до класів у пакеті за промовчанням (тобто класів, які не вказують пакет явно). Наприклад, якщо клас HelloWorld знаходиться безпосередньо в CLASSPATH, а не в пакеті, Ви можете отримати до нього доступ так:
Об'єкти LiveConnect java , sun і netscape є скороченнями для пакетів Java, які зазвичай використовуються. Наприклад, можна записати так:
замість довшої версії:
За промовчанням директорія $NSHOME\js\samples , де $NSHOME це директорія, в якій встановлено сервер, знаходиться в CLASSPATH сервері. Ви можете помістити Ваш пакет у цю директорію. Альтернативно Ви можете помістити Ваші пакети та класи Java в іншу директорію. Якщо Ви церобите, переконайтеся, що директорія знаходиться у Вашому CLASSPATH .
Робота з Масивами Java
Посилання на Пакети та Класи
У більшості випадків Вам не потрібно турбуватися про об'єкти JavaPackage та JavaClass: Ви просто працюєте з пакетами та класами Java, а LiveConnect прозоро створює ці об'єкти.
JavaClass-об'єкти не конвертуються автоматично в екземпляри java.lang.Class при передачі їх як параметри Java-методів - Ви повинні створити оболонку/wrapper навколо екземпляра java.lang.Class . У наступному прикладі метод forName створює об'єкт-оболонку theClass , який потім передається методу newInstance для створення нового масиву.
Аргументи Типу char
Ви не можете передати односимвольний рядок Java-методу, що вимагає аргумент типу char . Ви повинні передати таким методам ціле число, що відповідає значенню Unicode для цього символу. Наприклад, наступний код надає значення "H" змінної c :
Кроки в цьому коді:
Наприклад, у Navigator 4.0 для Windows NT класи поставляються у файлі java40.jar у директорії Program\Java\Classes нижче директорії Navigator'а. Ви можете специфікувати змінну оточення Windows NT, увійшовши в Control Panel і створивши змінну оточення користувача з назвою CLASSPATH зі значенням типу такого:
Використання Класів LiveConnect
Якщо ви обчислите javaDog.dogColor , Ви побачите, що воно також має значення "chocolate", оскільки метод getMember в Java-конструкторі надає dogColor значення gabby.color .
Наприклад, можна використати блок try. catch для обробки винятків LiveConnect:
У цьому прикладі оператор eval зазнає невдачі, якщо foo не визначено. Блок catch виконує метод jsCodeFailed, якщо оператор eval у блоці tryвикликає JSException; метод іншихCodeFailed виконується, якщо блок try викликає якусь іншу помилку.
Конвертація Типів Даних
Return-значення методів netscape.javascript.JSObject завжди конвертуються в екземпляри java.lang.Object. Правила конвертації цих return-значень також описані у цих розділах.
Числові Значення
|
Тип Java-параметра Правила конвертації
Точне значення переноситься в Java без заокруглення і втрати точності чи знака.
Створюється новий екземпляр java.lang.Double і точне значення переноситься в Java без округлення і без втрати точності або знака.
- Значення округляються до точності float.
- Значення, які занадто великі або малі, округляються до нескінченності або нескінченності.
|
- Значення округляються за допомогою режиму "округлення до мінус-нескінченності"/round-to-negative-infinity.
- Значення, які дуже великі чи малі, дають помилку часу виконання.
- NaN-значення конвертуються до нуля.
|
Значення конвертуються у рядки. Наприклад,
|
- 0 і NaN - значення конвертуються в false.
- Інші значення конвертуються у true.
|
Булеви Значення
Тип Java-параметра Правила конвертації
|
Всі значення конвертуються безпосередньо в Java-еквіваленти.
Створюється новий екземпляр java.lang.Boolean. Кожен параметр створює новий екземпляр, а не екземпляр з тим самим примітивним значенням.
Значення конвертуються у рядки. Наприклад:
- true стає "true"
- falseстає "false"
|
Строкові значення
Тип Java-параметра Правила конвертації
|
Усі значення конвертуються у числа, як описано в ECMA-262.
Усі значення конвертуються у числа.
- Порожній рядок стає false.
- усі інші значення стають true.
|
Null-Значення
Тип Java-параметра Правила конвертації
|
Будь-який клас Будь-який тип інтерфейсу
Значення стає null.
Значення стає 0.
Значення стає false.
Об'єкти JavaArray та JavaObject
Тип Java-параметра Правила конвертації
|
Будь-який інтерфейс чи клас, який сумісний в операції присвоєння з розгорнутим об'єктом.
Оболонка з об'єкта знімається.
Оболонка з об'єкта знімається, викликається метод toString розгорнутого Java-об'єкта, а результат повертається як новий екземпляр java.lang.String.
Оболонка з об'єкта знімається, і виникає одна з таких ситуацій:
- Якщо розгорнутий Java-об'єкт має метод doubleValue , JavaArray або JavaObject конвертується у значення, яке повертається цим методом.
- Якщо розгорнутий Java-об'єкт не має методу doubleValue, виникає помилка.
Оболонка з об'єкта знімається, і виникає одна з таких ситуацій:
- Якщо розгорнутий об'єкт має метод booleanValue, об'єкт-джерело конвертується в це return-значення.
- Якщо розгорнутий об'єкт не має методу booleanValue, конвертація зазнає невдачі.
Інтерфейс або клас сумісні для присвоєння з розгорнутимоб'єктом, якщо розгорнутий об'єкт є екземпляром типу Java-параметра. Тобто наступний оператор зобов'язаний повертати true:
Об'єкти JavaClass
Тип Java-параметра Правила конвертації
|
Оболонка з об'єкта знімається.
Об'єкт JavaClass повертається в новий екземпляр java.lang.JSObject.
Оболонка з об'єкта знімається, викликається метод toString розгорнутого Java-об'єкта, а результат повертається як новий екземпляр java.lang.String.
Оболонка з об'єкта знімається, і виникає одна з таких ситуацій:
- Якщо розгорнутий об'єкт має метод booleanValue, вихідний об'єкт конвертується в return-значення.
- Якщо об'єкт не має методу booleanValue, конвертація зазнає невдачі.
Тип Java-параметра Правила конвертації
|
Об'єкт обертається на новий екземпляр java.lang.JSObject .
Оболонка з об'єкта знімається, викликається метод toString розгорнутого Java-об'єкта, а результат повертається як новий екземпляр java.lang.String.
Об'єкт конвертується на значення з використанням логіки оператора ToPrimitive , описаного в ECMA-262. Підказка PreferredType, яка використовується з цим оператором, це Number.
Оболонка з об'єкта знімається, і виникає одна з таких ситуацій:
- Якщо розгорнутий об'єкт має метод booleanValue, вихідний об'єкт конвертується в return-значення.
- Якщо об'єкт не має методу booleanValue, конвертація зазнає невдачі.
Зміст Назад Вперед Індекс