Глава 14 Live Connect. Преглед.
Главата съдържа следните раздели:
Какво е LiveConnect?
- Можете да опаковате/опаковате кода си като Java обект и да използвате LiveConnect директно.
- Можете да обвиете кода си като разпределен CORBA обект и да използвате LiveConnect с брокер на заявки за обекти (ORB).
- Можете директно да включите външни библиотеки във вашето приложение.
Предполага се, че вече сте запознати с програмирането на Java. За използване на Java със сървъри на Netscape вижте Enterprise Server 3.5.1/3.6: Бележки за Java програмисти 1 . За LiveConnect вижте DevEdge Library 2 .
Работа с Shells
Таблица 14.1 Обекти на LiveConnect
Описание на обекта
Пакетен обект
Ако Java клас не е част от пакетите java, sun или netscape, можете да получите достъп до него чрез обекта Packages. Например Redwood Corporation използва Java пакет, наречен redwood, като контейнер за различните Java класове, които прилага. За да създадете екземпляр на класа HelloWorld в секвоя, трябва да въведете конструктора на класа:
Можете също да получите достъп до класове в пакета по подразбиране (т.е. класове, които не указват изрично пакет). Например, ако класът HelloWorld е директно в CLASSPATH, а не в пакета, можете да получите достъп до него по следния начин:
Обектите LiveConnect java, sun и netscape са съкращения на често използвани Java пакети. Например можете да напишете така:
вместо по-дългата версия:
По подразбиране директорията $NSHOME\js\samples, където $NSHOME е директорията, в която е инсталиран сървърът, е в CLASSPATH на сървъра. Можете да поставите своя пакет в тази директория. Като алтернатива можете да поставите вашите Java пакети и класове в друга директория. Ако сте тованаправете, уверете се, че директорията е във вашия CLASSPATH.
Работа с Java Arrays
Връзки към пакети и класове
В повечето случаи не е нужно да се притеснявате за JavaPackage и JavaClass обекти: вие просто работите с Java пакети и класове, а LiveConnect създава тези обекти прозрачно.
JavaClass обектите не се преобразуват автоматично в java.lang.Class екземпляри, когато се предават като параметри на Java методи -- Трябва да създадете обвивка около 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, като влезете в контролния панел и създадете дефинирана от потребителя променлива на средата, наречена CLASSPATH, със стойност като тази:
Използване на класовете LiveConnect
Ако оцените javaDog.dogColor, ще видите, че той също има стойността "chocolate", защото методът getMember в Java конструктора задава dogColor на gabby.color.
Например, можете да използвате блок за опит. catch за обработка на изключения на LiveConnect:
В този пример операторът eval е неуспешен, ако foo не е дефиниран. Блокът catch изпълнява метода jsCodeFailed, ако операторът eval в блока tryхвърля JSException; методът otherCodeFailed се изпълнява, ако блокът try предизвика друга грешка.
Преобразуване на типове данни
Върнатите стойности на методите netscape.javascript.JSObject винаги се преобразуват в екземпляри на java.lang.Object. Правилата за преобразуване на тези върнати стойности също са описани в тези раздели.
Числени стойности
|
Тип параметри на Java Правила за преобразуване
Точната стойност се пренася в Java без закръгляване и без загуба на точност или знак.
Създава се нов екземпляр на java.lang.Double и точната стойност се прехвърля в Java без закръгляване и без загуба на точност или знак.
- Стойностите са закръглени до плаваща точност.
- Стойностите, които са твърде големи или малки, се закръглят до +безкрайност или -безкрайност.
|
- Стойностите се закръглят с помощта на режим закръгляване до отрицателна безкрайност.
- Стойностите, които са твърде големи или твърде малки, дават грешка по време на изпълнение.
- Стойностите на NaN се преобразуват в нула.
|
Стойностите се преобразуват в низове. Например,
|
- Стойностите 0 и NaN се преобразуват в false.
- Други стойности се преобразуват в true.
|
Булеви стойности
Тип параметри на Java Правила за преобразуване
|
Всички стойности се конвертират директно в техните Java еквиваленти.
Създава се нов екземпляр на java.lang.Boolean. Всеки параметър създава нов екземпляр, а не екземпляр със същата примитивна стойност.
Стойностите се преобразуват в низове. Например:
- true става "вярно"
- невярностава "фалшив"
- true става 1
- false става 0
|
Низови стойности
Тип параметри на Java Правила за преобразуване
|
Всички стойности се преобразуват в числа, както е описано в ECMA-262.
Всички стойности се преобразуват в числа.
- Празният низ става false.
- всички други стойности стават верни.
|
Нулеви стойности
Тип параметри на Java Правила за преобразуване
|
Всеки клас Всеки тип интерфейс
Стойността става нула.
Стойността става 0.
Стойността става невярна.
JavaArray и JavaObject обекти
Тип параметри на Java Правила за преобразуване
|
Всеки интерфейс или клас, който е съвместим с разопакования обект.
Черупката се отстранява от предмета.
Обектът се разопакова, методът toString на разопакования Java обект се извиква и резултатът се връща като нов екземпляр на java.lang.String.
Обвивката се отстранява от обекта и възниква една от следните ситуации:
- Ако разопакованият Java обект има метод doubleValue, JavaArray или JavaObject се преобразува в стойността, върната от този метод.
- Ако внедреният Java обект няма метод doubleValue, възниква грешка.
Обвивката се отстранява от обекта и възниква една от следните ситуации:
- Ако разопакованият обект има метод booleanValue, обектът източник се преобразува в тази върната стойност.
- Ако разопакованият обект няма метод booleanValue, преобразуването е неуспешно.
Интерфейсът или класът могат да бъдат присвоени с разширениеобект, ако разопакованият обект е екземпляр на типа параметър Java. Тоест следното твърдение трябва да върне истина:
JavaClass обекти
Тип параметри на Java Правила за преобразуване
|
Черупката се отстранява от предмета.
Обектът JavaClass е обвит в нов екземпляр на java.lang.JSObject.
Обектът се разопакова, методът toString на разопакования Java обект се извиква и резултатът се връща като нов екземпляр на java.lang.String.
Обвивката се отстранява от обекта и възниква една от следните ситуации:
- Ако разопакованият обект има метод booleanValue, оригиналният обект се преобразува в върната стойност.
- Ако обектът няма метод booleanValue, преобразуването е неуспешно.
Тип параметри на Java Правила за преобразуване
|
Обектът е обвит в нов екземпляр на java.lang.JSObject.
Обектът се разопакова, методът toString на разопакования Java обект се извиква и резултатът се връща като нов екземпляр на java.lang.String.
Обектът се преобразува в стойност с помощта на логиката на оператора ToPrimitive, описан в ECMA-262. Подсказката PreferredType, използвана с този оператор, е Number.
Обвивката се отстранява от обекта и възниква една от следните ситуации:
- Ако разопакованият обект има метод booleanValue, оригиналният обект се преобразува в върната стойност.
- Ако обектът няма метод booleanValue, преобразуването е неуспешно.
Съдържание Назад Напред Индекс