Czy bazy danych Oracle używają Java wewnętrznie

Każdy klient rozpoczyna sesję, wywołuje moduły logiczne po stronie serwera przez punkty wejścia najwyższego poziomu i ostatecznie kończy sesję. Środowisko serwera ukrywa zarządzanie sesjami, sieciami i innymi wspólnymi zasobami z hostowanych programów Java.

Streszczenie

Bazy danych Oracle używają Java wewnętrznie. Oracle zapewnia kompleksowe rozwiązanie Java dla programistów aplikacji przedsiębiorstwa. To rozwiązanie obejmuje interfejsy programowe po stronie klienta i serwera, narzędzia do tworzenia Java oraz JVM zintegrowane z bazą danych Oracle. Java w tworzeniu aplikacji bazy danych oferuje takie funkcje, jak projektowanie procedur i funkcji związanych z danymi, rozszerzenie możliwości bazy danych o biblioteki Java oraz wypełnianie SQL i Java2EE World. Środowisko programowania Java zapewnia również procedury przechowywane Java jako towarzysz interfejsów programowania PL/SQL, JDBC i SQLJ w celu uzyskania dostępu do danych SQL oraz narzędzi do zarządzania klasami. Dodatkowo bazy danych Oracle oferują integrację i funkcjonalność PL/SQL, umożliwiając wywołanie istniejących programów PL/SQL z Java i odwrotnie. Sterowniki JDBC dostarczone przez Oracle Włącz łączność z bazą danych dla aplikacji i apletów Java.

Kluczowe punkty

1. Java w opracowywaniu aplikacji bazy danych:

  • Projektowanie procedur i funkcji związanych z danymi za pomocą interfejsów API Java SE i JDBC.
  • Rozszerzenie zasięgu i możliwości bazy danych o standardowe biblioteki Java Standard i.
  • Elastyczne partycjonowanie aplikacji J2SE do symetrycznego dostępu do danych na poziomie JDBC.
  • Mylejem SQL i J2EE World, wywołując komponenty internetowe i łącząc SQL i usługi internetowe.

2. Zastosowanie środowiska programowania Java:

  • Procedury przechowywane Java jako odpowiednik Java i towarzysz PL/SQL.
  • Interfejsy programowania JDBC i SQLJ w celu uzyskania dostępu do danych SQL.
  • Narzędzia i skrypty do opracowywania, ładowania i zarządzania klasami.

3. Procedury przechowywane Java:

Procedury przechowywane Java to programy Java wdrożone na serwerze i uruchomione z serwera, podobnie jak procedury przechowywane PL/SQL. Można je wywoływać bezpośrednio lub pośrednio przez wyzwalacze. Baza danych Oracle zapewnia pełną implementację standardowego języka programowania Java i JVM.

4. Integracja PL/SQL i funkcja Oracle RDBMS:

Bazy danych Oracle umożliwiają wywoływanie istniejących programów PL/SQL z programów Java i Java z PL/SQL. Ułatwia to wykorzystanie kodu PL/SQL i Java i wykorzystanie możliwości komputerów internetowych opartych na Javie. Sterowniki JDBC dostarczone przez Oracle obejmują cienki sterownik JDBC, sterownik JDBC OCI i wewnętrzny sterownik serwera JDBC.

pytania

1. Jakie funkcje oferuje Java w opracowywaniu aplikacji bazy danych?

Java w tworzeniu aplikacji bazy danych oferuje takie funkcje, jak projektowanie procedur i funkcji związanych z danymi, rozszerzenie możliwości bazy danych o biblioteki Java oraz wypełnianie SQL i Java2EE World.

2. Jaki jest równoważny procedurę składowaną Java PL/SQL?

Procedury przechowywane Java służą jako odpowiednik Java i towarzysz PL/SQL.

3. Jakie są interfejsy programowania dostępu do danych SQL w Javie?

Interfejsy programowania JDBC i SQLJ są używane do dostępu do danych SQL w Javie.

4. Jakie narzędzia są dostępne w środowisku programowania Java?

Środowisko programowania Java zapewnia narzędzia i skrypty do opracowywania, ładowania i zarządzania klasami.

5. Jak można wywoływać procedury przechowywane Java?

Procedury przechowywane Java mogą być wywoływane bezpośrednio lub pośrednio przez wyzwalacze.

6. Czy bazy danych Oracle mogą wywołać istniejące programy PL/SQL z Java?

Tak, bazy danych Oracle obsługują wywołanie istniejących programów PL/SQL z Java.

7. Jak aplikacje Java mogą uzyskać dostęp do danych Oracle SQL?

Aplikacje Java mogą uzyskać dostęp do danych Oracle SQL za pośrednictwem sterowników JDBC dostarczanych przez Oracle.

8. Jaki jest cel cienkiego sterownika JDBC?

Cienki sterownik JDBC umożliwia pisanie aplikacji i apletów Pure Java, które uzyskują dostęp do danych Oracle SQL. Nadaje się do aplikacji i apletów internetowych.

9. Czym różni się sterownik JDBC OCI od cienkiego sterownika JDBC?

Sterownik JDBC OCI uzyskuje dostęp do wyroczni natywnego kodu i bibliotek na kliencie lub środkowym poziomie, zapewniając wzmocnienie wydajności w porównaniu z cienkim sterownikiem JDBC kosztem większego rozmiaru i instalacji po stronie klienta.

10. Do czego służy wewnętrzny sterownik serwera JDBC?

Wewnętrzny sterownik serwera JDBC umożliwia aplikacje Java działające w Oracle JVM na serwerze w celu uzyskania dostępu do lokalnie zdefiniowanych danych za pomocą JDBC, zapewniając zwiększenie wydajności poprzez bezpośrednio wykorzystanie podstawowych bibliotek Oracle RDBMS.

Czy bazy danych Oracle używają Java wewnętrznie

Każdy klient rozpoczyna sesję, wywołuje moduły logiczne po stronie serwera przez punkty wejścia najwyższego poziomu i ostatecznie kończy sesję. Środowisko serwera ukrywa zarządzanie sesjami, sieciami i innymi wspólnymi zasobami z hostowanych programów Java.

Czy Oracle używa Java

Oracle zapewnia programistom aplikacji Enterprise kompleksowe rozwiązanie Java do tworzenia, wdrażania i zarządzania aplikacjami Java. Całkowite rozwiązanie składa się z interfejsów programowych po stronie klienta i serwera, narzędzi do obsługi rozwoju Java oraz JVM zintegrowanego z bazą danych Oracle. Wszystkie te produkty są w pełni kompatybilne ze standardami Java. Ta sekcja obejmuje następujące tematy:

  • Java w tworzeniu aplikacji bazy danych
  • Zastosowanie środowiska programowania Java
  • Procedury przechowywane Java
  • Integracja PL/SQL i funkcja Oracle RDBMS
  • Narzędzia programistyczne
  • Obsługa protokołu internetowego Wersja 6

1.6.1 Java w tworzeniu aplikacji bazy danych

