Java та Oracle - цедуже просто
Починаючи з версії 8.1 до складу СУБД Oracle можна додатково включати так званий JServer, що дозволяє використовувати для зберігання процедур крім PL/SQL ще й мову Java. До складу JServer входять такі елементи:
- віртуальна Java-машина JVM під назвою Aurora, що підтримує середовище для виконання Java-програм та бібліотеки класів Java
- засоби ув'язування з PL/SQL
- ряд інших
У версії 9.0 JServer перейменований в Oracle9i JVM (іноді - OJVM або Enterprise Java Server).
Місце Java в архітектурі Oracle
Наявність вбудованої віртуальної машини Java в Oracle - додаткова можливість щодо базової поставки.
Починаючи з версії 9.2, вбудована в СУБД віртуальна машина Java не підтримує магазини протоколів J2EE і CORBA. Зокрема, з цього часу немає можливості розмістити в БД під керуванням Oracle контейнери для EJB, JSP та сервлетів (OSE), як це було раніше. Їх пропонується розміщувати серед OC4J зі складу Oracle 9i Application Server. Вбудована машина Java продовжує підтримувати лише роботу процедур, що зберігаються, JDBC і SQLJ.
Співвідношення та взаємозв'язок PL/SQL і Java в Oracle
Java в Oracle є повнофункціональною замкнутою системою, проте класи Java засобами Oracle можна "публікувати" для PL/SQL-машини і викликати з програм на PL/SQL.
Аж до версії 9.2 включно PL/SQL у Oracle незрівнянно ефективніше відпрацьовує SQL-запити. З іншого боку Java має більш багате та універсальне мовне середовище для опису додатків.
Особливості Java та середовище роботи програм на Java
Архітектура та принципи роботи Java різко відрізняютьсявід архітектури та принципів роботи PL/SQL. Нижче наведено деякі особливості Java, які суттєві для використання цієї мови під час роботи з Oracle.
Програмні компоненти в середовищі розробки Java
Основними програмними компонентами серед розробки Java є вихідний код, клас, пакет, інтерфейс, файл ресурсів. Взаємини показано малюнку.
Пакет використовується для логічного угруповання програмних одиниць Java.
Архів використовується для фізичного угруповання програмних одиниць Java, необхідні роботи конкретної Java-программы, які можуть бути викликаних прямо чи з ланцюжку. Технологічно часто єдина альтернатива неймовірному числу .class-файлів.
Встановлення середовища розробки на Java
Для ведення розробок з використанням Java необхідно встановити на комп'ютері JDK (Java Development Kit, попередня назва – SDK, Software Development Kit for Java).
Починаючи з версії Oracle 8.1 JDK, присутній на CD з основною поставкою і може встановлюватися штатною програмою Oracle Installer шляхом спеціальної вказівки. У типових варіантах встановлення програмного середовища Oracle (наприклад, у варіантах Typical або Minimal у версії 8.1) JDK з'являється на комп'ютері автоматично.
JDK можна встановити незалежно від Oracle, переписавши цей програмний комплект з http://www.javasoft.com/products/.
Середовище оточення OC
p align="justify"> Для роботи програм середовища розробки Java повинні бути виставлені наступні мінімально необхідні змінні середовища оточення ОС:
- CLASSPATH. Змінна, яка вказує на розташування файлів з класами, необхідними для трансляції або виконання java-програми. Місцезнаходженням може бути (а) каталог файлової системи, в якому розташовані файли з класами та (б)zip- або jar-файл з тими ж файлами, що упаковані всередину. Шлях до файлу з класом має бути узгоджений з повним ім'ям класу, що включає ім'я пакета. Якщо ім'я пакета не використовується, у CLASSPATH слід увімкнути "." (Вказівка на поточний каталог). (Строго кажучи, для роботи програм java і javac змінну CLASSPATH можна і не виставляти, але ці програми повинні використовувати ключ -classpath, інакше не обов'язковий.)
- PATH. Сюди потрібно включити доступ до програм середовища розробки.
Виконувані модулі зі складу JDK у версії 8.1 розташовані в %ORACLE_HOME%apachejdkbin, а у версії 9 - у %ORACLE_HOME%jdkbin.
Основні бібліотеки класів 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 для роботи з 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 (наприклад, Typical або Minimal у версії 8.1).
Тим не менш, JServer/OJVM можна доустановити до наявного програмного середовища, якщо він був відсутній раніше, запускаючи сценарій initjvm.sql з каталогу %ORACLE_HOME%\javavm\install (система позначень Windows).
Приклад створення Java-програми, що зберігається.
Java-програми, що зберігаються, можуть створюватися в БД під Oracle двома способами:
завантаженням ззовні за допомогою програми loadjava та
SQL-пропозицією CREATE/ALTER JAVA …
Нижче показано обидва способи з прикладу класу, створюваного у межах пакета training.demos.
Створення за допомогою loadjava
Нехай у каталозі training/demos є файл MyJavaAgentInOracle.java (має відмінність від файлу MyHi.java, наведеного вище):
Завантаження в схему SCOTT БД тексту коду для класу в цьому файлі (система позначень Windows; у Unix-оболонках аналогічно):
set > (у версії 9 %CLASSPATH%;%ORACLE_HOME%\javavm\lib\aurora.zip)
loadjava -user scott/tiger -o training/demos/MyJavaAgentInOracle.java
Якщо в тому ж каталозі у нас буде странслированный програмою javac клас MyHiFromOracle, можнабуде завантажити в БД відразу його:
loadjava -user scott/tiger -o training/demos/MyJavaAgentInOracle.class
Завантажити код того ж класу можна по-іншому:
Звернення до завантаженої в Oracle процедури Java
Звернення до Java-програми з Java-коду робиться як завжди.
Робота зі словником-довідником
Організація довідкової інформації
Довідкова інформація про програмні елементи Java розподілена між словником-довідником СУБД (таблиця DBA_OBJECTS) та спеціальними структурами, що створюються в кожній схемі, що володіє цими елементами.
При першому завантаженні програмних елементів Java у будь-яку схему loadjava чи команда CREATE JAVA створять там:
- CREATE$JAVA$LOB$TABLE - таблиця для зберігання коду Java-програм
- JAVA$CLASS$MD5$TABLE - хеш-таблицю для зберігання цифрових підписів (digest) для кожного завантажуваного об'єкта (з метою врахування необхідності перетранслювати об'єкт, що пред'являється)
- Декілька допоміжних об'єктів, що грають разом з цими двома таблицями роль своєрідного "словника-довідника програмних елементів Java" у конкретній схемі.
Вивантажити з БД вихідні тексти з "словника-довідника об'єктів Java" конкретної схеми можна за допомогою процедур пакету DBMS_JAVA: Вихідні тексти програм на Java в БД можна подивитися також в консолі Oracle Enterprize Manager або в аналогічних системах третіх фірм.