Установите java ee sdk database server mysql oracle sql or another dbms

Обновлено: 06.07.2024

© Владимир Пржиялковский,
координатор Евро-Азиатской Группы Пользователей Oracle,
преподаватель УКЦ Interface Ltd.

Содержание

Основные понятия

Начиная с версии 8.1 в состав СУБД Oracle можно дополнительно включать так называемый JServer, позволяющий использовать для хранимых процедур помимо PL/SQL еще и язык Java. В состав JServer входят следующие элементы:

  • виртуальная Java-машина JVM под названием Aurora, поддерживающая среду для выполнения Java-программ и библиотеки классов Java
  • средства увязки с PL/SQL
  • ряд других

JVM Aurora способна исполнять методы Java ("хранимые Java-процедуры") и классы, хранимые в Oracle.

В версии 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 появляется на компьютере автоматически.

Среда окружения OC

Для работы программ среды разработки Java должны быть выставлены следующие минимально необходимые переменные среды окружения ОС:

  • CLASSPATH. Переменная, которая указывает на местонахождение файлов с классами, необходимыми для трансляции или выполнения java-программы. Местонахождением может быть (а) каталог файловой системы, в котором расположены файлы с классами и (б) zip- или jar-файл с теми же файлами, упакованными внутрь. Путь к файлу с классом должен быть согласован с полным именем класса, включающим имя пакета. Если имя пакета не используется, в CLASSPATH следует включить "." (указание на текущий каталог). (Строго говоря, для работы программ java и javac переменную CLASSPATH можно и не выставлять, но тогда эти программы обязаны использовать ключ -classpath, иначе не обязательный.)
  • PATH. Сюда нужно включить доступ к программам среды разработки.

Исполняемые модули из состава JDK в версии 8.1 расположены в %ORACLE_HOME%\apache\jdk\bin, а в версии 9 - в %ORACLE_HOME%\ jdk\bin.

Основные библиотеки классов classes111.zip и classes12.zip (разница между ними - в версиях Java) в обеих версиях Oracle находятся в %ORACLE_HOME%\jdbc\lib

Для проведения экспериментов удобно создать командный файл со следующим текстом для версии Oracle 8.1:

или со следующим текстом для версии Oracle 9.2:

Теперь можно открыть консольное окошко и прогнать нужный командный файл.

Создание самостоятельных программ на Java

Пример транслирования и выполнения Java-программы

Файл с программой под названием MyJavaAgent.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, приведенного выше):

package training.demos;public class MyJavaAgentInOracle <
public static String sayHello (String toWhom) return "Hello, " + toWhom + "!";
>
>

Загрузка в схему SCOTT БД текста кода для класса в этом файле (система обозначений Windows; в Unix-оболочках аналогично):