Najważniejsze cechy Java w tworzeniu aplikacji bazy danych to:

  • Projektowanie procedur i funkcji związanych z danymi za pomocą interfejsów API Java SE i JDBC.
  • Rozszerzenie zasięgu i możliwości bazy danych o standardowe biblioteki Java Standard i. Na przykład dostęp do baz danych innych firm za pomocą sterowników w bazie danych i dostęp do Hadoop/HDFS.
  • Zapewnienie elastycznego partycjonowania platformy Java2, Standard Edition (J2SE) aplikacji do symetrycznego dostępu do danych na poziomie JDBC.
  • Mylefowanie SQL i platforma Java2, Enterprise Edition (J2EE) World by:
    • Wzywanie komponentów internetowych, takich jak JSP i servlet
    • Myzowanie SQL i usług internetowych za pomocą objaśnień serwisowych internetowych

    1.6.2 Zastosowanie środowiska programowania Java

    Oprócz Oracle JVM środowisko programowania Java zapewnia:

    • Procedury przechowywane Java jako odpowiednik Java i towarzysz PL/SQL. Procedury przechowywane Java są ściśle zintegrowane z PL/SQL. Możesz zadzwonić do procedur przechowywanych Java z pakietów PL/SQL i procedur PL/SQL z procedur przechowywanych Java.
    • Interfejsy programowania JDBC i SQLJ w celu uzyskania dostępu do danych SQL.
    • Narzędzia i skrypty, które pomagają w tworzeniu, ładowaniu i zarządzaniu klasami.

    Poniższa tabela pomaga zdecydować, kiedy użyć Java API:

    Mieć procedurę Java z SQL, taką jak spust.

    Procedury przechowywane Java

    Aby wywołać statyczne, proste instrukcja SQL z znanej tabeli ze znanymi nazwami kolumn z obiektu Java.

    Aby wywołać dynamiczne, złożone instrukcje SQL z obiektu Java.

    1.6.3 Procedury przechowywane Java

    Procedury przechowywane Java to programy Java zapisane i wdrożone na serwerze i uruchomione z serwera, dokładnie jak procedura przechowywana PL/SQL. Wywołujesz go bezpośrednio z produktami takimi jak sql*plus lub pośrednio z spustem. Możesz uzyskać do niego dostęp od dowolnego klienta Net Oracle, takiego jak OCI i Pro*lub JDBC lub SQLJ.

    Ponadto możesz użyć Java do opracowania potężnych programów po stronie serwera, które mogą być niezależne od PL/SQL. Baza danych Oracle zapewnia pełną implementację standardowego języka programowania Java i w pełni zgodnego JVM.

    Powiązane tematy

    1.6.4 PL/SQL Integracja i funkcja Oracle RDBMS

    Możesz wywołać istniejące programy PL/SQL z programów Java i Java z PL/SQL. To rozwiązanie chroni i wykorzystuje kod PL/SQL i Java oraz otwiera zalety i możliwości komputerów internetowych opartych na Javie.

    Baza danych Oracle oferuje dwa różne interfejsy API Java do dostępu do danych SQL, JDBC i SQLJ. Oba te interfejsy API są dostępne na kliencie, a interfejs API JDBC jest również dostępny na serwerze. W rezultacie możesz wdrożyć swoje aplikacje na kliencie i serwerze.

    Poniższe tematy wprowadzają interfejsy API Java dostarczone przez Oracle Database:

    1.6.4.1 sterowniki JDBC

    JDBC to protokół dostępu do bazy danych, który umożliwia łączenie się z bazą danych i uruchamianie instrukcji i zapytań SQL do bazy danych. Podstawowe biblioteki klas Java zapewniają następujące interfejsy API JDBC: Java.SQL i Javax.SQL . Jednak JDBC jest zaprojektowany tak, aby umożliwić dostawcom dostarczanie sterowników, którzy oferują niezbędną specjalizację dla konkretnej bazy danych. Oracle zapewnia następujące odrębne sterowniki JDBC:

    Cienki sterownik JDBC

    Możesz użyć cienkiego sterownika JDBC do pisania aplikacji i apletów czystych Java, które uzyskują dostęp do danych Oracle SQL. Cienki sterownik JDBC jest szczególnie odpowiedni dla aplikacji i apletów internetowych, ponieważ możesz go dynamicznie pobrać ze strony internetowej, podobnie jak dowolne inne aplet Java.

    JDBC OCI Driver

    Sterownik JDBC OCI uzyskuje dostęp do kodu natywnego specyficznego dla Oracle, to znaczy kod nie-Java i biblioteki na kliencie lub środkowym poziomie, zapewniając zwiększenie wydajności w porównaniu z cienkim sterownikiem JDBC, kosztem znacznie większego rozmiaru i instalacji po stronie klienta po stronie klienta.

    Wewnętrzny sterownik serwera JDBC

    Baza danych Oracle używa wewnętrznego sterownika po stronie serwera, gdy kod Java działa na serwerze. Umożliwia aplikacje Java działające w Oracle JVM na serwerze w celu uzyskania dostępu do lokalnie zdefiniowanych danych, to znaczy danych o tym samym systemie i w tym samym procesie, z JDBC. Zapewnia zwiększenie wydajności, ze względu na jego zdolność do bezpośredniego korzystania z bibliotek Oracle RDBMS, bez obciążenia interweniującego połączenia sieciowego między kodem Java a danymi SQL. Obsługując ten sam interfejs Java-SQL na serwerze, baza danych Oracle nie wymaga przeróbki kodu podczas wdrażania.

    Powiązane tematy

    Czy bazy danych Oracle używają Java wewnętrznie?

    Edytować:
    Oracle zawiera JVM, który działa na tym samym komputerze co sama baza danych, ale nie jest używana do uruchamiania żadnego kodu „DBMS”.

    Tylko tam uruchamianie procedur/funkcji przechowywanych napisanych w Javie.

    odpowiedział 13 września 2011 o 6:43

    A_HORES_WITH_NO_NAME A_HORES_WITH_NO_NAME

    78K 14 14 Złote odznaki 157 157 srebrnych odznak 194 194 Brązowe odznaki

    Wow, nie wiedziałem o części C. +1.

    13 września 2011 o 10:17

    Sprawdź ich „harmonogram historii”: Oracle.com/US/Corporate/Harmonine/Index.HTML: 1983: „Oracle wypuszcza wersję 3 swojej bazy danych, z kodem serwera zapisanym w języku programowania C”

    13 września 2011 o 10:24

    Domyślam się, że java nie istnieje. Myślę, że pierwszy Java przyszedł do Oracle 8i.

    13 września 2011 o 16:59

    Wewnętrzny JVM nie jest używany do uruchamiania żadnego kodu „DBMS”. Tylko tam uruchamianie procedur/funkcji przechowywanych napisanych w Javie.

    13 września 2011 o 18:27

    @a_horse_with_no_name – Wydaje mi się, że zależy to od tego, co masz na myśli przez „standardowe” pakiety. Oracle wysyła wiele pakietów zbudowanych w Javie (na przykład wszystko, co używa XDB, w tym wiele pakietów XMLQuery, zależy od wewnętrznego JVM). To nie są „standardowe” w sensie pakietów, których większość programistów często używa. Ale są „standardem” w tym sensie, że są instalowane podczas domyślnej instalacji bazy danych Oracle.

    1
    Wprowadzenie do Java w bazie danych Oracle

    Ta książka zawiera przegląd sposobu tworzenia, ładowania i wykonania aplikacji Java w bazie danych Oracle.

    Ten rozdział zawiera następujące informacje:

    • Zawartość rozdziału
    • Co nowego w tym wydaniu?
    • Przegląd Java
    • Dlaczego warto korzystać z Java w bazie danych Oracle?
    • Co różni się z OracleJvm?
    • Główne elementy OracleJVM
    • Strategia aplikacji Java Oracle
    • Desupport of J2EE Technologies w bazie danych Oracle

    Zawartość rozdziału

    • Wprowadza język Java dla programistów bazy danych Oracle. Programiści Oracle PL/SQL są przyzwyczajeni do tworzenia aplikacji po stronie serwera, które mają ścisłą integrację z danymi SQL. Możesz opracować aplikacje po stronie serwera Java, które korzystają ze skalowalności i wydajności bazy danych Oracle. Jeśli nie znasz Java, zobacz „Przegląd Java” .
    • Bada, dlaczego może rozważyć korzystanie z Java w bazie danych Oracle. Zobacz „Po co używać Java w bazie danych Oracle?” . Ponadto podano krótki opis dla każdej z interfejsów API Java obsługiwanych w bazie danych Oracle. Lista interfejsów API obejmuje procedury przechowywane JDBC i Java. Zobacz „Strategia aplikacji Java Oracle” .

    Co nowego w tym wydaniu?

    Poniższe sekcje opisują dodatki do tego wydania:

    • Uaktualnienie do J2SE 1.4.1
    • Nowy model pamięci dla sesji w trybie dedykowanym
    • Baza danych obsługi usług internetowych
    • Native interfejs Java
    • Ejb Wezwanie

    Uaktualnienie do J2SE 1.4.1

    W tej wersji klasy systemowe są zaktualizowane z J2SE 1.3 do J2SE 1.4.1. J2se 1.4.1 jest kompatybilny z J2SE 1.3. Sun Microsystems publikuje listę niezgodności między J2SE 1.4.1 i poprzednie wersje na następnej stronie internetowej:

    http: // java.słońce.com/produkty/j2se/1.4.1/Kompatybilność.html

    W ramach aktualizacji klas systemowych do J2SE 1.4.1, OracleJVM obsługuje bezgłowe AWT. Bezgłowy AWT pozwala na obliczenia AWT, które nie opiera się na wystąpieniu natywnych wyświetlaczy i wejściowych urządzeń platformy, ale zamiast tego odmawia próby dostępu do tych zasobów natywnych. Metody, które próbują wyświetlić graficzny interfejs użytkownika lub odczytać z klawiatury lub wejścia myszy zamiast tego wyrzuć nowy wyjątek wykonawczy Java.Awt.Zgłoszenie się. Podobnie, OracleJVM zabiera próby odtwarzania lub nagrywania dźwięku za pomocą natywnych urządzeń dźwiękowych serwera, ale nadal umożliwia aplikacjom odczytanie, pisanie i manipulowanie obsługiwanymi plikami dźwiękowymi. Aby uzyskać więcej informacji, zobacz „Interfejsy użytkownika na serwerze” .

    Nowy model pamięci dla sesji w trybie dedykowanym

    W Oracle Database OracleJVM ma nowy model pamięci dla sesji, które łączą się z bazą danych za pośrednictwem dedykowanego serwera. Ponieważ sesja za pomocą dedykowanego serwera ma gwarancję korzystania z tego samego procesu dla każdego wywołania bazy danych, obszar globalny proces jest używany do pamięci specyficznej dla sesji i alokacji obiektów. Oznacza to, że niektóre obiekty i zasoby, które kiedyś zostały odzyskane na końcu każdego połączenia, mogą teraz żyć w połączeniach. W szczególności zasoby specyficzne dla określonego systemu operacyjnego, takie jak wątki i otwarte pliki, teraz nie są już oczyszczone na końcu każdego wywołania bazy danych.

    W przypadku sesji wykorzystujących wspólne serwery ograniczenia między połączeniami, które stosowane w poprzednich wydaniach są nadal obecne. Powodem jest to, że sesja korzystająca z serwera udostępnionego nie jest gwarantowana do połączenia z tym samym procesem na kolejnym wywołaniu bazy danych, a zatem pamięć i obiekty specyficzne dla sesji, które muszą żyć między połączeniami, są zapisywane w obszarze globalnym systemu. Oznacza to, że zasoby specyficzne dla procesu, takie jak wątki, otwarte pliki i gniazda, muszą zostać wyczyszczone na końcu każdego połączenia, a zatem nie będą dostępne na następne połączenie. Aby uzyskać więcej informacji na temat zachowania OracleJVM podczas korzystania z udostępnionych serwerów, zobacz „Specjalne rozważania dla współdzielonych serwerów” .

    Baza danych obsługi usług internetowych

    W Oracle Database możesz załadować stos klienta usługi sieci WWW do OracleJVM, aby obsługiwać opowieści do zewnętrznych usług internetowych od Java, a także z PL/SQL. Możesz użyć narzędzia JPublisher do generowania statycznych klientów klientów Java, a także specyfikacji połączeń PL/SQL na tych proxy, które są ładowane do OracleJVM, aby umożliwić dostęp do usług internetowych z Java, PL/SQL i SQL.

    Native interfejs Java

    W bazie danych Oracle możesz teraz wywoływać publiczne metody statyczne klas Java w OracleJVM bezpośrednio od klientów Java bez definiowania specyfikacji połączeń PL/SQL i wywoływania ich za pośrednictwem JDBC. Zamiast tego możesz użyć narzędzia JPublisher do wygenerowania klasy klienta-proxy z tym samym podpisem co klasa Java po stronie serwera. Po utworzeniu instancji klienta-proxy z połączeniem JDBC możesz bezpośrednio wywołać metody proxy.

    Rysunek 1-1 pokazuje interfejs API po stronie klienta do bezpośredniego wywołania statycznych metod Java po stronie serwera. JPublisher przejrzysty dba o generowanie odcinka.

    Rysunek 1-1 Natywna interfejs Java

    Na przykład, aby wywołać następującą metodę na serwerze

    Publiczny ciąg Oracle.SQLJ.szachownica.JDBCVERVERSION.to_string ();

    jpub -java = Oracle.SQLJ.szachownica.JDBCVERVERSION

    Ejb Wezwanie

    W niektórych aplikacjach korporacyjnych jest niezbędne dostęp do Enterprise Java Bean (EJB), które są wdrażane na zdalnym serwerze, z wewnątrz bazy danych. Baza danych Oracle zapewnia możliwość dostępu do zdalnie wdrożonych EJBS przez RMI.

    Rysunek 1-2 Wezwanie EJB

    Przegląd Java

    Java pojawiła się jako obiektowy język programowania. Zawiera następujące pojęcia:

    • Maszyna wirtualna Java (JVM), która stanowi podstawową podstawę niezależności platformy
    • Zautomatyzowane techniki zarządzania przechowywaniem, z których najbardziej widocznym jest zbieranie śmieci
    • Składnia języka, która pożycza z C i egzekwuje silne pisanie

    Rezultatem jest język, który jest obiektowy i wydajny dla programów na poziomie aplikacji.

    Java i terminologia programowania zorientowana na obiekty

    W tej sekcji obejmuje podstawową terminologię opracowywania aplikacji Java w środowisku Oracle Batabase. Warunki powinny być znane doświadczonym programistom Java. Szczegółowa dyskusja na temat programowania obiektowego lub języka Java wykracza poza zakres tej książki. Wiele tekstów, oprócz pełnej specyfikacji języka, jest dostępnych w księgarni i w Internecie. Zobacz „Sugerowane czytanie” w przedmowie, aby uzyskać wskaźniki do materiałów referencyjnych i miejsc do znalezienia informacji związanych z Java w Internecie.

    Zajęcia

    Wszystkie obiektowe języki programowania wspierają koncepcję klasy. Podobnie jak w przypadku definicji tabeli, klasa zawiera szablon dla obiektów, które mają wspólne cechy. Każda klasa może zawierać następujące czynności:

    • Atrybuty-zmienne statyczne lub instancji, które posiada każdy obiekt określonej klasy.
    • Metody-możesz wywołać metody zdefiniowane przez klasę lub odziedziczone przez dowolne klasy rozszerzone z klasy.

    Kiedy tworzysz obiekt z klasy, tworzysz instancję tej klasy. Instancja zawiera pola obiektu, które są znane jako jego dane lub stan. Rysunek 1-3 pokazuje przykład klasy pracownika zdefiniowanej dwoma atrybutami: nazwisko (lastName) i identyfikator pracownika (id).

    Rysunek 1-3 Klasy i instancje

    Podczas tworzenia instancji atrybuty przechowują informacje indywidualne i prywatne istotne tylko dla pracownika. Oznacza to, że informacje zawarte w instancji pracowników są znane tylko dla tego jednego pracownika. Przykład na rycinie 1-3 pokazuje dwa przypadki pracownika-Smitha i Jonesa. Każda instancja zawiera informacje istotne dla poszczególnych pracowników.

    Atrybuty

    Atrybuty w instancji są znane jako pola. Pola instancji są analogiczne do pola relacyjnego rzędu tabeli. Klasa definiuje pola, a także rodzaj każdego pola. Możesz zadeklarować pola w Javie za dostęp statyczny, publiczny, prywatny, chroniony lub domyślny.

    • Publiczne, prywatne, chronione lub domyślne pola dostępu są tworzone w każdej instancji.
    • Pola statyczne są jak zmienne globalne, ponieważ informacje są dostępne dla wszystkich przypadków klasy pracowników.

    Specyfikacja języka określa reguły widoczności danych dla wszystkich dziedzin. Zasady widoczności Zdefiniuj w jakich okolicznościach można uzyskać dostęp do danych w tych dziedzinach.

    Metody

    Klasa określa również metody, które możesz wywołać w instancji tej klasy. Metody są napisane w Javie i zdefiniują zachowanie obiektu. Ta pakiet stanu i zachowania jest esencją enkapsulacji, która jest cechą wszystkich obiektowych języków programowania. Jeśli zdefiniujesz klasę pracowników, oświadczając, że identyfikator każdego pracownika jest polem prywatnym, inne obiekty mogą uzyskać dostęp do tego pola prywatnego tylko wtedy, gdy metoda zwróci pole. W tym przykładzie obiekt może odzyskać identyfikator pracownika, wywołując pracownika.metoda getId ().

    Ponadto, z enkapsulacją, możesz zadeklarować, że pracownik.Metoda getId () jest prywatna lub możesz zdecydować, aby nie pisać pracownika.metoda getId (). Enkapsulacja pomaga pisać programy wielokrotnego użytku, a nie nadużywane. Zakapulowanie sprawia, że ​​publiczne są tylko cechy obiektu, które są ogłoszone publicznie; Wszystkie inne pola i metody są prywatne. Prywatne pola i metody mogą być stosowane do wewnętrznego przetwarzania obiektów.

    Hierarchia klas

    Java definiuje klasy w dużej hierarchii klas. Na szczycie hierarchii znajduje się klasa obiektowa. Wszystkie zajęcia w Javie dziedziczą po klasie obiektowej na pewnym poziomie, gdy wchodzisz przez łańcuch spadków nadklasów. Kiedy mówimy, że klasa B dziedziczy po klasie A, każda instancja klasy B zawiera wszystkie pola zdefiniowane w klasie B, a także wszystkie pola zdefiniowane w klasie A. Na przykład na rysunku 1-4 klasa pełnometrażowej służby zawiera pola ID i LastName zdefiniowane w klasie pracowników, ponieważ dziedziczy ona po klasie pracowników. Ponadto klasa pełnometrażowa Employe dodaje kolejne pole, premi.

    Możesz wywołać dowolną metodę na wystąpieniu klasy B, która została zdefiniowana w klasie A lub B. W naszym przykładzie pracownika instancja pełno pracownik może wywoływać metody zdefiniowane tylko we własnej klasie lub metod zdefiniowanych w klasie pracowników.

    Rysunek 1-4 Hierarchia klasy

    Instancje klasy B podlegają zastąpieniu przypadków klasy A, co czyni dziedzictwo kolejna potężna konstrukcja języków obiektowych do poprawy ponownego użycia kodu. Możesz tworzyć nowe klasy, które definiują zachowanie i stwierdzenie, gdzie ma to sens w hierarchii, ale skorzystaj z wcześniej istniejącej funkcjonalności w bibliotekach klasowych.

    Interfejsy

    Java obsługuje tylko jedno dziedzictwo; to znaczy, każda klasa ma jedną i tylko jedną klasę, z której dziedziczy. Jeśli musisz odziedziczyć po więcej niż jednym źródle, Java stanowi odpowiednik wielokrotnego dziedziczenia, bez powikłań i zamieszania, które zwykle towarzyszą, poprzez interfejsy. Interfejsy są podobne do klas; Jednak interfejsy definiują podpisy metody, a nie implementacje. Metody są zaimplementowane w klasach zadeklarowanych do wdrożenia interfejsu. Wielokrotne dziedziczenie występuje, gdy pojedyncza klasa jednocześnie obsługuje wiele interfejsów.

    Wielopostaciowość

    Załóżmy, że w naszym pracownika. Rekompensata jest obliczana inaczej dla różnych rodzajów pracowników.

    • Pełnoetatowe pracodawcy kwalifikują się do bonusu
    • Niezwoleni na wynagrodzenie za nadgodziny

    W tradycyjnych językach proceduralnych napiszesz długą instrukcję przełącznika, z zdefiniowanymi różnymi możliwymi przypadkami.

    Switch: (pracownik.Typ) Sprawa: Pracownik zwrotu pracownika.SalaryTodate; Przypadek: pracownik returnowania pełno pracownik.SalaryTodate + pracownik.Bonustodate .

    Jeśli dodasz nowy rodzaj pracownika, musisz zaktualizować instrukcję przełącznika. Jeśli zmodyfikujesz swoją strukturę danych, musisz zmodyfikować wszystkie instrukcje przełączników, które z nich korzystają. W języku obiektowym, takim jak Java, wdrażasz metodę, recompensationTodate (), dla każdej podklasy klasy pracowników, która wymaga specjalnego leczenia wykraczającego poza to, co jest już zdefiniowane w klasie pracowników. Na przykład możesz zaimplementować metodę kompensationTodate () UNSEMPTEMPLOPOPOMEE, w następujący sposób:

    Private Float CompensationTodate ()

    Wdrażasz metodę FullTimeSployee, w następujący sposób:

    Private Float CompensationTodate ()

    Wspólne użycie nazwy metody CompensationTodate () pozwala wywołać identyczną metodę na różnych klasach i otrzymywać różne wyniki, nie znając rodzaju używanego pracownika. Nie musisz pisać specjalnej metody obsługi pełnoetatowych pracownikom i pracodawcom w niepełnym wymiarze godzin. Ta zdolność różnych obiektów do reagowania na identyczny komunikat na różne sposoby jest znana jako polimorfizm.

    Ponadto możesz utworzyć zupełnie nową klasę, która nie dziedzicza po pracownikach-i wdrożyć w niej metodę recompensationTodate (). Program, który oblicza do tej pory całkowitą liczbę płac, by iterowałby wszystkie osoby na liście płac, niezależnie od tego, czy były to pełnoetatowe, niepełne etat, czyli kontrahenci, i sumować wartości zwrócone z wywoływania metody recSensationTodate () na każdą. Możesz bezpiecznie wprowadzić zmiany w poszczególnych metod kompensacji () z wiedzą, że dzwoniący metody będą działać poprawnie. Na przykład możesz bezpiecznie dodać nowe pola do istniejących klas.

    Maszyna wirtualna Java (JVM)

    Podobnie jak w przypadku innych języków komputerowych na wysokim poziomie, źródło Java kompiluje instrukcje na maszynie niskiego poziomu. W Javie instrukcje te są znane jako kody bajdowe (ponieważ ich rozmiar jest jednolicie jeden bajt przechowywania). Większość innych języków-takie jak instrukcje C-skompletujące do maszyny-takie jak instrukcje specyficzne dla procesora Intel lub HP. Twoje źródło Java kompiluje standardowy, niezależny od platformy zestaw bajtów, który oddziałuje z maszyną wirtualną Java (JVM). JVM to osobny program zoptymalizowany dla konkretnej platformy, na której wykonujesz kod Java. Rysunek 1-5 ilustruje, w jaki sposób Java może utrzymać niezależność platformy. Twoje źródło Java jest skompilowane w bajt, które są niezależne od platformy. Każda platforma zainstalowała JVM, który jest specyficzny dla jego systemu operacyjnego. Java bajtecodes z twojego źródła są interpretowane przez JVM na odpowiednie działania zależne od platformy.

    Rysunek 1-5 Struktura komponentu Java

    Kiedy opracowujesz program Java, używasz predefiniowanych bibliotek klasowych napisanych w języku Java. Biblioteki klas Java Core są logicznie podzielone na pakiety, które zapewniają powszechnie używane funkcjonalność, takie jak podstawowe wsparcie językowe (Java.Lang), wejście/wyjście (java.IO) i dostęp do sieci (java.internet). Razem biblioteki klas JVM i Core zapewniają platformę, na której programisty Java mogą opracować z pewnością, że każdy sprzęt i system operacyjny obsługuje Java. Ta koncepcja jest tym, co napędza pomysł „pisz raz, uruchom w dowolnym miejscu”.

    Rysunek 1-6 ilustruje, w jaki sposób aplikacje Oracle Java znajdują się na bibliotekach klasowych Java Core, które z kolei siedzą na JVM. Ponieważ system wsparcia Oracle Java znajduje się w bazie danych, JVM oddziałuje z bibliotekami bazy danych Oracle, zamiast bezpośrednio z systemem operacyjnym.

    Rysunek 1-6 Struktura komponentu Java Oracle Database

    Sun Microsystems dostarcza publicznie dostępne specyfikacje zarówno dla języka Java, jak i JVM. Specyfikacja języka Java (JLS) definiuje takie rzeczy, jak składnia i semantyka; Specyfikacja JVM określa niezbędne zachowanie niskiego poziomu dla „maszyny”, która wykonuje bajtaki. Ponadto Sun Microsystems zapewnia pakiet testu kompatybilności dla implementatorów JVM w celu ustalenia, czy przestrzegają one specyfikacji. Ten apartament testowy jest znany jako zestaw kompatybilności Java (JCK). Wdrożenie OracleJVM jest w pełni zgodne z JCK. Częścią ogólnej strategii Java jest to, że otwarcie określony standard, wraz z prostym sposobem weryfikacji zgodności z tym standardem, pozwala dostawcom oferować jednolite wsparcie dla Java na wszystkich platformach.

    Kluczowe cechy języka Java

    Język Java ma kluczowe funkcje, które sprawiają, że jest idealny do tworzenia aplikacji serwerowych. Te funkcje obejmują:

    • Prostota-Java jest prostszym językiem niż większość innych używanych w aplikacjach serwerowych ze względu na jego spójne egzekwowanie modelu obiektowego. Duży, standardowy zestaw bibliotek klasowych przynosi potężne narzędzia programistom Java na wszystkich platformach.
    • Przenośność-Java jest przenośna na różnych platformach. Możliwe jest zapisanie kodu zależnego od platformy w Javie, ale proste jest również pisanie programów, które płynnie poruszają się przez maszyny. Aplikacje Oracle Server, które nie obsługują graficznych interfejsów użytkownika bezpośrednio na platformie, która je hostuje, również unikają kilku problemów z przenośnością platformy, które ma Java.
    • Automatyczne zarządzanie przechowywaniem-maszyna wirtualna Java automatycznie wykonuje całą alokację i defaktację pamięci podczas wykonywania programu. Programiści Java nie mogą ani przeznaczyć ani bezpłatnej pamięci. Zamiast tego zależą od JVM, aby wykonywać te operacje księgowości, przydzielając pamięć podczas tworzenia nowych obiektów i defakcjonowania pamięci, gdy obiekty nie są już odwołane. Ta ostatnia operacja jest znana jako Garbage Collection.
    • Silne pisanie-zanim użyjesz zmiennej Java, musisz zadeklarować klasę obiektu, który będzie trzymał. Silne pisanie Java umożliwia zapewnienie rozsądnego i bezpiecznego rozwiązania połączeń między językiem między aplikacjami Java i PL/SQL oraz integracja połączeń Java i SQL w tej samej aplikacji.
    • Żadnych wskazówek-chociaż Java zachowuje wiele smaku C w swojej składni, nie obsługuje bezpośrednich wskazówek ani manipulacji wskaźnikami. Przekazujesz wszystkie parametry, z wyjątkiem typów prymitywnych, przez odniesienie (to znaczy tożsamość obiektu jest zachowana), a nie według wartości. Java nie zapewnia niskiego poziomu C, bezpośredni dostęp do wskazówek, co eliminuje uszkodzenie pamięci i wycieki.
    • Obsługa wyjątków-wyjątki Java to obiekty. Java wymaga od programistów deklarowania, które wyjątki można wyrzucić metodami w dowolnej konkretnej klasie.
    • Elastyczna przestrzeń nazw-Java definiuje klasy i trzyma je w hierarchicznej strukturze, która odzwierciedla przestrzeń nazw domen internetowych. Możesz dystrybuować aplikacje Java i unikać zderzeń nazwisk. Rozszerzenia Java, takie jak interfejs nazewnictwa i katalogu Java. Podejście do przestrzeni nazw Java jest wystarczająco elastyczne, aby Oracle mogła włączyć koncepcję schematu do rozwiązywania nazw klas, jednocześnie w pełni przestrzegając specyfikacji języka.
    • Bezpieczeństwo-Projekt Java Bajtecodes i JVM pozwala na wbudowane mechanizmy sprawdzenia, czy kod binarny Java nie był manipulowany. Baza danych Oracle jest zainstalowana z instancją SecurityManager, która w połączeniu z Oracle Database Security określa, kto może wywołać dowolne metody Java.
    • Standardy łączności z relacyjnymi bazami danych-JDBC Włącz kod Java dostęp i manipulowanie danymi relacyjnymi w relacyjnych bazach danych. Oracle zapewnia sterowniki, które pozwalają niezależnemu od dostawcy, przenośny kod Java w celu uzyskania dostępu do relacyjnej bazy danych.

    Dlaczego warto korzystać z Java w bazie danych Oracle?

    Jedynym powodem, dla którego możesz pisać i ładować aplikacje Java w bazie danych, jest to, że jest to bezpieczny język. Java została opracowana, aby uniemożliwić nikomu manipulowanie systemem operacyjnym, w którym znajduje się kod Java. Niektóre języki, takie jak C, mogą wprowadzać problemy bezpieczeństwa w bazie danych; Java, ze względu na swój projekt, jest bezpiecznym językiem, który umożliwia w bazie danych.

    Chociaż język Java przedstawia programistom wiele zalet, dostarczenie JVM, który obsługuje aplikacje Java Server w skalowalny sposób, jest wyzwaniem. W tej sekcji omówiono niektóre z tych wyzwań.

    • Java i RDBMS: solidna kombinacja
    • Multitreading
    • Zautomatyzowane zarządzanie przechowywaniem z kolekcją śmieci
    • Ślad stopy
    • Wydajność
    • Dynamiczne ładowanie klas

    Java i RDBMS: solidna kombinacja

    Oracle RDBMS zapewnia aplikacjom Java dynamiczny silnik przetwarzania danych, który obsługuje złożone zapytania i różne widoki tych samych danych. Wszystkie żądania klientów są składane jako zapytania danych do natychmiastowego przetwarzania, a wyniki zapytania są generowane w locie.

    Kilka funkcji sprawia, że ​​Java jest idealna do programowania serwerów. Java umożliwia montaż aplikacji za pomocą komponentów oprogramowania gotowego (Javabeans). Jego typ bezpieczeństwa i automatyczne zarządzanie pamięcią pozwalają na ścisłą integrację z RDBMS. Ponadto Java obsługuje przejrzystą dystrybucję komponentów aplikacji w sieci.

    Zatem Java i RDBMS obsługują szybki montaż aplikacji opartych na komponentach, które mogą ewoluować z wdziękiem, gdy zmieniają się potrzeby biznesowe. Ponadto możesz przenosić aplikacje i przechowywanie danych z komputerów stacjonarnych na inteligentne sieci i serwery zorientowane na sieć. Co ważniejsze, możesz uzyskać dostęp do tych aplikacji i magazynów danych z dowolnego urządzenia klienckiego.

    Rysunek 1-7 pokazuje tradycyjną konfigurację dwupoziomową, klient/serwer, w którym klienci nazywają procedury przechowywane Java w taki sam sposób, jak wywołują procedury przechowywane PL/SQL. (PL/SQL to zaawansowany 4GL ściśle zintegrowany z bazą danych Oracle.) Rysunek pokazuje również, w jaki sposób Oracle Net Services Connection Manager może przekazać wiele połączeń sieciowych do pojedynczego połączenia bazy danych. Umożliwia to RDBMS obsługę dużej liczby współbieżnych użytkowników.

    Rysunek 1-7 Dwupoziomowa konfiguracja klienta/serwera

    Multitreading

    Obsługa wielowy jest często cytowana jako jedna z kluczowych funkcji skalowalności języka Java. Z pewnością biblioteki języka Java i biblioteki klasowe są łatwiejsze pisanie aplikacji wielowymiarowych w Javie niż w wielu innych językach, ale nadal jest zniechęcającym zadaniem w dowolnym języku, aby pisać niezawodne, skalowalne wielostronne kod kodu.

    Jako serwer bazy danych, baza danych Oracle skutecznie harmonogram działają dla tysięcy użytkowników. OracleJVM korzysta z urządzeń serwera RDBMS do jednoczesnego planowania wykonania Java dla tysięcy użytkowników. Chociaż baza danych Oracle obsługuje wątki na poziomie języka Java wymagane przez JLS i JCK, użycie wątków w zakresie bazy danych nie zwiększy skalowalności. Korzystanie z wbudowanej skalowalności bazy danych eliminuje potrzebę pisania wielostopniowych serwerów Java. Powinieneś użyć obiektów bazy danych do planowania użytkowników, pisząc aplikacje Java jednokratyczne. Baza danych zajmie się planowaniem między każdą aplikacją; Dlatego osiągasz skalowalność bez konieczności zarządzania wątkami. Nadal możesz pisać wieloosobowe aplikacje Java, ale wiele wątków Java nie zwiększy wydajności serwera.

    Jednym trudnościami na nakładanie na Java jest interakcja wątków i zautomatyzowanego zarządzania przechowywaniem lub zbierania śmieci. Garbage Collector wykonujący w ogólnym JVM nie ma wiedzy, o których wątki językowe Java wykonują ani jak planuje je podstawowy system operacyjny.

    • Model bazy danych niewielu-pojedyncze mapy użytkownika do jednego wątku na poziomie języka Java; Ten sam pojedynczy śmieci kolekcjoner zarządza wszystkimi śmieciami od wszystkich użytkowników. Różne techniki zwykle dotyczą alokacji i gromadzenia obiektów o różnych okresach życia i rozmiarów. Rezultat w stosunku do silnie wielowątkowej aplikacji jest w najlepszym razie zależna od obsługi systemu operacyjnego dla natywnych wątków, co może być niewiarygodne i ograniczone skalowalność. Wysoki poziom skalowalności dla takich wdrożeń nie został przekonująco wykazany.
    • Model OracleJVM-nawet gdy tysiące użytkowników łączą się z serwerem i wykonuje ten sam kod Java, każdy użytkownik doświadcza go tak, jakby wykonywał swój własny kod Java na własnej maszynie wirtualnej Java. Odpowiedzialność OracleJVM polega na korzystaniu z procesów i wątków systemu operacyjnego, wykorzystując skalowalne podejście Oracle RDBMS. W wyniku tego podejścia zbieracz śmieci JVM jest bardziej niezawodny i wydajny, ponieważ nigdy nie zbiera śmieci od więcej niż jednego użytkownika w dowolnym momencie. Więcej informacji na temat implementacji modelu wątków można znaleźć w „Wątanie w Oracle Database”.

    Zautomatyzowane zarządzanie przechowywaniem z kolekcją śmieci

    Garbage Collection jest główną cechą zautomatyzowanego zarządzania pamięcią MAVA, eliminując potrzebę programistów Java do jawnego alokacji i bezpłatnej pamięci. W konsekwencji eliminuje to duże źródło wycieków pamięci, które zwykle nękają programy C i C ++. Istnieje cena za taką korzyść: Garbage Collection przyczynia się do kosztów prędkości i śladu programu. Chociaż wiele artykułów zostało napisanych kwalifikujących się i kwantyfikacji kompromisu, całkowity koszt jest rozsądny, biorąc pod uwagę alternatywy.

    Kolekcja Garbage nakłada wyzwanie dla programisty JVM, który chce dostarczyć wysoce skalowalną i szybką platformę Java. OracleJVM spełnia te wyzwania w następujący sposób:

    • OracleJVM korzysta z urządzeń do planowania bazy danych Oracle, które mogą skutecznie zarządzać wieloma użytkownikami.
    • Kolekcja Garbage jest konsekwentnie dla wielu użytkowników, ponieważ Garbage Collection koncentruje się na jednym użytkowniku w ramach jednej sesji. OracleJVM cieszy się ogromną przewagą, ponieważ ciężar i złożoność pracy menedżera pamięci nie wzrasta, gdy liczba użytkowników wzrasta. Menedżer pamięci wykonuje alokacja i zbiór obiektów w jednej sesji-co zwykle przekłada się na aktywność jednego użytkownika.
    • OracleJVM wykorzystuje różne techniki zbierania śmieci w zależności od rodzaju używanej pamięci. Techniki te zapewniają wysoką wydajność i niskie koszty ogólne.

    Ślad stopy

    Na stóp wykonującego program Java ma wpływ wiele czynników:

    • Rozmiar samego programu-jak wiele klas i metod oraz ile zawierają one kodu.
    • Złożoność programu-ilość podstawowych bibliotek klas, które OracleJVM używa jako programu, w przeciwieństwie do samego programu.
    • Ilość stanu, z którego używa JVM-jak wiele obiektów, które JVM przydziela, jak są one duże i ile trzeba zachować w połączeniach.
    • Zdolność poborcy śmieci i menedżera pamięci do radzenia sobie z wymaganiami programu wykonawczego, który często jest niedeterministyczny. Prędkość przydzielania obiektów i sposób, w jaki są trzymane przez inne obiekty, wpływa na znaczenie tego czynnika.

    Z punktu widzenia skalowalności kluczem do obsługi wielu współbieżnych klientów jest minimalny ślad sesji dla użytkownika. OracleJVM utrzymuje ślad sesji Per-User do minimum, umieszczając wszystkie dane tylko dla użytkowników, takie jak Java Bytecodes, w pamięci współdzielonej. Odpowiednie algorytmy zbierania śmieci są stosowane w ramach wspomnień dotyczących połączeń i sesji, aby utrzymać niewielki ślad na sesję użytkownika. OracleJVM używa trzech rodzajów algorytmów zbierania śmieci do utrzymania pamięci sesji użytkownika:

    • Ogadanie pokoleniowe dla obiektów krótkotrwałych
    • Mark i Lazy Sweep Collection dla obiektów, które istnieją na całe życie pojedynczego wezwania
    • Kopiowanie kolekcjonera dla długowiecznych obiektów-obiekty, które żyją w połączeniach w ramach sesji

    Wydajność

    Wydajność OracleJVM jest wzmocniona poprzez wdrożenie natywnego kompilatora.

    Jak natywne kompilatory poprawiają wydajność

    Java wykonuje niezależne od platformy bajty oprócz JVM, co z kolei oddziałuje z konkretną platformą sprzętową. Za każdym razem, gdy dodajesz poziomy w oprogramowaniu, wydajność jest zdegradowana. Ponieważ Java wymaga przejścia przez pośrednik w celu interpretacji niezależnych od platformy bajdów, istnieje stopień nieefektywności dla aplikacji Java, które nie istnieje w języku zależnym od platformy, takim jak C. Aby rozwiązać ten problem, kilku dostawców JVM tworzy rodzime kompilatory. Native kompilatory tłumaczą bajty Java na kod natywny zależny od platformy, który eliminuje krok tłumacza i poprawia wydajność.

    Poniżej opisano dwie metody natywnej kompilacji:

    Kompilacja Just-In-Time (JIT)

    Kompilatory JIT szybko kompilują Java Bajtecodes do kodu maszynowego natywnego (specyficznego dla platformy) w czasie wykonywania. Nie wytwarza to wykonywalnego wykonywania na platformie; Zamiast tego zapewnia kod zależny od platformy od Java Bajtecodes, który jest wykonywany bezpośrednio po przetłumaczeniu. Powinno to być używane do często uruchamianego kodu Java, który zostanie wykonywany z prędkością bliżej języków, takich jak C.

    Kompilacja tłumaczy Java bajtecodes na niezależny od platformy kod C przed czasem wykonawczym. Następnie standardowy kompilator C kompiluje kod C do wykonywania wykonywania platformy docelowej. Takie podejście jest bardziej odpowiednie dla aplikacji Java, które są rzadko modyfikowane. Takie podejście korzysta z dojrzałej i wydajnej technologii kompilacji platformy, znalezionej w nowoczesnych kompilatorach C.

    Baza danych Oracle wykorzystuje kompilację przed czasem, aby dostarczyć swoje podstawowe biblioteki klas Java: kod JDBC w natywnie skompilowanej formie. Ma to zastosowanie na wszystkich platformach obsługi Oracle, podczas gdy podejście JIT wymaga niskiego poziomu, zależnego od procesora kodu do pisania i utrzymania dla każdej platformy. Możesz użyć tej natywnej technologii kompilacji z własnym kodem Java.

    Jak pokazuje rysunek 1-8, natywnie skompilowany kod wykonuje do dziesięciu razy szybciej niż zinterpretowany kod. Im bardziej natywny kod używany program, tym szybciej wykonuje.

    Rysunek 1-8 Interpreter kontra akcelerator

    Więcej informacji można znaleźć w „natywnie skompilowanym kodzie”.

    Dynamiczne ładowanie klas

    Kolejną silną cechą Java jest dynamiczne ładowanie klasowe. Klasa ładowarka ładuje klasy z dysku (i umieszcza je w strukturach pamięci specyficznej dla JVM niezbędnych do interpretacji) tylko tak, jak są one używane podczas wykonywania programu. Ładowarka klasowa lokalizuje klasy na ścieżce klasy i ładuje je podczas wykonywania programu. To podejście, które działa dobrze dla apletów, stanowi następujące problemy w środowisku serwerowym:

    Operacja załadunku klasowego nakłada poważną karę za wykonywanie po raz pierwszy. Prosty program może spowodować, że OracleJVM załaduje wiele podstawowych klas, aby zaspokoić jego potrzeby. Programista nie może łatwo przewidzieć ani określić liczby załadowanych klas.

    OracleJVM ładuje klasy dynamicznie, podobnie jak w przypadku każdej innej maszyny wirtualnej Java. Napotyka się to samo jednorazowe prędkość ładowania. Ponieważ jednak klasy są ładowane do pamięci współdzielonej, żaden inni użytkownicy tych klas spowoduje znowu załadowanie klas-po prostu użyją tych samych klas wstępnie załadowanych.

    Zaletą dynamicznego ładowania klas jest to, że obsługuje aktualizację programu. Na przykład aktualizujesz klasy na serwerze, a klienci, którzy pobierają program i ładują go dynamicznie, widzą aktualizację, gdy następnie używają programu. Programy serwerowe mają tendencję do podkreślenia niezawodności. Jako programista musisz wiedzieć, że każdy klient wykonuje określoną konfigurację programu. Nie chcesz, aby klienci przypadkowo załadowali niektóre zajęcia, których nie zamierzałeś ładować.

    Baza danych Oracle oddziela operację przesyłania i rozwiązania od operacji ładowania klas w czasie wykonywania. Przesyłasz kod Java opracowany na serwer za pomocą narzędzia Loadjava. Zamiast korzystać z ClassPath, określasz rozdzielczy w czasie instalacji. Resolver jest analogiczny do ścieżki klasowej, ale pozwala określić schematy, w których przebywają klasy. To oddzielenie rozdzielczości od załadunku klasowego oznacza, że ​​zawsze wiesz, jakie użytkownicy programu wykonują. Szczegółowe informacje na temat Loadjava i Resicvers patrz rozdział 11, „Narzędzia do obiektów schematu”.

    Co różni się z OracleJvm?

    W tej sekcji omówiono pewne ważne różnice między OracleJVM a typowym klientem JVM.

    Metoda main ()

    Aplikacje Java oparte na kliencie deklarują pojedynczą metodę najwyższego poziomu (main ()), która definiuje profil aplikacji. Podobnie jak w przypadku apletów, aplikacje oparte na serwerze nie mają takiego „wewnętrznej pętli.„Zamiast tego są napędzane przez logicznie niezależnych klientów.

    Każdy klient rozpoczyna sesję, wywołuje moduły logiczne po stronie serwera przez punkty wejścia najwyższego poziomu i ostatecznie kończy sesję. Środowisko serwera ukrywa zarządzanie sesjami, sieciami i innymi wspólnymi zasobami z hostowanych programów Java.

    GUI

    Serwer nie może dostarczyć GUI, ale może dostarczyć logikę, która je napędza. OracleJVM obsługuje tylko tryb bezgłowego zestawu narzędzi do streszczenia (AWT). Wszystkie klasy AWT Java są dostępne w środowisku serwera, a Twoje programy mogą korzystać z funkcji AWT, o ile nie próbują zmaterializować GUI na serwerze. Aby uzyskać więcej informacji, zobacz „Interfejsy użytkownika na serwerze” .

    IDE

    OracleJVM jest zorientowany na wdrożenie aplikacji Java, a nie rozwój. Możesz pisać i testować aplikacje w ulubionym IDE, takie jak Oracle JDeveloper, a następnie wdrażać je do wykonania w ramach RDBMS.

    Aby uzyskać więcej informacji, zobacz „Narzędzia programistyczne”.

    Binarna kompatybilność Java umożliwia pracę w dowolnym IDE, a następnie przesyłanie plików klasy Java na serwer. Nie musisz przenosić plików źródłowych Java do bazy danych. Zamiast tego możesz użyć potężnych IDE po stronie klienta do utrzymania aplikacji Java, które są wdrażane na serwerze.

    Główne elementy OracleJVM

    W tej sekcji krótko opisano główne elementy OracleJVM i niektóre z udogodnień, które dostarczają.

    Baza danych Oracle Java Virtual Machine (JVM) to kompletne, zgodne z Java środowisko wykonawcze Java. Działa w tej samej przestrzeni procesowej i przestrzeni adresowej, co jądro RDBMS, dzieląc swoje sterty pamięci i bezpośrednio uzyskując dostęp do danych relacyjnych. Ten projekt optymalizuje użycie pamięci i zwiększa przepustowość.

    OracleJVM zapewnia środowisko wykonawcze obiektów Java. W pełni obsługuje struktury danych Java, wysyłkę metody, obsługę wyjątków i wątki na poziomie języka. Obsługuje także wszystkie podstawowe biblioteki klas Java, w tym Java.Lang, Java.IO, Java.Net, Java.matematyka i java.Util. Rysunek 1-9 pokazuje swoje główne elementy.

    Rysunek 1-9 Główne elementy OracleJVM

    OracleJVM osadza standardową przestrzeń nazw Java w schematach RDBMS. Ta funkcja umożliwia programom Java dostęp do obiektów Java przechowywanych w bazach danych Oracle i serwerach aplikacji w całym przedsiębiorstwie.

    Ponadto OracleJVM jest ściśle zintegrowany ze skalowalną, wspólną architekturą pamięci RDBMS. Programy Java wykorzystują efektywnie czas nażywienia połączeń, sesji i obiektów bez interwencji. Możesz więc skalować obiekty biznesowe Java OracleJvmand środkowego poziomu, nawet gdy mają stan na sesji.

    Garbage Collector opisano w „Zautomatyzowanym zarządzaniu pamięcią masową z kolekcją śmieci” . Native kompilator jest omawiany w „Performance” . Reszta komponentów opisano w poniższych sekcjach:

    Ponadto następujące sekcje zawierają przegląd sterownika JDBC:

    Menedżer biblioteki

    Aby przechowywać zajęcia Java w bazie danych Oracle, używasz linii poleceń loadjava, która wykorzystuje SQL, tworząc instrukcje Java do wykonania swojej pracy. Po wywołaniu instrukcji Utwórz Java menedżer biblioteki ładuje pliki Java źródło, klasę lub zasoby do bazy danych. Nigdy nie uzyskujesz dostępu do tych obiektów schematu Java; Tylko OracleJVM je używa.

    Kompilator

    OracleJVM zawiera standardową Java 2 (znaną również jako JDK 1.2) Kompilator Java. Po przywołaniu instrukcji Utwórz Java Source, tłumaczy pliki źródłowe Java na neutralne architekturę, jedno-bajtowe instrukcje znane BYTECODES. Każdy kod bajtowy składa się z kodu operacyjnego, a następnie jego operandy. Powstałe pliki klasy Java, które są w pełni zgodne ze standardem Java, są przesyłane do tłumacza w czasie wykonywania.

    Interpretator

    Aby wykonać programy Java, OracleJVM zawiera standardowy interpreter Java 2. Interpreter i powiązany system wykonawczy Java wykonują standardowe pliki klasy Java. System czasu wykonywania obsługuje natywne metody i wywołanie/wywołanie ze środowiska hosta.

    Możesz także skompilować kod do szybszego wykonywania. OracleJVM używa natywnie skompilowanych wersji podstawowych bibliotek klas Java i sterowników JDBC. Aby uzyskać więcej informacji, zobacz „Natywnie skompilowany kod” .

    Ładowarka klasowa

    W odpowiedzi na żądania z systemu czasu wykonywania ładowarka Java Class lokalizuje, ładuje i inicjuje klasy Java przechowywane w bazie danych. Ładowiec klasy odczytuje klasę, a następnie generuje struktury danych potrzebne do jej wykonania. Niezmienne dane i metadane są ładowane do pamięci inicjalizowanej. W rezultacie dla każdej sesji wymagana jest mniej pamięci. Ładowarka klasowa próbuje rozwiązać odniesienia zewnętrzne w razie potrzeby. Ponadto automatycznie wywołuje kompilator Java, gdy pliki klasy Java muszą zostać ponownie skompilowane (a pliki źródłowe są dostępne).

    Weryfikator

    Pliki klasy Java są w pełni przenośne i są zgodne z dobrze zdefiniowanym formatem. Weryfikator zapobiega nieumyślnym użyciu „sfałszowanych” plików klasy Java, które mogą zmienić przepływ programu lub naruszać ograniczenia dostępu. Oracle Security i Java Security współpracują z weryfikatorem w celu ochrony aplikacji i danych.

    Wewnętrzny sterownik JDBC po stronie serwera

    JDBC to standardowy zestaw klas Java, zapewniający niezależny od dostawcy dostęp do danych relacyjnych. Określone przez Sun Microsystems i modelowane po ODBC (otwartą łączność z bazą danych) i X/Open SQL CLI (interfejs poziomu połączenia), cechy standardowe klasy JDBC, takie jak jednoczesne połączenia z kilkoma bazami danych, zarządzanie transakcjami, proste zapytania, połączenia z procesami przechowywani.

    Korzystając z punktów wejścia niskiego poziomu, specjalnie dostrojony sterownik JDBC działa bezpośrednio w RDBMS, zapewniając w ten sposób najszybszy dostęp do danych Oracle z Procedur przechowywanych Java. Wewnętrzny sterownik JDBC po stronie serwera jest całkowicie zgodny ze specyfikacją JDBC Sun Microsystems. Ściśle zintegrowane z RDBMS, obsługuje specyficzne dla wyroczni typy danych, zestawy znaków globalizacji i procedury przechowywane. Ponadto interfejsy JDBC po stronie klienta i serwera są takie same, co ułatwia aplikacje do dzielenia.

    Strategia aplikacji Java Oracle

    Jednym urokiem Java jest jej wszechobecność i rosnąca liczba programistów zdolnych do opracowywania aplikacji za pomocą tego. Oracle dostarcza programistom aplikacji Enterprise z kompleksowym rozwiązaniem Java do tworzenia, wdrażania i zarządzania aplikacjami Java. Całkowite rozwiązanie składa się z interfejsów programowych po stronie klienta i serwera, narzędzi do obsługi rozwoju Java oraz maszyny wirtualnej Java zintegrowanej z serwerem Oracle Batabase Server. Wszystkie te produkty są w 100 % kompatybilne ze standardami Java.

    Środowisko programowania Java

    Oprócz OracleJVM środowisko programowania Java składa się z:

    • Procedury przechowywane Java jako odpowiednik Java i towarzysz PL/SQL. Procedury przechowywane Java są ściśle zintegrowane z PL/SQL. Możesz zadzwonić do procedury składowanej Java z pakietu PL/SQL; Możesz wywołać procedury PL/SQL z procedury składowanej Java.
    • Dostęp do danych SQL można uzyskać za pośrednictwem JDBC.
    • Narzędzia i skrypty używane do pomocy w tworzeniu, ładowaniu klas i zarządzaniu klasami.

    Aby pomóc Ci zdecydować, które interfejsy API Java użyć, zbadaj poniższą tabelę:

    Aby przywołać procedurę Java z SQL, taką jak spust.

    Procedury przechowywane Java

    Aby wywołać dynamiczne, złożone instrukcje SQL z obiektu Java.

    Procedury przechowywane Java

    Jeśli jesteś programistą PL/SQL eksplorującym Javę, będziesz zainteresowany procedurami przechowywanymi Java. Procedura przechowywana Java to program, który piszesz w Javie, aby wykonać na serwerze, dokładnie jako procedura przechowywana PL/SQL. Wywołujesz go bezpośrednio z produktami takimi jak sql*plus lub pośrednio z spustem. Możesz uzyskać do niego dostęp od dowolnego klienta Net Oracle-VOCI, Pro* lub JDBC. Rozdział 5, „Opracowywanie procedur przechowywanych Java” wyjaśnia, jak pisać procedury przechowywane w Javie, jak uzyskać do nich dostęp z PL/SQL oraz jak uzyskać dostęp do funkcji PL/SQL z Java.

    Ponadto możesz użyć Java do opracowania potężnych programów niezależnie od PL/SQL. Baza danych Oracle zapewnia w pełni zgodną implementację języka programowania Java i JVM.

    Integracja PL/SQL i funkcja Oracle RDBMS

    Możesz wywołać istniejące programy PL/SQL z Java i wywołać programy Java z PL/SQL. To rozwiązanie chroni i wykorzystuje istniejącą inwestycję, jednocześnie otwierając zalety i możliwości komputerów internetowych opartych na Javie.

    Oracle oferuje dwa różne interfejsy programowania aplikacji (interfejsy API) dla programistów Java w celu uzyskania dostępu do danych SQL-jdbc. Oba interfejsy API są dostępne na kliencie i serwerze, dzięki czemu możesz wdrożyć ten sam kod w obu miejscach.

    Sterowniki JDBC

    JDBC to protokół dostępu do bazy danych, który umożliwia podłączenie do bazy danych, a następnie przygotowywanie instrukcji SQL w stosunku do bazy danych. Biblioteki klas podstawowych Java zapewniają tylko jeden interfejs API JDBC. JDBC został jednak zaprojektowany, aby umożliwić dostawcom dostarczanie kierowców, którzy oferują niezbędną specjalizację dla konkretnej bazy danych. Oracle dostarcza następujące trzy odrębne sterowniki JDBC.

    Cienki sterownik JDBC

    Możesz użyć cienkiego sterownika JDBC do zapisywania 100% czystej aplikacji i apletów, które uzyskują dostęp do danych Oracle SQL. Cienki sterownik JDBC jest szczególnie odpowiedni do aplikacji i apletów opartych na przeglądarce internetowej, ponieważ możesz go dynamicznie pobrać ze strony internetowej, tak jak każdy inny aplet Java.

    Sterownik interfejsu połączeń JDBC Oracle

    Sterownik JDBC Oracle Call Interface (OCI) uzyskuje dostęp do kodu natywnego specyficznego dla Oracle (to znaczy nie-Java) na kliencie lub środkowym poziomie, zapewniając pewne wzmocnienie wydajności w porównaniu z cienkim sterownikiem JDBC, kosztem znacznie większego rozmiaru i instalacji po stronie klienta po kliencie.

    Wewnętrzny sterownik serwera JDBC

    Baza danych Oracle korzysta z sterownika wewnętrznego po stronie serwera, gdy kod Java wykonuje się na serwerze. Umożliwia aplikacje Java wykonywanie w wirtualnej maszynie Java serwera w celu uzyskania dostępu do lokalnie zdefiniowanych danych (to znaczy na tym samym komputerze i w tym samym procesie) z JDBC. Zapewnia dalsze zwiększenie wydajności ze względu na jego zdolność do bezpośredniego korzystania z bibliotek Oracle RDBMS, bez kosztów przesyłania połączenia sieciowego między kodem Java a danymi SQL. Obsługując ten sam interfejs Java-SQL na serwerze, baza danych Oracle nie wymaga przeróbki kodu podczas wdrażania.

    JPublisher

    JPublisher zapewnia proste i wygodne narzędzie do tworzenia programów Java, które uzyskują dostęp do istniejących tabel relacyjnych Oracle. Aby uzyskać więcej informacji.

    Narzędzia programistyczne

    Wprowadzenie Java do serwera bazy danych Oracle pozwala korzystać z kilku zintegrowanych środowisk programistycznych Java. Przyleganie bazy danych Oracle do kompatybilności Java oraz otwartych standardów i protokołów internetowych zapewnia, że ​​twoje 100% czyste programy Java działają po wdrożeniu ich w bazie danych Oracle. Oracle dostarcza wiele narzędzi lub narzędzi, wszystkie napisane w Javie, które ułatwiają opracowywanie i wdrażanie aplikacji Java Server. JDeveloper Oracle ma wiele funkcji zaprojektowanych specjalnie w celu ułatwienia wdrażania procedur przechowywanych Java i Enterprise Javabeans. Możesz pobrać JDeveloper na następnej stronie: http: // otn.wyrocznia.com/oprogramowanie/produkty/JDEV/treść.html.

    Desupport of J2EE Technologies w bazie danych Oracle

    Wraz z wprowadzeniem kontenerów Oracle Application Server dla J2EE (OC4J)-nowego, lżejszego ważności, łatwiejszego w użyciu, szybszego i certyfikowanego kontenera J2EE-Oracle rozpoczął się od Oracle9 Java 2 Enterprise Edition (J2EE) i Corba z baz danych, począwszy od Oracle9I Baza danych Wydanie 2. Jednak wbudowana przez bazę Java VM (OracleJVM) jest nadal obecna i będzie nadal ulepszona, aby zaoferować funkcje Java 2 Standard Edition (J2SE), procedury przechowywane Java i JDBC w bazie danych.

    Od Oracle9I Baza danych wersja 2 (9.2.0) Oracle nie obsługuje już następujących technologii w bazie danych:

    • stos J2EE, składający się z:
      • Kontener fasoli dla przedsiębiorstw (EJB)
      • Kontener JavaServer Pages (JSP)
      • Oracle9I Silnik serwletowy (OSE)

      Klienci nie będą już mogli wdrażać serwletów, stron JSP, EJB i obiektów CORBA w bazach danych Oracle. Oracle9I Baza danych wersja 1 (9.0.1) będzie ostatnią wersją bazy danych, która obsługuje stos J2EE i CORBA. Oracle zachęca klientów do migracji istniejących aplikacji J2EE działających teraz w bazie danych do OC4J.

      Jawa

      Oracle Java to platforma programowania i programowania programu nr 1. Zmniejsza koszty, skraca ramy czasowe, napędza innowacje i poprawia usługi aplikacji. Z milionami programistów obsługujących ponad 60 miliardów wirtualnych maszyn Java na całym świecie, Java nadal jest platformą rozwojową dla przedsiębiorstw i programistów.

      Oracle Java

      Java 20 jest już dostępna

      Kolejne wydanie w sześciomiesięcznym kadencji, Java 20, poprawia wydajność, stabilność i bezpieczeństwo rozwoju aplikacji Java.

      Graalvm Enterprise za darmo na OCI

      Zbuduj rodzime elementy wykonywalne, które pomagają aplikacjom Java w szybkim uruchomieniu, zmniejszają zużycie pamięci i oszczędzać koszty hostingu.

      Usługa zarządzania Java

      JMS Advance Funkcje pomocy administratorom uzyskanie dodatkowych informacji na temat obciążeń Java. Analizuj wykorzystanie, luki i wpływ z aktualizacji kryptograficznej mapy drogowej.

      Dzień dewelopera Java w Oracle DevLive 2023

      Obejrzyj Keynote na DevLive Level Up i dowiedz się o ulepszeniach wydania Java 20 dla AppDev, Modern Language Innovations i wsparcie dla ram programistów Java.

      Raporty analityków Java

      Java i sztuka jazdy cyfrowej transformacji

      Zdobądź spostrzeżenia, jak wykorzystać Javę, aby wesprzeć wysiłki modernizacyjne i transformacyjne. Dowiedz się, jak najlepiej wykorzystać możliwości usług open source, chmur i obsługę w tym briefie technicznej Omdia.

      Java: modernizacja rozwoju dla bezpiecznych aplikacji opartych na chmurze

      Dowiedz się, w jaki sposób Java pomaga organizacjom przyspieszyć transformację cyfrową, jednocześnie minimalizując luki na dziś’s potrzeby aplikacji.

      Top IT Security i Zgodność Punkty bólowe w tworzeniu aplikacji

      Według najnowszego raportu z 451 Research bezpieczeństwo pozostaje najważniejszym priorytetem dla kierowników IT. Przeczytaj brief, aby dowiedzieć się najważniejszych obaw dla programistów i tego, jak możesz osiągnąć swoje bezpieczeństwo IT i cele zgodności z Javą.

      Aberdeen Knowledge Brief

      Dowiedz się, dlaczego liderzy rozwoju aplikacji używają Java do bardziej efektywnego budowania światowej klasy aplikacji najwyższej jakości i najsilniejszego bezpieczeństwa.