Java и Oracle самного просто
Започвайки с версия 8.1, СУБД на Oracle може допълнително да включва така наречения JServer, който ви позволява да използвате Java за съхранени процедури в допълнение към PL / SQL. JServer съдържа следните елементи:
- JVM виртуална машина, наречена Aurora, която поддържа средата за изпълнение на Java програми и библиотеки с класове на Java
- PL/SQL инструменти за свързване
- редица други
Във версия 9.0 JServer е преименуван на Oracle9i JVM (понякога OJVM или Enterprise Java Server).
Място на Java в архитектурата на Oracle
Наличието на вградена Java виртуална машина в Oracle е допълнителна функция по отношение на основната доставка.
Започвайки с версия 9.2, виртуалната машина на Java, вградена в СУБД, не поддържа хранилищата на протоколи J2EE и CORBA. По-специално, отсега нататък не е възможно да се поставят контейнери за EJB, JSP и сървлети (OSE) в база данни на Oracle, както беше преди. Предлага се те да бъдат поставени в средата OC4J от Oracle 9i Application Server. Вграденият Java двигател продължава да поддържа само съхранени процедури, JDBC и SQLJ.
Връзка и връзка между PL/SQL и Java в Oracle
Java в Oracle е напълно функционална затворена система, но Java класовете могат да бъдат "публикувани" в PL/SQL двигателя и извикани от PL/SQL програми с помощта на инструменти на Oracle.
До версия 9.2 включително, PL/SQL в Oracle обработва SQL заявки несравнимо по-ефективно. От друга страна, Java има по-богата и по-гъвкава езикова среда за описание на приложения.
Функции на Java и среда за програмиране на Java
Архитектурата на Java и начина, по който работи е много различенот архитектурата и принципите на работа на PL/SQL. По-долу са някои от характеристиките на Java, които са от съществено значение за използването на този език при работа с Oracle.
Софтуерни компоненти в среда за разработка на Java
Основните софтуерни компоненти в средата за разработка на Java са изходен код, клас, пакет, интерфейс, файл с ресурси. Връзката е показана на фигурата.
Пакет се използва за логическо групиране на програмни единици на Java.
Архивът се използва за физическо групиране на Java програмните единици, необходими за работата на определена Java програма, която може да бъде извикана директно или верижно. Технологично това често е единствената алтернатива на големия брой .class файлове.
Инсталиране на средата за разработка на Java
За да разработите с помощта на Java, трябва да инсталирате JDK (комплект за разработка на Java, по-рано SDK, комплект за разработка на софтуер за Java) на вашия компютър.
Започвайки с Oracle 8.1, JDK присъства на компактдиска с основната дистрибуция и може да бъде инсталиран от обикновената програма за инсталиране на Oracle чрез специални инструкции. При типични инсталации на софтуерната среда на Oracle (например в типична или минимална във версия 8.1), JDK се появява на компютъра автоматично.
JDK може също да се инсталира независимо от Oracle чрез пренаписване на JDK от http://www.javasoft.com/products/.
OC среда
За да работят програмите за среда за разработка на Java, трябва да бъдат зададени следните минимално необходими променливи на средата на ОС:
- CLASSPATH. Променлива, която сочи местоположението на файлове с класове, необходими за превод или изпълнение на java програма. Местоположението може да бъде (а) директорията на файловата система, където се намират файловете на класа и (б)zip или jar файл със същите файлове, пакетирани вътре. Пътят на файла на класа трябва да съответства на пълното име на класа, включително името на пакета. Ако името на пакета не се използва, CLASSPATH трябва да включва "." (посочва текущата директория). (Строго погледнато, за работата на програмите java и javac променливата CLASSPATH може да не е зададена, но тогава тези програми трябва да използват ключа -classpath, в противен случай той не е задължителен.)
- ПЪТЕКА. Това трябва да включва достъп до програми за среда за разработка.
JDK изпълнимите файлове се намират в %ORACLE_HOME%\apache\jdk\bin във версия 8.1 и в %ORACLE_HOME%\jdk\bin във версия 9.
Основните библиотеки от класове classes111.zip и classes12.zip (разликата между тях е във версиите на Java) и в двете версии на Oracle са в %ORACLE_HOME%\jdbc\lib
За експериментиране е удобно да създадете пакетен файл със следния текст за версия на Oracle 8.1: или със следния текст за версия на Oracle 9.2:
Сега можете да отворите конзолен прозорец и да изпълните желания команден файл.
Създаване на самостоятелни Java програми
Пример за превод и изпълнение на програма на Java
Програма за излъчване (клас):
Стартиране на програмата (клас):
Създаване на съхранени Java програми в Oracle
Oracle позволява Java програмите да бъдат съхранявани и извиквани за изпълнение с вградената JVM, подобно на съхранените PL/SQL процедури, изпълнявани от вградената PL/SQL машина.
Допълнителни Oracle DBMS компоненти за работа със съхранени Java програми
За да работите със съхранени Java програми, използвайки Jserver/OJVM, към Oracle са добавени следните компоненти от различно естество:
В зависимост от естеството на изброените компоненти, те се стартират или когатоинсталиране на софтуерната среда на Oracle или при създаване на JServer/OJVM среда в базата данни.
Схема за извикване на съхранени Java програми
Съхранените Java програми в Oracle имат Java методи, предмет на следните ограничения (версия 8.1):
методите, публикувани за използване в SQL или PL/SQL, трябва да бъдат декларирани като статични
класовете не могат да извършват извиквания по време на изпълнение на GUI класове (напр. awt)
Инсталиране на JServer/OJVM във версии 8.1 и 9
Най-лесният и кратък начин за инсталиране на JServer/OJVM е като страничен ефект от инсталирането на една от стандартните конфигурации на средата на Oracle (напр. Типична или Минимална във версия 8.1).
Въпреки това, JServer/OJVM може да бъде добавен към съществуваща среда, ако преди това не е бил достъпен чрез стартиране на скрипта initjvm.sql от директорията %ORACLE_HOME%\javavm\install (нотация на Windows).
Пример за създаване на съхранена Java програма
Съхранените Java програми могат да бъдат създадени в база данни под Oracle по два начина:
зареждане отвън с помощта на програмата loadjava и
SQL оператор CREATE/ALTER JAVA...
И двата метода са показани по-долу, като се използва като пример класът, създаден като част от пакета training.demos.
Изграждане с loadjava
Нека има файл MyJavaAgentInOracle.java в директорията training/demos (той се различава от файла MyHi.java по-горе):
Зареждане в схемата на SCOTT DB на текста на кода за класа в този файл (нотация на Windows; подобно в обвивки на Unix):
set > (във версия 9 %CLASSPATH%;%ORACLE_HOME%\javavm\lib\aurora.zip)
loadjava -user scott/tiger -o training/demos/MyJavaAgentInOracle.java
Ако в същата директория имаме класа MyHiFromOracle, преведен от програмата javac, можемведнага ще го зареди в базата данни:
loadjava -user scott/tiger -o training/demos/MyJavaAgentInOracle.class
Можете да заредите кода на същия клас по друг начин:
Извикване на заредена Java процедура в Oracle
Извикването на Java програма от Java код се извършва както обикновено.
Работа със справочен речник
Организация на справочната информация
Референтната информация за програмните елементи на Java се разпределя между речника на СУБД (таблица DBA_OBJECTS) и специални структури, създадени във всяка схема, която притежава тези елементи.
Първият път, когато Java програмен елемент се зареди в която и да е схема, командата loadjava или CREATE JAVA ще генерира там:
- CREATE$JAVA$LOB$TABLE - таблица за съхраняване на Java програмен код
- JAVA$CLASS$MD5$TABLE - хеш-таблица за съхраняване на цифрови подписи (дайджест) за всеки зареден обект (за да се вземе предвид необходимостта от повторен превод на представения обект)
- Няколко спомагателни обекта, които заедно с тези две таблици играят ролята на своеобразен "речник-справочник на програмните елементи на Java" в определена схема.
Можете да разтоварите изходните текстове от „Речника на обектите на Java“ на конкретна схема от базата данни, като използвате процедурите на пакета DBMS_JAVA: Можете също така да преглеждате изходните текстове на Java програми в базата данни в конзолата на Oracle Enterprize Manager или в подобни системи на трети страни.