(в версии 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

Создание SQL-предложением

Загрузить код того же класса можно по-другому:

Обращение к загруженной в Oracle процедуре Java

Обращение к Java-программе из Java-кода делается как обычно.

Для обращения к сохраненной в БД Java-программе из PL/SQL, ее следует опубликовать для этого языка:

CREATE FUNCTION say_hello_from_java_to (to_whom IN VARCHAR2)
RETURN VARCHAR2
AS LANGUAGE JAVA
NAME 'training.demos.MyJavaAgentInOracle.sayHello (java.lang.String)
return java.lang.String';
/

После этого можно выполнить в SQL*Plus:

SET SERVEROUTPUT ON
EXEC DBMS_OUTPUT.PUT_LINE(say_hello_from_java_to('World'))

Работа со словарем-справочником

Организация справочной информации

Справочная информация о программных элементах Java распределена между словарем-справочником СУБД (таблица DBA_OBJECTS) и специальными структурами, создаваемыми в каждой схеме, владеющей этими элементами.

При первой загрузке программных элементов Java в любую схему loadjava или команда CREATE JAVA создадут там:

  • CREATE$JAVA$LOB$TABLE - таблицу для хранения кода Java-программ
  • JAVA$CLASS$MD5$TABLE - хеш-таблицу для хранения цифровых подписей (digest) для каждого загружаемого объекта (с целью учета необходимости перетранслировать предъявляемый объект)
  • Несколько вспомогательных объектов, играющих вместе с этими двумя таблицами роль своеобразного "словаря-справочника программных элементов Java" в конкретной схеме.

Фактически загрузка программой loadjava вызывает неявную выдачу команды CREATE JAVA … . Описание программных элементов Java заносится в таблицу CREATE$JAVA$LOB$TABLE. Повторная загрузка одного и того же Java-элемента реально выполняться не будет, если только (а) он не изменил свое описание или (б) не указан ключ -force при вызове программы loadjava.

Просмотр Java-элементов

Java-объекты, заведенные в схеме, можно просмотреть из таблицы USER_OBJECTS словаря-справочника обычным способом:

COLUMN object_name FORMAT A30
SELECT object_name, object_type, status, timestamp
FROM user_objects
WHERE object_name NOT LIKE 'SYS_%' AND
object_name NOT LIKE 'CREATE$%' AND
object_name NOT LIKE 'JAVA$%' AND
object_name NOT LIKE 'LOADLOB%' AND
object_type LIKE 'JAVA %'
ORDER BY 2, 1;

Просмотр исходных текстов

Выгрузить из БД исходные тексты из "словаря-справочника объектов Java" конкретной схемы можно с помощью процедур пакета DBMS_JAVA:

DECLARE
PROCEDURE put_java_source(jclass IN VARCHAR2) IS
b CLOB;
v VARCHAR2(4000);
i INTEGER := 4000;
BEGIN
DBMS_LOB.CREATETEMPORARY(b, FALSE);
DBMS_JAVA.EXPORT_SOURCE(jclass, b);
DBMS_LOB.READ(b, i, 1, v);
DBMS_OUTPUT.PUT_LINE(v);
END;
BEGIN
put_java_source('training/demos/MyJavaAgentInOracle');
END;
/

Исходные тексты программ на Java в БД модно посмотреть также в консоли Oracle Enterprize Manager или в аналогичных системах третьих фирм.

Преобразование имен

Стандарт именования классов в Java допускает более длинные имена, чем предел в 30 знаков в SQL Oracle. Достаточно длинные Java-имена Oracle при помещении в словарь-справочник самостоятельно заменяет на придуманные более короткие. Получить первоначальное имя по присвоенному Oracle можно с помощью функции DBMS_JAVA.LONGNAME. Пример ее использования:

COLUMN shortname FORMAT A30
COLUMN longname FORMAT A60

SELECT object_name shortname,DBMS_JAVA.LONGNAME(object_name) longname
FROM user_objects
WHERE object_type = 'JAVA CLASS';

Кроме того, при помещении составного имени Java в БД Oracle переводит точки в знаки "/", например

Я хочу бежать Oracle SQL Devloper на Ubuntu с этой командой:

введите полный путь установки JDK (или Ctrl-C для выхода), путь будет сохранен в /home/aimad/.sqldeveloper / 4.0.0 / product.conf

поэтому я дал путь jdk следующим образом:

ошибка: Java home / usr / lib/jvm / java-7-openjdk-i386 / / bin / java не является версия JDK. Запуск SQL Developer под JRE не поддерживается.

для меня это была аналогичная ошибка. Я решил просто вставить

/.sqldeveloper / 4.0.0 / product.файл conf.

Я согласен с ответом сабозолтана, но для этого должно быть какое-то объяснение:

этот нам нужно держать в продукте.файл conf. Ино, чтобы открыть файл, нужно ввести следующую команду:

после этого, введите следующую команду.

это ваше разработчика SQL будет открыт.

у Вас установлен только Java JRE, вам нужно установить JDK для работы Oracle SQL Devloper.

TL; DR

установите JDK, введите sudo apt-get install openjdk-7-jdk в терминале.

чтобы проверить, установлен ли JDK, введите aptitude search openjdk-7-jdk в терминале. Если вы видите i рядом с любым пакетом, то он установлен. Например, у меня есть 64-разрядный JDK, установленный на моей машине, это есть выход.

если пакет не имеет i рядом с ним, то он не установлен.

для установки в JDK в ubuntu вам необходимо установить пакет openjdk-7-jdk. Установить, запустив sudo apt-get install openjdk-7-jdk в терминале.

настройки переменной JAVA_HOME

после установки JDK вам нужно установить переменную среды JAVA_HOME. Вы можете увидеть все установленные JDKs на вашем компьютере, запустив update-java-alternatives -l , выберите тот, который вы хотите использовать, и скопируйте третье поле, это поле является JAVA_HOME для этого JDK.

например, на моей машине

это означает, что у меня установлен только один JDK, java-1.7.0-openjdk-amd64 , и его JAVA_HOME является /usr/lib/jvm/java-1.7.0-openjdk-amd64 .

затем установите переменную среды JAVA_HOME, в Bash я бы установил ее, запустив это из терминала:

проверьте, чтобы убедиться, что он правильно установлен.

этот установит JAVA_HOME для вашего текущего терминального сеанса, чтобы не беспокоиться о его настройке снова, вы можете добавить его в свой .

после установки JDK и набора переменных среды JAVA_HOME вы можете перейти в каталог разработчика sql и запустить sqldeveloper.sh сценарий.

если sqldeveloper.sh не является исполняемым run chmod +x sqldeveloper.sh и снова запустить скрипт.

для полноты вы можете проверить, какие пакеты Java вы установили, запустив aptitude search openjdk-7 . Если у вас установлен JRE, вы увидите i рядом с пакетом, который начинается с openjdk-7-jre

просто решил это, не добавив косую черту, как вы это сделали, поэтому вместо

Эта статья открывает небольшой цикл, посвященный азам взаимодействия с базами данных (БД) в Java и введению в SQL. Многие программы заняты обработкой и модификацией информации, её поддержкой в актуальном состоянии. Поскольку данные — весьма важная часть логики программ, то под них зачастую выделяют отдельное хранилище. Информация в нём структурирована и подчинена специальным правилам, чтобы обеспечить правильность обработки и хранения. Доступ к данным и их изменение осуществляется с помощью специального языка запросов — SQL (Structured Query Language).

Система управления базами данных — это ПО, которое обеспечивает взаимодействие разных внешних программ с данными и дополнительные службы (журналирование, восстановление, резервное копирование и тому подобное), в том числе посредством SQL. То есть программная прослойка между данными и внешними программами с ними работающими. В этой части ответим на вопросы что такое SQL, что такое SQL сервер и создадим первую программу для взаимодействия с СУБД.

Виды СУБД

  • Иерархические. Данные организованы в виде древовидной структуры. Пример — файловая система, которая начинается с корня диска и далее прирастает ветвями файлов разных типов и папок разной степени вложенности.
  • Сетевые. Видоизменение иерархической, у каждого узла может быть больше одного родителя.
  • Объектно-ориентированные. Данные организованы в виде классов/объектов c их атрибутами и принципами взаимодействия согласно ООП.
  • Реляционные. Данные этого вида СУБД организованы в таблицах. Таблицы могут быть связаны друг с другом, информация в них структурирована.
  • Что такое SQL-Сервер и как он работает? Взаимодействие с СУБД происходит по клиент-серверному принципу. Некая внешняя программа посылает запрос в виде операторов и команд на языке SQL, СУБД его обрабатывает и высылает ответ. Для упрощения примем, что SQL Сервер = СУБД.
  • Data Definition Language (DDL) – определения данных. Создание структуры БД и её объектов;
  • Data Manipulation Language(DML) – собственно взаимодействие с данными: вставка, удаление, изменение и чтение;
  • Transaction Control Language (TCL) – управление транзакциями;
  • Data Control Language(DCL) – управление правами доступа к данным и структурам БД.

Часть 1. Введение в SQL - 2

В 80-е годы прошлого века персональные компьютеры типа PC XT/AT завоевали рынок. Во многом это произошло благодаря модульности их конструкции. Это означает, что пользователь мог довольно просто менять ту или иную составную часть своего компьютера (процессор, видеокарту, диски и тому подобное). Это замечательное свойство сохранилось и поныне: мы меняем видеокарту и обновляем драйвер (иногда он и вовсе обновляется сам, в автоматическом режиме). Чаще всего при таких манипуляциях ничего плохого не происходит, и существующие программы продолжат работать с обновившейся системой без переустановки. Аналогично и для работы в Java с СУБД. Для стандартизации работы с SQL-серверами взаимодействие с ней можно выполнять через единую точку — JDBC (Java DataBase Connectivity). Она представляет собой реализацию пакета java.sql для работы с СУБД. Производители всех популярных SQL-серверов выпускают для них драйверы JDBC. Рассмотрим схему ниже. Приложение использует экземпляры классов из java.sql. Затем мы передаем необходимые команды для получения/модификации данных. Далее java.sql через jdbc-драйвер взаимодействует с СУБД и возвращает нам готовый результат. Для перехода на СУБД другого производителя часто достаточно сменить JDBC и выполнить базовые настройки. Остальные части программы при этом не меняются.

Первая программа

Разбор кода

Блок констант:

  1. DB_Driver: Здесь мы определили имя драйвера, которое можно узнать, например, кликнув мышкой на подключенную библиотеку и развернув её структуру в директории lib текущего проекта.
  2. DB_URL: Адрес нашей базы данных. Состоит из данных, разделённых двоеточием:
  3. Протокол=jdbc
  4. Вендор (производитель/наименование) СУБД=h2
  5. Расположение СУБД, в нашем случае путь до файла (c:/JavaPrj/SQLDemo/db/stockExchange). Для сетевых СУБД тут дополнительно указываются имена или IP адреса удалённых серверов, TCP/UDP номера портов и так далее.

Обработка ошибок:

Вызов методов нашего кода может вернуть ошибки, на которые следует обратить внимание. На данном этапе мы просто информируем о них в консоли. Заметим, что ошибки при работе с СУБД — это чаще всего SQLException.

Я хочу запустить Oracle SQL Devloper в Ubuntu с помощью этой команды:

Введите полный путь к установке JDK (или нажмите Ctrl-C для выхода), путь будет сохранен в /home/aimad/.sqldeveloper/4.0.0/product.conf

Итак, я дал путь jdk следующим образом:

Ошибка: Java home / usr / lib / jvm / java-7-openjdk-i386 // bin / java не является JDK. Запуск SQL Developer под JRE не поддерживается.

Для меня это была аналогичная ошибка. Решил просто вставив

/ .sqldeveloper / 4.0.0 / product.conf.

Я столкнулся с подобной проблемой. Пробовал опубликованные рекомендации, но безуспешно. Возможно, причина, по которой я использую sdkman для управления версиями Java, может быть связана с разрешениями из-за Mac OS.

Для пользователей Mac важно попробовать управлять конфигурацией:

Этот шаг может помочь, если вы используете jdk, установленный brew по пути по умолчанию.

Если вы установили openjdk с sdkman , путь к java будет похож на

/.sdkman/candidates/java/> , и этот путь необходимо сопоставить с ожиданиями по умолчанию с псевдонимами.

У меня не было информации о пути по умолчанию, поэтому нужно найти исполняемый файл:

  • запустить sqldeveloper (чтобы показать error message );
  • в терминале попробуйте ps ux | grep sql - это поможет вам определить местоположение исполняемого файла sqldeveloper.sh ;
  • откройте файл в текстовом редакторе:
    • удалить или прокомментировать блок, который пытается получить Java из местоположения по умолчанию /usr/libexec/java_home ;
    • найдите строку с помощью export JAVA_HOME=$TMP_PATH и замените путь своим путем к домашней странице java или просто удалите строку, если JAVA_HOME был указан в настройках ОС.

    В моем случае (Oracle SQL Developer 4.1.3), похоже, проблема с версией Java - когда я указываю на Java 8 JDK вместо 11 , он сразу же начинает работать.

    У меня была аналогичная проблема, и я решил ее, просто добавив SetSkipJ2SDKCheck true в один из файлов ниже.

    Просто вставьте ниже один в файл

    / .sqldeveloper / 4.0.0 / product.conf.

    Просто введите /usr/java/default и нажмите Enter, если вы используете Oracle JDK.

    Просто решил это, не добавляя косую черту, как вы, поэтому вместо

    У вас установлена ​​только Java JRE, вам необходимо установить JDK для работы Oracle SQL Devloper.

    TL; DR

    Установите JDK, введите sudo apt-get install openjdk-7-jdk в терминале.

    Чтобы проверить, установлен ли у вас JDK, введите aptitude search openjdk-7-jdk в терминале. Если вы видите i рядом с каким-либо пакетом, значит, он установлен. Например, у меня на машине установлен 64-битный JDK, вот результат.

    Если рядом с пакетом нет значка i , значит, он не установлен.

    Для установки в JDK в ubuntu необходимо установить пакет openjdk-7-jdk. Установите, запустив sudo apt-get install openjdk-7-jdk в терминале.

    Настройка JAVA_HOME

    После установки JDK вам необходимо установить переменную среды JAVA_HOME. Вы можете увидеть все установленные JDK на вашем компьютере, запустив update-java-alternatives -l , выберите тот, который вы хотите использовать, и скопируйте третье поле, это поле - JAVA_HOME для этого JDK.

    Например, на моей машине

    Это означает, что у меня установлен только один JDK, java-1.7.0-openjdk-amd64 , а его JAVA_HOME - /usr/lib/jvm/java-1.7.0-openjdk-amd64 .

    Затем установите переменную среды JAVA_HOME, в Bash я бы установил ее, запустив это с терминала:

    Убедитесь, что он установлен правильно.

    Это установит JAVA_HOME для вашего текущего сеанса терминала, чтобы не беспокоиться о его повторной настройке, вы можете добавить его в свой файл

    После установки JDK и установки переменной среды JAVA_HOME вы можете перейти в каталог разработчика sql и запустить сценарий sqldeveloper.sh.

    Если sqldeveloper.sh не является исполняемым файлом, запустите chmod +x sqldeveloper.sh и снова запустите сценарий.

    Для полноты вы можете проверить, какие пакеты Java вы установили, запустив aptitude search openjdk-7 . Если у вас установлена ​​JRE, вы увидите i рядом с пакетом, который начинается с openjdk-7-jre

    Я согласен с ответом szabozoltan, но для этого должно быть какое-то объяснение:

    Читайте также: