Oracle usa Java
I database Oracle usano Java internamente
Ogni client inizia una sessione, chiama i suoi moduli logici sul lato server attraverso punti di iscrizione di alto livello e alla fine termina la sessione. L’ambiente del server nasconde la gestione di sessioni, reti e altre risorse condivise dai programmi Java ospitati.
Riepilogo
I database Oracle usano Java internamente. Oracle fornisce una soluzione Java end-to-end per gli sviluppatori di applicazioni aziendali. Questa soluzione include interfacce programmatiche lato client e lato server, strumenti per lo sviluppo di Java e un JVM integrato con il database Oracle. Java in Database Application Development offre funzionalità come la progettazione di procedure e funzioni legate ai dati, estendendo le funzionalità del database con le librerie Java e Bridging SQL e Java2ee World. L’ambiente di programmazione Java fornisce anche procedure memorizzate Java come compagno per le interfacce di programmazione PL/SQL, JDBC e SQLJ per l’accesso ai dati SQL e strumenti per la gestione delle classi. Inoltre, i database Oracle offrono integrazione e funzionalità PL/SQL, consentendo la chiamata di programmi PL/SQL esistenti da Java e viceversa. Driver JDBC forniti da Oracle Abilita Connettività al database per applicazioni e applet Java.
Punti chiave
1. Java nello sviluppo dell’applicazione del database:
- Progettazione di procedure e funzioni legate ai dati utilizzando Java SE API e JDBC.
- Estensione della portata e delle funzionalità del database con librerie Java standard e di terze parti.
- Partizionamento flessibile di applicazioni J2SE per l’accesso ai dati simmetrici a livello JDBC.
- Bridging SQL e J2EE World chiamando componenti Web e colmare SQL e servizi Web.
2. Uso dell’ambiente di programmazione Java:
- Java ha memorizzato le procedure come equivalente e compagno Java per PL/SQL.
- Interfacce di programmazione JDBC e SQLJ per l’accesso ai dati SQL.
- Strumenti e script per lo sviluppo, il caricamento e la gestione delle classi.
3. Procedure memorizzate da Java:
Le procedure memorizzate Java sono programmi Java distribuiti su un server ed eseguiti dal server, proprio come le procedure memorizzate da PL/SQL. Possono essere invocati direttamente o indirettamente attraverso i trigger. Oracle Database fornisce un’implementazione completa del linguaggio di programmazione Java standard e JVM.
4. Integrazione PL/SQL e funzionalità Oracle RDBMS:
I database Oracle abilitano la chiamata a programmi PL/SQL esistenti dai programmi Java e Java da PL/SQL. Ciò facilita il leva del codice PL/SQL e Java e sfruttando le opportunità di calcolo Internet basate su Java. I driver JDBC forniti da Oracle includono il driver sottile JDBC, il driver OCI JDBC e il driver interno del server JDBC.
Domande
1. Quali caratteristiche offrono Java nello sviluppo dell’applicazione del database?
Java in Database Application Development offre funzionalità come la progettazione di procedure e funzioni legate ai dati, estendendo le funzionalità del database con le librerie Java e Bridging SQL e Java2ee World.
2. Qual è la procedura immagazzinata Java equivalente a PL/SQL?
Le procedure immagazzinate Java fungono da equivalente e compagno Java per PL/SQL.
3. Quali sono le interfacce di programmazione per accedere ai dati SQL in Java?
Le interfacce di programmazione JDBC e SQLJ vengono utilizzate per accedere ai dati SQL in Java.
4. Quali strumenti sono disponibili nell’ambiente di programmazione Java?
L’ambiente di programmazione Java fornisce strumenti e script per lo sviluppo, il caricamento e la gestione delle classi.
5. Come possono essere invocate le procedure memorizzate da Java?
Le procedure memorizzate da Java possono essere invocate direttamente o indirettamente attraverso i trigger.
6. I database Oracle possono chiamare i programmi PL/SQL esistenti da Java?
Sì, i database Oracle supportano la chiamata a programmi PL/SQL esistenti di Java.
7. In che modo le applicazioni Java possono accedere ai dati Oracle SQL?
Le applicazioni Java possono accedere ai dati Oracle SQL tramite i driver JDBC forniti da Oracle.
8. Qual è lo scopo del driver sottile JDBC?
Il driver thin JDBC consente di scrivere applicazioni e applet Pure Java che accedono a Oracle SQL Data. È adatto per applicazioni e applet basate sul Web.
9. In che modo il driver OCI JDBC differisce dal driver sottile JDBC?
Il driver OCI JDBC accede al codice e alle librerie native specifiche per Oracle sul client o sul livello intermedio, fornendo un aumento delle prestazioni rispetto al driver thin JDBC al costo di dimensioni maggiori e installazione sul lato client.
10. A cosa serve il driver interno lato server JDBC utilizzato per?
Il driver interno sul lato server JDBC consente alle applicazioni Java in esecuzione in Oracle JVM sul server per accedere ai dati definiti localmente utilizzando JDBC, fornendo un aumento delle prestazioni utilizzando direttamente le librerie Oracle RDBMS sottostanti.
I database Oracle usano Java internamente
Ogni client inizia una sessione, chiama i suoi moduli logici sul lato server attraverso punti di iscrizione di alto livello e alla fine termina la sessione. L’ambiente del server nasconde la gestione di sessioni, reti e altre risorse condivise dai programmi Java ospitati.
Oracle usa Java
Oracle fornisce agli sviluppatori di applicazioni aziendali una soluzione Java end-to-end per la creazione, la distribuzione e la gestione delle applicazioni Java. La soluzione totale è costituita da interfacce programmatiche sul lato client e sul lato server, strumenti per supportare lo sviluppo di Java e un JVM integrato con Oracle Database. Tutti questi prodotti sono completamente compatibili con gli standard Java. Questa sezione copre i seguenti argomenti:
- Java nello sviluppo dell’applicazione del database
- Uso dell’ambiente di programmazione Java
- Procedure memorizzate da Java
- Integrazione PL/SQL e funzionalità Oracle RDBMS
- Strumenti di sviluppo
- Supporto versione 6 del protocollo Internet
1.6.1 Java nello sviluppo dell’applicazione del database
Le caratteristiche più importanti di Java nello sviluppo dell’applicazione del database sono:
- Progettazione di procedure e funzioni legate ai dati utilizzando Java SE API e JDBC.
- Estensione della portata e delle funzionalità del database con librerie Java standard e di terze parti. Ad esempio, accedere a database di terze parti utilizzando i loro driver nel database e accedere a Hadoop/HDFS.
- Fornire partizionamento flessibile della piattaforma Java2, applicazioni Standard Edition (J2SE) per l’accesso ai dati simmetrici a livello JDBC.
- Bridging SQL e la piattaforma Java2, Enterprise Edition (J2EE) World di:
- Chiamare i componenti Web, come JSP e Servlet
- Bridging SQL e servizi Web utilizzando i richiamo dei servizi Web
1.6.2 Utilizzo dell’ambiente di programmazione Java
Oltre a Oracle JVM, l’ambiente di programmazione Java fornisce:
- Java ha memorizzato le procedure come equivalente e compagno Java per PL/SQL. Le procedure memorizzate da Java sono strettamente integrate con PL/SQL. È possibile chiamare le procedure memorizzate Java da pacchetti PL/SQL e procedure PL/SQL dalle procedure memorizzate Java.
- Le interfacce di programmazione JDBC e SQLJ per l’accesso ai dati SQL.
- Strumenti e script che aiutano a sviluppare, caricare e gestire le lezioni.
La tabella seguente ti aiuta a decidere quando utilizzare quale API Java:
Per avere una procedura Java chiamata da SQL, come un trigger.
Procedure memorizzate da Java
Per chiamare un’istruzione SQL statica e semplice da una tabella nota con nomi di colonne noti da un oggetto Java.
Per chiamare dichiarazioni SQL dinamiche e complesse da un oggetto Java.
1.6.3 Procedure memorizzate da Java
Le procedure memorizzate Java sono programmi Java scritti e distribuiti su un server ed eseguiti dal server, esattamente come una procedura memorizzata PL/SQL. Lo invochi direttamente con prodotti come SQL*Plus o indirettamente con un trigger. Puoi accedervi da qualsiasi client Oracle Net, come OCI e Pro*o JDBC o SQLJ.
Inoltre, è possibile utilizzare Java per sviluppare programmi potenti sul lato server, che possono essere indipendenti da PL/SQL. Oracle Database fornisce un’implementazione completa del linguaggio di programmazione Java standard e un JVM completamente conforme.
Argomenti correlati
1.6.4 PL/SQL Integrazione e funzionalità Oracle RDBMS
È possibile chiamare programmi PL/SQL esistenti dai programmi Java e Java da PL/SQL. Questa soluzione protegge e sfrutta il codice PL/SQL e Java e apre i vantaggi e le opportunità di Internet computing basato su Java.
Oracle Database offre due diverse API Java per accedere a SQL Data, JDBC e SQLJ. Entrambe queste API sono disponibili sul client e l’API JDBC è disponibile anche sul server. Di conseguenza, è possibile distribuire le tue applicazioni sul client e sul server.
I seguenti argomenti introducono le API Java fornite da Oracle Database:
1.6.4.1 driver JDBC
JDBC è un protocollo di accesso al database che consente di connettersi a un database ed eseguire istruzioni e query SQL nel database. Le librerie di classe Java Core forniscono le seguenti API JDBC: Java.SQL e Javax.SQL . Tuttavia, JDBC è progettato per consentire ai fornitori di fornire ai conducenti che offrono la specializzazione necessaria per un determinato database. Oracle fornisce i seguenti driver JDBC distinti:
Driver sottile JDBC
È possibile utilizzare il driver thin JDBC per scrivere applicazioni e applet Java pure che accedono a Oracle SQL Data. Il driver sottile JDBC è particolarmente adatto per applicazioni e applet basate sul Web, perché è possibile scaricarlo dinamicamente da una pagina Web, simile a qualsiasi altra applet Java.
Driver OCI JDBC
Il driver OCI JDBC accede al codice nativo specifico per Oracle, ovvero codice non java e librerie sul client o nel livello intermedio, fornendo un aumento delle prestazioni rispetto al driver sottile JDBC, a costo di dimensioni significativamente più grandi e installazione sul lato del client.
Driver interno sul lato server JDBC
Oracle Database utilizza il driver interno lato server quando il codice Java viene eseguito sul server. Consente alle applicazioni Java in esecuzione in Oracle JVM sul server di accedere ai dati definiti localmente, ovvero dati sullo stesso sistema e nello stesso processo, con JDBC. Fornisce un aumento delle prestazioni, a causa della sua capacità di utilizzare direttamente le librerie Oracle RDBMS sottostanti, senza il sovraccarico di una connessione di rete intermedio tra il codice Java e i dati SQL. Supportando la stessa interfaccia Java-SQL sul server, il database Oracle non richiede di rielaborare il codice durante la distribuzione.
Argomenti correlati
I database Oracle usano Java internamente?
Modificare:
Oracle include un JVM che funziona sulla stessa macchina del database stesso, ma che non viene utilizzato per eseguire alcun codice “relativo a DBMS”.È solo lì per eseguire procedure/funzioni memorizzate scritte in Java.
Risposta il 13 settembre 2011 alle 6:43
a_horse_with_no_name a_horse_with_no_name
78k 14 14 Badge d’oro 157 157 Distintivi d’argento 194 194 Distintivi di bronzo
Wow, non sapevo della parte C. +1.
13 settembre 2011 alle 10:17
Dai un’occhiata alla loro “cronologia della storia”: Oracle.com/US/Corporate/Timeline/Index.HTML: 1983: “Oracle Release versione 3 del suo database, con codice server scritto nel linguaggio di programmazione C”
13 settembre 2011 alle 10:24
La mia ipotesi è che Java non esiste allora. Penso che il primo Java sia arrivato a Oracle 8i.
13 settembre 2011 alle 16:59
Il JVM interno non viene utilizzato per eseguire alcun codice “correlato DBMS”. È solo lì per eseguire procedure/funzioni memorizzate scritte in Java.
13 settembre 2011 alle 18:27
@a_horse_with_no_name – Immagino che dipenda da cosa intendi per pacchetti “standard”. Oracle spedisce un certo numero di pacchetti che sono incorporati in Java (tutto ciò che utilizza XDB, ad esempio, tra cui molti dei pacchetti XMLQuery, dipendono dal JVM interno). Questi non sono “standard” nel senso dei pacchetti che la maggior parte degli sviluppatori usa frequentemente. Ma sono “standard” nel senso che sono installati quando si esegue un’installazione predefinita del database Oracle.
1
Introduzione a Java nel database OracleQuesto libro fornisce una panoramica su come sviluppare, caricare ed eseguire le tue applicazioni Java nel database Oracle.
Questo capitolo contiene le seguenti informazioni:
- Contenuto del capitolo
- Cosa c’è di nuovo in questa versione?
- Panoramica di Java
- Perché utilizzare Java nel database Oracle?
- Cosa è diverso con OracleJVM?
- Componenti principali di OracleJVM
- Strategia applicativa Java di Oracle
- Desupport of J2EE Technologies nel database Oracle
Contenuto del capitolo
- Introduce il linguaggio Java per i programmatori di database Oracle. Gli sviluppatori Oracle PL/SQL sono abituati allo sviluppo di applicazioni sul lato server che hanno una stretta integrazione con i dati SQL. È possibile sviluppare applicazioni sul lato server Java che sfruttano la scalabilità e le prestazioni del database Oracle. Se non hai familiarità con Java, vedi “Panoramica di Java” .
- Esamina perché può prendere in considerazione l’uso di java all’interno del database Oracle. Vedi “Perché utilizzare Java nel database Oracle?” . Inoltre, viene fornita una breve descrizione per ciascuna delle API Java supportate nel database Oracle. L’elenco delle API include le procedure memorizzate da JDBC e Java. Vedi “Oracle’s Java Application Strategy” .
Cosa c’è di nuovo in questa versione?
Le seguenti sezioni descrivono le aggiunte a questa versione:
- Aggiornamento a J2SE 1.4.1
- Nuovo modello di memoria per sessioni di modalità dedicate
- Callout di servizi Web del database
- Interfaccia Java nativa
- Chiamata EJB
Aggiornamento a J2SE 1.4.1
In questa versione, le classi di sistema vengono aggiornate da J2SE 1.3 a J2SE 1.4.1. J2SE 1.4.1 è compatibile con J2SE 1.3. Sun Microsystems pubblica l’elenco delle incompatibilità tra J2SE 1.4.1 e versioni precedenti sul seguente sito Web:
http: // java.sole.com/prodotti/j2se/1.4.1/compatibilità.html
Come parte dell’aggiornamento delle classi di sistema a J2SE 1.4.1, OracleJVM supporta AWT senza testa. Headless AWT consente al calcolo AWT, che non si basa sul display nativo e sui dispositivi di input della piattaforma, ma, invece, Disallows tenta di accedere a tali risorse native. Metodi che tentano di visualizzare un’interfaccia utente grafica o di leggere dalla tastiera o dall’input del mouse invece di lanciare la nuova eccezione di runtime Java.awt.Exception. Allo stesso modo, OracleJVM Disallows tenta di riprodurre o registrare il suono utilizzando i dispositivi audio nativi del server, ma consente comunque alle applicazioni di leggere, scrivere e manipolare i file audio supportati. Per ulteriori informazioni, consultare “Interfacce utente sul server” .
Nuovo modello di memoria per sessioni di modalità dedicate
Nel database Oracle, OracleJVM ha un nuovo modello di memoria per sessioni che si connettono al database tramite un server dedicato. Poiché una sessione che utilizza un server dedicato è garantita per utilizzare lo stesso processo per ogni chiamata di database, l’area di processo globale viene utilizzata per la memoria specifica della sessione e le allocazioni degli oggetti. Ciò significa che alcuni degli oggetti e delle risorse che venivano reclamati alla fine di ogni chiamata possono ora vivere attraverso le chiamate. In particolare, le risorse specifiche per un particolare sistema operativo, come thread e file aperti, ora non vengono più ripulite alla fine di ciascuna chiamata di database.
Per le sessioni che utilizzano server condivisi, sono ancora presenti le restrizioni tra le chiamate applicate nelle versioni precedenti. Il motivo è che una sessione che utilizza un server condiviso non è garantita per connettersi allo stesso processo su una successiva chiamata di database, e quindi la memoria e gli oggetti specifici della sessione che devono vivere attraverso le chiamate vengono salvati nell’area globale del sistema. Ciò significa che le risorse specifiche del processo, come thread, file aperti e prese devono essere ripulite alla fine di ogni chiamata e quindi non saranno disponibili per la chiamata successiva. Per maggiori dettagli sul comportamento OracleJVM quando si utilizzano server condivisi, consultare “Considerazioni speciali per i server condivisi” .
Callout di servizi Web del database
Nel database Oracle, è possibile caricare un client Web Services Stack nell’ORACLEJVM per supportare i richiamo ai servizi Web esterni da Java e da PL/SQL. È possibile utilizzare lo strumento JPUBLISHER per generare prox da client Java statico e specifiche di chiamata PL/SQL su questi proxy che vengono caricati nell’ORACLEJVM per consentire l’accesso ai servizi Web da Java, PL/SQL e Codice SQL.
Interfaccia Java nativa
Nel database Oracle, ora è possibile invocare metodi statici pubblici delle classi Java in OracleJVM direttamente dai clienti Java senza definire le specifiche di chiamata PL/SQL e chiamarle tramite JDBC. Invece, puoi utilizzare l’utilità JPublisher per generare una classe client-proxy con la stessa firma della classe Java sul lato server. Una volta che hai istanziato un’istanza di proxy client con una connessione JDBC, è possibile chiamare direttamente i metodi proxy.
La Figura 1-1 dimostra un’API stub lato client per l’invocazione diretta dei metodi Java lato server statico. Jpublisher si occupa in modo trasparente della generazione di stub.
Figura 1-1 Interfaccia Java nativa
Ad esempio, per chiamare il seguente metodo nel server
Oracle di stringa pubblica.sqlj.Checker.Jdbcversion.accordare();
jpub -java = oracle.sqlj.Checker.Jdbcversion
Chiamata EJB
In alcune applicazioni aziendali diventa essenziale accedere a Enterprise Java Beans (EJB) che vengono distribuiti su un server remoto, dall’interno del database. Oracle Database fornisce un mezzo per accedere agli EJB distribuiti a distanza su RMI.
Figura 1-2 Chiamata EJB
Panoramica di Java
Java è emerso come linguaggio di programmazione orientato agli oggetti. Include i seguenti concetti:
- A Java Virtual Machine (JVM), che fornisce le basi fondamentali per l’indipendenza della piattaforma
- Tecniche di gestione automatica dello stoccaggio, il più visibile delle quali è la raccolta della spazzatura
- Sintassi del linguaggio che prende in prestito da C e applica una forte digitazione
Il risultato è una lingua orientata agli oggetti ed efficiente per i programmi a livello di applicazione.
Terminologia di programmazione Java e orientata agli oggetti
Questa sezione copre alcune terminologia di base dello sviluppo delle applicazioni Java nell’ambiente del database Oracle. I termini dovrebbero essere familiari ai programmatori Java esperti. Una discussione dettagliata sulla programmazione orientata agli oggetti o sul linguaggio Java va oltre lo scopo di questo libro. Molti testi, oltre alle specifiche del linguaggio completo, sono disponibili presso la tua libreria e su Internet. Vedi “Lettura suggerita” nella prefazione per i suggerimenti per fare riferimento ai materiali e per luoghi per trovare informazioni relative a Java su Internet.
Classi
Tutti i linguaggi di programmazione orientati agli oggetti supportano il concetto di classe. Come per una definizione della tabella, una classe fornisce un modello per gli oggetti che condividono le caratteristiche comuni. Ogni classe può contenere quanto segue:
- Attributi-variabili statiche o di istanza che ogni oggetto di una particolare classe possiede.
- Metodi: puoi invocare metodi definiti dalla classe o ereditati da qualsiasi classe estesa dalla classe.
Quando crei un oggetto da una classe, stai creando un’istanza di quella classe. L’istanza contiene i campi di un oggetto, che sono noti come dati, o stato. La Figura 1-3 mostra un esempio di una classe di dipendente definita con due attributi: cognome (lastname) e identificatore dei dipendenti (ID).
Figura 1-3 classi e istanze
Quando si crea un’istanza, gli attributi archiviano informazioni individuali e private pertinenti solo al dipendente. Cioè, le informazioni contenute in un’istanza dei dipendenti sono note solo per quel singolo dipendente. L’esempio nella Figura 1-3 mostra due istanze di dipendente-Smith e Jones. Ogni istanza contiene informazioni rilevanti per il singolo dipendente.
Attributi
Gli attributi all’interno di un’istanza sono noti come campi. I campi di istanza sono analoghi ai campi di una riga della tabella relazionale. La classe definisce i campi, nonché il tipo di ogni campo. Puoi dichiarare i campi in Java come accesso statico, pubblico, privato, protetto o predefinito.
- I campi di accesso pubblici, privati, protetti o predefiniti vengono creati in ogni istanza.
- I campi statici sono come variabili globali in quanto le informazioni sono disponibili per tutti i casi della classe dei dipendenti.
La specifica del linguaggio definisce le regole di visibilità dei dati per tutti i campi. Regole di visibilità Definisci in quali circostanze è possibile accedere ai dati in questi campi.
Metodi
La classe definisce anche i metodi che puoi invocare su un’istanza di quella classe. I metodi sono scritti in Java e definiscono il comportamento di un oggetto. Questo raggruppamento di stato e comportamento è l’essenza dell’incapsulamento, che è una caratteristica di tutti i linguaggi di programmazione orientati agli oggetti. Se si definisce una classe di dipendenti, dichiarando che l’ID di ciascun dipendente è un campo privato, altri oggetti possono accedere a quel campo privato solo se un metodo restituisce il campo. In questo esempio, un oggetto potrebbe recuperare l’identificatore del dipendente invocando il dipendente.metodo getID ().
Inoltre, con incapsulamento, puoi dichiarare che il dipendente.Il metodo getID () è privato o puoi decidere di non scrivere un dipendente.metodo getID (). L’incapsulamento ti aiuta a scrivere programmi riutilizzabili e non abusi. L’incapsulamento rende pubblici solo quelle caratteristiche di un oggetto dichiarato pubblico; Tutti gli altri campi e metodi sono privati. I campi e i metodi privati possono essere utilizzati per l’elaborazione degli oggetti interni.
Gerarchia di classe
Java definisce le classi all’interno di una grande gerarchia di classi. Nella parte superiore della gerarchia c’è la classe di oggetti. Tutte le classi in Java ereditano dalla classe Object ad un certo livello, mentre cammini attraverso la catena ereditaria di superclassi. Quando diciamo che la classe B eredita dalla classe A, ogni istanza della classe B contiene tutti i campi definiti nella classe B, così come tutti i campi definiti nella classe A. Ad esempio, nella Figura 1-4, la classe di dipendente a tempo pieno contiene i campi ID e LastName definiti nella classe dei dipendenti, perché eredita dalla classe dei dipendenti. Inoltre, la classe di dipendente a tempo pieno aggiunge un altro campo, bonus, che è contenuto solo all’interno del dipendente a tempo pieno.
Puoi invocare qualsiasi metodo su un’istanza di classe B definita in classe A o B. Nel nostro esempio dei dipendenti, l’istanza del dipendente a tempo pieno può invocare metodi definiti solo all’interno della propria classe o metodi definiti all’interno della classe dei dipendenti.
Figura 1-4 Gerarchia di classe
Le istanze di classe B sono sostituibili per i casi di classe A, il che rende l’eredità un altro potente costrutto di linguaggi orientati agli oggetti per migliorare il riutilizzo del codice. Puoi creare nuove classi che definiscono il comportamento e lo indicano dove ha senso nella gerarchia, ma sfruttare la funzionalità preesistente nelle biblioteche delle classi.
Interfacce
Java supporta solo una singola eredità; Cioè, ogni classe ha una e solo una classe da cui eredita. Se devi ereditare da più di una fonte, Java fornisce l’equivalente di ereditarietà multipla, senza le complicazioni e la confusione che di solito lo accompagnano, attraverso interfacce. Le interfacce sono simili alle classi; Tuttavia, le interfacce definiscono le firme del metodo, non le implementazioni. I metodi sono implementati nelle classi dichiarate per implementare un’interfaccia. L’eredità multipla si verifica quando una singola classe supporta contemporaneamente molte interfacce.
Polimorfismo
Supponiamo nel nostro dipendente Esempio che i diversi tipi di dipendenti debbano essere in grado di rispondere con il loro risarcimento fino ad oggi. La compensazione viene calcolata in modo diverso per diversi tipi di dipendenti.
- I dipendenti a tempo pieno hanno diritto a un bonus
- I dipendenti non ex tentativi ottengono una paga per gli straordinari
Nelle lingue procedurali tradizionali, scriverai una dichiarazione a switch lunga, con i diversi casi possibili definiti.
Switch: (dipendente.tipo) Caso: dipendente di restituzione del dipendente.salario; Caso: dipendente di restituzione del dipendente a tempo pieno.salario + dipendente.bonustodato .
Se aggiungi un nuovo tipo di dipendente, devi aggiornare la tua istruzione switch. Se si modifica la struttura dei dati, è necessario modificare tutte le istruzioni di switch che la utilizzano. In un linguaggio orientato all’oggetto come Java, si implementa un metodo, compensazione Todate (), per ogni sottoclasse della classe dei dipendenti che richiede un trattamento speciale oltre a ciò che è già definito nella classe dei dipendenti. Ad esempio, è possibile implementare il metodo di compensazione () di nonxempheee, come segue:
compensazione del galleggiante privatoTodate ()
Implement il metodo di FullTimeEmpyee, come segue:
compensazione del galleggiante privatoTodate ()
L’utilizzo comune del nome del metodo compenseTodate () consente di invocare il metodo identico su classi diverse e di ricevere risultati diversi, senza conoscere il tipo di dipendente che stai utilizzando. Non è necessario scrivere un metodo speciale per gestire i dipendenti a tempo pieno e i dipendenti parziali. Questa capacità per i diversi oggetti di rispondere agli identici messaggi in modi diversi è noto come polimorfismo.
Inoltre, potresti creare una classe completamente nuova che non eredita dal dipendente di All-Contractor-e implementa un metodo di compensazione (). Un programma che calcola fino ad oggi il libro paga totale iterizzerebbe tutte le persone sul libro paga, indipendentemente dal fatto che fossero a tempo pieno, part-time o appaltatori, e sommare i valori restituiti dall’invocazione del metodo di compensazione () su ciascuno. È possibile apportare in sicurezza modifiche ai singoli metodi di compensazione () con la consapevolezza che i chiamanti dei metodi funzionano correttamente. Ad esempio, è possibile aggiungere in sicurezza nuovi campi alle classi esistenti.
The Java Virtual Machine (JVM)
Come con altre lingue di computer di alto livello, la tua sorgente Java si compila alle istruzioni della macchina di basso livello. In Java, queste istruzioni sono note come bytecode (perché le loro dimensioni sono uniformemente un byte di archiviazione). La maggior parte delle altre lingue-come C-Compile alle istruzioni specifiche della macchina-come istruzioni specifiche per un processore Intel o HP. La tua fonte Java si compila in un set di bytecode standard indipendente dalla piattaforma, che interagisce con una macchina virtuale Java (JVM). JVM è un programma separato che è ottimizzato per la piattaforma specifica su cui si esegue il codice Java. La Figura 1-5 illustra come Java può mantenere l’indipendenza della piattaforma. La tua fonte Java è compilata in bytecodes, che sono indipendenti dalla piattaforma. Ogni piattaforma ha installato un JVM specifico per il suo sistema operativo. I bytecodi Java dalla tua fonte vengono interpretati tramite JVM in azioni dipendenti dalla piattaforma appropriate.
Figura 1-5 Struttura dei componenti Java
Quando sviluppi un programma Java, si utilizzano librerie di classe principale predefinite scritte in lingua Java. Le librerie di classe core Java sono logicamente divise in pacchetti che forniscono funzionalità comunemente usate, come il supporto del linguaggio di base (Java.lang), input/output (java.io) e accesso alla rete (java.netto). Insieme, le librerie di classe JVM e Core forniscono una piattaforma su cui i programmatori Java possono svilupparsi con la fiducia che qualsiasi hardware e sistema operativo che supporta Java eseguirà il loro programma. Questo concetto è ciò che guida l’idea “Scrivi una volta, corri ovunque” di Java.
La Figura 1-6 illustra come le applicazioni Oracle Java si trovano in cima alle librerie di classe core Java, che a loro volta si trovano in cima al JVM. Poiché il sistema di supporto Oracle Java si trova all’interno del database, JVM interagisce con le librerie di database Oracle, anziché direttamente con il sistema operativo.
Figura 1-6 Struttura dei componenti Java Database Oracle
Sun Microsystems fornisce specifiche disponibili pubblicamente sia per la lingua Java che per il JVM. La specifica del linguaggio Java (JLS) definisce cose come la sintassi e la semantica; La specifica JVM definisce il comportamento a basso livello necessario per la “macchina” che esegue i bytecodi. Inoltre, Sun Microsystems fornisce una suite di test di compatibilità per gli implementari JVM per determinare se hanno rispettato le specifiche. Questa suite di test è conosciuta come il kit di compatibilità Java (JCK). L’implementazione OracleJVM è conforme completamente a JCK. Parte della strategia Java complessiva è che uno standard apertamente specificato, insieme a un modo semplice per verificare la conformità a tale standard, consente ai venditori di offrire un supporto uniforme per Java su tutte le piattaforme.
Caratteristiche chiave della lingua Java
La lingua Java ha caratteristiche chiave che lo rendono ideale per lo sviluppo di applicazioni server. Queste caratteristiche includono:
- Semplicità-java è un linguaggio più semplice della maggior parte degli altri utilizzati nelle applicazioni del server a causa della sua coerente applicazione del modello a oggetti. Il grande set standard di librerie di classe porta potenti strumenti agli sviluppatori Java su tutte le piattaforme.
- Portabilità: la java è portatile su piattaforme. È possibile scrivere codice dipendente dalla piattaforma in Java, ma è anche semplice scrivere programmi che si muovono senza soluzione di continuità attraverso le macchine. Le applicazioni Oracle Server, che non supportano le interfacce utente grafiche direttamente sulla piattaforma che le ospita, tendono anche a evitare i pochi problemi di portabilità della piattaforma che Java ha.
- Gestione automatica dell’archiviazione-La macchina virtuale Java esegue automaticamente tutte le allocazioni di memoria e la trasformazione durante l’esecuzione del programma. I programmatori Java non possono né allocare né memoria libera esplicitamente. Invece, dipendono dal JVM per eseguire queste operazioni di contabilità, allocando la memoria mentre creano nuovi oggetti e si tratta di memoria quando gli oggetti non sono più referenziati. Quest’ultima operazione è conosciuta come Garbage Collection.
- Forte digitazione: prima di utilizzare una variabile Java, è necessario dichiarare la classe dell’oggetto che manterrà. La forte digitazione di Java consente di fornire una soluzione ragionevole e sicura alle chiamate intergue tra applicazioni Java e PL/SQL e integrare le chiamate Java e SQL all’interno della stessa applicazione.
- NESSUN PORINTER-Anche se Java mantiene gran parte del sapore di C nella sua sintassi, non supporta i puntatori diretti o la manipolazione del puntatore. Passano tutti i parametri, tranne i tipi primitivi, per riferimento (cioè l’identità dell’oggetto è preservata), non per valore. Java non fornisce l’accesso diretto a basso livello di C, che elimina la corruzione e le perdite della memoria.
- Gestione delle eccezioni-Le eccezioni di java sono oggetti. Java richiede agli sviluppatori di dichiarare quali eccezioni possono essere lanciate con metodi in una particolare classe.
- Spazio dei nomi flessibile-Java definisce le classi e le tiene all’interno di una struttura gerarchica che rispecchia lo spazio dei nomi di dominio di Internet. È possibile distribuire applicazioni Java ed evitare collisioni di nomi. Le estensioni di Java come Java Naming and Directory Interface (JNDI) forniscono un framework per i servizi di più nomi da federare. L’approccio dello spazio dei nomi di Java è abbastanza flessibile da consentire a Oracle di incorporare il concetto di schema per la risoluzione dei nomi delle classi, mentre si rispettano completamente con le specifiche del linguaggio.
- Sicurezza: il design dei bytecode Java e la JVM consentono ai meccanismi integrati di verificare che il codice binario Java non sia stato manomesso. Il database Oracle è installato con un’istanza di SecurityManager, che, se combinato con Oracle Database Security, determina chi può invocare qualsiasi metodo Java.
- Standard per la connettività ai database relazionali-JDBC abilita il codice Java di accedere e manipolare i dati residenti in database relazionali. Oracle fornisce driver che consentono al codice Java portatile indipendente dal fornitore di accedere al database relazionale.
Perché utilizzare Java nel database Oracle?
L’unico motivo per cui è consentito scrivere e caricare le applicazioni Java all’interno del database è perché è un linguaggio sicuro. Java è stato sviluppato per impedire a chiunque di manomettere il sistema operativo in cui risiede il codice Java. Alcune lingue, come C, possono introdurre problemi di sicurezza all’interno del database; Java, a causa del suo design, è un linguaggio sicuro da consentire all’interno del database.
Sebbene la lingua Java presenta molti vantaggi per gli sviluppatori, fornire un’implementazione di un JVM che supporta le applicazioni del server Java in modo scalabile è una sfida. Questa sezione discute alcune di queste sfide.
- Java e RDBMS: una combinazione robusta
- Multithreading
- Gestione automatica dello stoccaggio con collezione di immondizia
- Orma
- Prestazione
- Caricamento della classe dinamica
Java e RDBMS: una combinazione robusta
Oracle RDBMS fornisce alle applicazioni Java un motore dinamico di elaborazione dei dati che supporta query complesse e viste diverse degli stessi dati. Tutte le richieste dei clienti sono assemblate come query di dati per l’elaborazione immediata e i risultati delle query vengono generate al volo.
Diverse funzionalità rendono Java ideale per la programmazione del server. Java consente di assemblare applicazioni utilizzando componenti software standard (Javabeans). Il suo tipo di gestione della sicurezza e della memoria automatica consentono una stretta integrazione con RDBMS. Inoltre, Java supporta la distribuzione trasparente dei componenti dell’applicazione attraverso una rete.
Pertanto, Java e RDBMS supportano l’assemblaggio rapido di applicazioni incentrate sulla rete basate su componenti che possono evolversi con grazia man mano che le esigenze aziendali cambiano. Inoltre, è possibile spostare applicazioni e negozi di dati dal desktop e su reti intelligenti e server incentrati sulla rete. Ancora più importante, è possibile accedere a tali applicazioni e negozi di dati da qualsiasi dispositivo client.
La Figura 1-7 mostra una tradizionale configurazione a due livelli, client/server in cui i client chiamano le procedure memorizzate Java allo stesso modo in cui chiamano procedure memorizzate PL/SQL. (PL/SQL è un 4GL avanzato strettamente integrato con Oracle Database.) La figura mostra anche come il gestore della connessione di Oracle Net Services può incanalare molte connessioni di rete in una connessione a database singola. Ciò consente all’RDBMS di supportare un gran numero di utenti simultanei.
Figura 1-7 Configurazione client/server a due livelli
Multithreading
Il supporto multithreading è spesso citato come una delle caratteristiche di scalabilità chiave del linguaggio Java. Certamente, la lingua Java e le librerie di classe rendono più semplice scrivere applicazioni multithread in Java rispetto a molte altre lingue, ma è ancora un compito scoraggiante in qualsiasi lingua scrivere un codice multithread affidabile e scalabile.
Come server di database, Oracle Database pianifica in modo efficiente per migliaia di utenti. OracleJVM utilizza le strutture del server RDBMS per pianificare contemporaneamente l’esecuzione Java per migliaia di utenti. Sebbene il database Oracle supporti i thread a livello di lingua Java richiesti da JLS e JCK, l’uso di thread all’interno dell’ambito del database non aumenterà la scalabilità. L’uso della scalabilità incorporata del database elimina la necessità di scrivere server Java multithread. È necessario utilizzare le strutture del database per la pianificazione degli utenti scrivendo applicazioni Java a thread singolo. Il database si occuperà della pianificazione tra ciascuna applicazione; Pertanto, si ottiene la scalabilità senza dover gestire i thread. Puoi ancora scrivere applicazioni Java multithread, ma più thread Java non aumenteranno le prestazioni del tuo server.
Una difficoltà multithreading impone a Java è l’interazione di thread e la gestione automatica dello stoccaggio o la raccolta dei rifiuti. Il Garbage Collector in esecuzione in un JVM generico non ha alcuna conoscenza di quali thread di lingua Java stiano eseguendo o come il sistema operativo sottostante li pianifica.
- Modello di database non oracle: un singolo utente mappe a un singolo thread di livello di lingua Java; Lo stesso singolo collezionista di immondizia gestisce tutta la spazzatura da tutti gli utenti. Diverse tecniche in genere riguardano l’allocazione e la raccolta di oggetti di vite e dimensioni variabili. Il risultato in un’applicazione pesantemente multithread è, nella migliore delle ipotesi, dipendente dal supporto del sistema operativo per i thread nativi, che può essere inaffidabile e limitato nella scalabilità. Alti livelli di scalabilità per tali implementazioni non sono stati dimostrati in modo convincente.
- Modello OracleJVM-Anche quando migliaia di utenti si connettono al server ed eseguono lo stesso codice Java, ogni utente lo sperimenta come se stesse eseguendo il proprio codice Java sulla propria macchina virtuale Java. La responsabilità dell’ORACLEJVM è quella di utilizzare i processi e i thread del sistema operativo, utilizzando l’approccio scalabile di Oracle RDBMS. Come risultato di questo approccio, il Garbage Collector di JVM è più affidabile ed efficiente perché non raccoglie mai la spazzatura da più di un utente in qualsiasi momento. Fare riferimento a “Threading in Oracle Database” per ulteriori informazioni sull’implementazione del modello di thread in OracleJVM.
Gestione automatica dello stoccaggio con collezione di immondizia
La collezione Garbage è una delle principali caratteristiche della gestione automatizzata di archiviazione di Java, eliminando la necessità per gli sviluppatori Java di allocare e la memoria libera esplicitamente. Di conseguenza, questo elimina una grande fonte di perdite di memoria che comunemente affliggono i programmi C e C ++. C’è un prezzo per un tale vantaggio: Garbage Collection contribuisce al sovraccarico della velocità di esecuzione del programma e dell’impronta. Sebbene molti articoli siano stati scritti qualificando e quantificando il compromesso, il costo complessivo è ragionevole, considerando le alternative.
La raccolta della spazzatura impone una sfida allo sviluppatore JVM che cerca di fornire una piattaforma Java altamente scalabile e veloce. OracleJVM affronta queste sfide nei seguenti modi:
- OracleJVM utilizza le strutture di pianificazione del database Oracle, che possono gestire più utenti in modo efficiente.
- La collezione Garbage si comporta in modo coerente per più utenti perché la raccolta della Garbage è focalizzata su un singolo utente all’interno di una singola sessione. OracleJVM gode di un enorme vantaggio perché l’onere e la complessità del lavoro del gestore della memoria non aumenta con l’aumentare del numero di utenti. Il gestore della memoria esegue l’allocazione e la raccolta di oggetti all’interno di una singola sessione, che in genere si traduce nell’attività di un singolo utente.
- OracleJVM utilizza diverse tecniche di raccolta dei rifiuti a seconda del tipo di memoria utilizzata. Queste tecniche forniscono un’efficienza elevata e bassa spese generali.
Orma
L’impronta di un programma Java in esecuzione è influenzata da molti fattori:
- Dimensione del programma stesso: come molte classi e metodi e quanto codice contengono.
- Complessità del programma: la quantità di librerie di classe principale che OracleJVM utilizza man mano che il programma esegue, al contrario del programma stesso.
- Quantità di stato utilizzato da JVM: come molti oggetti si assegna il JVM, quanto sono grandi e quanti devono essere mantenuti tra le chiamate.
- Capacità del Garbage Collector e Memory Manager di far fronte alle richieste del programma di esecuzione, che è spesso non deterministico. La velocità con cui gli oggetti sono assegnati e il modo in cui sono trattenuti da altri oggetti influenza l’importanza di questo fattore.
Dal punto di vista della scalabilità, la chiave per supportare molti client simultanei è un’impronta di sessione minima per utente. OracleJVM mantiene al minimo l’impronta della sessione per utente posizionando tutti i dati di sola lettura per gli utenti, come i bytecodi Java, nella memoria condivisa. Algoritmi di collezione di immondizia appropriati vengono applicati contro i ricordi di call e sessione per mantenere un impronta ridotta per la sessione dell’utente. OracleJVM utilizza tre tipi di algoritmi di raccolta dei rifiuti per mantenere la memoria della sessione dell’utente:
- Scavenging generazionale per oggetti di breve durata
- Collezione Mark and Lazy Sweep per oggetti che esistono per la vita di una singola chiamata
- Copia di collezionisti per oggetti di lunga durata-oggetti che vivono attraverso le chiamate all’interno di una sessione
Prestazione
Le prestazioni OracleJVM sono migliorate implementando un compilatore nativo.
Come i compilatori nativi migliorano le prestazioni
Java esegue bytecodi indipendenti dalla piattaforma sopra un JVM, che a sua volta interagisce con la piattaforma hardware specifica. Ogni volta che aggiungi livelli all’interno del software, le tue prestazioni sono degradate. Poiché Java richiede di passare attraverso un intermediario per interpretare bytecodi indipendenti dalla piattaforma, esiste un grado di inefficienza per le applicazioni Java che non esiste all’interno di un linguaggio dipendente dalla piattaforma, come C. Per affrontare questo problema, diversi fornitori JVM creano compilatori nativi. I compilatori nativi traducono bytecodi Java in codice nativo dipendente dalla piattaforma, che elimina il passaggio dell’interprete e migliora le prestazioni.
Di seguito descrive due metodi per la compilazione nativa:
Compilation just-in-time (JIT)
I compilatori JIT compilano rapidamente i bytecode Java al codice macchina nativo (specifico della piattaforma) durante il runtime. Ciò non produce un eseguibile da eseguire sulla piattaforma; Invece, fornisce un codice dipendente dalla piattaforma da bytecode Java che viene eseguito direttamente dopo che è stato tradotto. Questo dovrebbe essere usato per il codice Java che viene eseguito frequentemente, che verrà eseguito a velocità più vicine a lingue come C.
La compilazione traduce bytecode Java in codice C indipendente dalla piattaforma prima di runtime. Quindi un compilatore C standard compila il codice C in un eseguibile per la piattaforma di destinazione. Questo approccio è più adatto per le applicazioni Java che sono modificate di rado. Questo approccio sfrutta la tecnologia di compilazione matura ed efficiente specifica della piattaforma che si trova nei moderni compilatori C.
Oracle Database utilizza una compilation in anticipo per fornire le sue librerie di classe Java Core: codice JDBC in forma compilata nativa. È applicabile su tutte le piattaforme che Oracle supporta, mentre un approccio JIT richiede il codice di basso livello dipendente dal processore per ogni piattaforma. Puoi utilizzare questa tecnologia di compilation nativa con il tuo codice Java.
Come mostra la Figura 1-8, il codice compilato nativamente esegue fino a dieci volte più veloce del codice interpretato. Quindi, più codice nativo utilizza il tuo programma, più velocemente esegue.
Figura 1-8 Interprete contro l’acceleratore
Fare riferimento a “codice compilato nativo” per ulteriori informazioni.
Caricamento della classe dinamica
Un’altra caratteristica forte di Java è il caricamento di classe dinamica. Il caricatore di classe carica le classi dal disco (e le pone nelle strutture di memoria specifiche per JVM necessarie per l’interpretazione) solo quando vengono utilizzate durante l’esecuzione del programma. Il caricatore di classe individua le classi nel percorso di classe e le carica durante l’esecuzione del programma. Questo approccio, che funziona bene per le applet, pone i seguenti problemi in un ambiente server:
L’operazione di caricamento della classe immette una penalità grave all’esecuzione per la prima volta. Un semplice programma può far sì che ORACLEJVM carichi molte classi di base per supportarne le esigenze. Un programmatore non può prevedere o determinare facilmente il numero di classi caricato.
L’oracleJVM carica le classi dinamicamente, proprio come con qualsiasi altra macchina virtuale Java. Si incontra lo stesso colpo di velocità di caricamento di una tantum. Tuttavia, poiché le classi vengono caricate in memoria condivisa, nessun altro utente di tali classi causerà nuovamente il caricamento delle classi: useranno semplicemente le stesse classi precaricate.
Un vantaggio del caricamento dinamico della classe è che supporta l’aggiornamento del programma. Ad esempio, aggiorneresti le classi su un server e i client che scaricano il programma e lo caricano in modo dinamico, visualizzano l’aggiornamento ogni volta che usano il programma. I programmi del server tendono a enfatizzare l’affidabilità. Come sviluppatore, devi sapere che ogni client esegue una configurazione specifica del programma. Non vuoi che i clienti caricino inavvertitamente alcune classi che non intendevi caricare.
Il database Oracle separa l’operazione di caricamento e risolvere dall’operazione di caricamento della classe in fase di esecuzione. Carica il codice Java che hai sviluppato sul server utilizzando l’utilità loadjava. Invece di utilizzare ClassPath, si specifica un risolutore al momento dell’installazione. Il resolver è analogo a ClassPath, ma consente di specificare gli schemi in cui risiedono le classi. Questa separazione della risoluzione dal caricamento della classe significa sempre sapere quali utenti del programma eseguono. Fare riferimento al capitolo 11, “Strumenti di oggetti dello schema” per i dettagli su LoadJava e Resolvers.
Cosa è diverso con OracleJVM?
Questa sezione discute alcune importanti differenze tra OracleJVM e il tipico cliente JVMS.
Metodo main ()
Le applicazioni Java basate sul client dichiarano un unico metodo di alto livello (main ()) che definisce il profilo di un’applicazione. Come per le applet, le applicazioni basate sul server non hanno tale “loop interiore.”Invece, sono guidati da clienti logicamente indipendenti.
Ogni client inizia una sessione, chiama i suoi moduli logici sul lato server attraverso punti di iscrizione di alto livello e alla fine termina la sessione. L’ambiente del server nasconde la gestione di sessioni, reti e altre risorse condivise dai programmi Java ospitati.
La GUI
Un server non può fornire GUI, ma può fornire la logica che le guida. OracleJVM supporta solo la modalità senza testa del toolkit per finestre astratte (AWT). Tutte le classi AWT Java sono disponibili all’interno dell’ambiente del server e i tuoi programmi possono utilizzare la funzionalità AWT, purché non tentino di materializzare una GUI sul server. Per ulteriori informazioni, consultare “Interfacce utente sul server” .
L’IDE
OracleJVM è orientato alla distribuzione delle applicazioni Java, non allo sviluppo. È possibile scrivere e utilizzare le applicazioni nel tuo IDE preferito, come Oracle Jdeveloper, quindi distribuirle per l’esecuzione all’interno dell’RDBMS.
Vedi “Strumenti di sviluppo” per ulteriori informazioni.
La compatibilità binaria di Java ti consente di lavorare in qualsiasi IDE, quindi caricare file di classe Java sul server. Non è necessario spostare i file di origine Java nel database. Invece, è possibile utilizzare potenti IDE sul lato client per mantenere le applicazioni Java che vengono distribuite sul server.
Componenti principali di OracleJVM
Questa sezione descrive brevemente i componenti principali di OracleJVM e alcune delle strutture che forniscono.
Il database Oracle Java Virtual Machine (JVM) è un ambiente di esecuzione Java completa, conforme Java 2. Funziona nello stesso spazio di processo e si rivolge allo spazio del kernel RDBMS, condividendo i suoi cumuli di memoria e accedendo direttamente ai suoi dati relazionali. Questo design ottimizza l’uso della memoria e aumenta la throughput.
OracleJVM fornisce un ambiente di runtime per gli oggetti Java. Supporta pienamente le strutture di dati Java, la spedizione del metodo, la gestione delle eccezioni e i thread a livello di linguaggio. Supporta anche tutte le biblioteche di classe Java Core tra cui Java.Lang, Java.io, java.Net, Java.Matematica e Java.util. La Figura 1-9 mostra i suoi componenti principali.
Figura 1-9 Componenti principali di OracleJVM
OracleJVM incorpora lo spazio dei nomi Java standard negli schemi RDBMS. Questa funzione consente ai programmi Java di accedere agli oggetti Java archiviati nei database Oracle e nei server delle applicazioni in tutta l’Enterprise.
Inoltre, OracleJVM è strettamente integrato con l’architettura di memoria condivisa e condivisa dell’RDBMS. I programmi Java utilizzano la vita di chiamata, sessione e oggetti in modo efficiente senza il tuo intervento. Quindi, puoi ridimensionare gli oggetti aziendali di oraclejvmand java di livello intermedio, anche quando hanno uno stato lungo la sessione.
Il Garbage Collector è descritto in “Gestione automatica dello stoccaggio con Garbage Collection” . Il compilatore nativo è discusso in “Performance” . Il resto dei componenti è descritto nelle seguenti sezioni:
Inoltre, le seguenti sezioni forniscono una panoramica del driver JDBC:
Biblioteca Manager
Per archiviare le classi Java in un database Oracle, si utilizza l’utilità della riga di comando LoadJava, che impiega SQL Crea dichiarazioni Java per fare il proprio lavoro. Se invocato dall’istruzione Crea Java, la Library Manager carica i file di origine, classe o risorsa Java nel database. Non accedi mai direttamente a questi oggetti dello schema Java; Solo OracleJVM li usa.
Compilatore
OracleJVM include un Java 2 standard (noto anche come JDK 1.2) Compilatore Java. Se invocato dall’istruzione Crea Java Source, traduce i file di origine Java in istruzioni a un solo byte neutrali neutrali note come bytecodes. Ogni bytecode è costituito da un codice operativo seguito dai suoi operandi. I file di classe Java risultanti, che sono pienamente conformi allo standard Java, sono inviati all’interprete in fase di esecuzione.
Interprete
Per eseguire i programmi Java, OracleJVM include un interprete di bytecode Java 2 standard. L’interprete e il sistema di runtime Java associato eseguono i file di classe Java standard. Il sistema di runtime supporta metodi nativi e chiamate/chiamate dall’ambiente host.
Puoi anche compilare il tuo codice per un’esecuzione più veloce. OracleJVM utilizza versioni nativamente compilate delle librerie di classe Java Core e dei driver JDBC. Per ulteriori informazioni, consultare “Codice compilato nativo” .
Caricatore di classe
In risposta alle richieste del sistema di runtime, il caricatore di classi Java individua, carichi e inizializza le classi Java memorizzate nel database. Il caricatore di classe legge la classe, quindi genera le strutture di dati necessarie per eseguirla. I dati immutabili e i metadati vengono caricati nella memoria condivisa inizializza. Di conseguenza, è necessaria meno memoria per ogni sessione. Il caricatore di classe tenta di risolvere i riferimenti esterni quando necessario. Inoltre, invoca automaticamente il compilatore Java quando i file di classe Java devono essere ricompilati (e i file di origine sono disponibili).
Verificatore
I file di classe Java sono completamente portatili e conformi a un formato ben definito. Il verificatore impedisce l’uso involontario di file di classe Java “falsificati”, che potrebbero modificare il flusso del programma o violare le restrizioni di accesso. Oracle Security e Java Security lavorano con il verificatore per proteggere le tue applicazioni e dati.
Driver interno JDBC lato server
JDBC è un set standard di classi Java che fornisce un accesso indipendente dai fornitori ai dati relazionali. Specificato da Sun Microsystems e modellato su ODBC (Connettività del database aperto) e la CLI SQL X/Open (interfaccia a livello di chiamata), le classi JDBC forniscono funzionalità standard come connessioni simultanee a più database, gestione delle transazioni, domande semplici, chiamate semplici a procedure memorizzate e streaming a dati di colonne lunghe.
Utilizzando punti di ingresso di basso livello, un driver JDBC appositamente sintonizzato funziona direttamente all’interno dell’RDBMS, fornendo così l’accesso più rapido ai dati Oracle dalle procedure memorizzate Java. Il driver JDBC interno lato server è conforme completamente alle specifiche JDBC Sun Microsystems. Strettamente integrato con RDBMS, supporta tipi di dati specifici per Oracle, set di caratteri della globalizzazione e procedure memorizzate. Inoltre, le API JDBC sul lato client e sul lato server sono le stesse, il che semplifica le applicazioni di partizione.
Strategia applicativa Java di Oracle
Un appello di Java è la sua ubiquità e il numero crescente di programmatori in grado di sviluppare applicazioni utilizzandolo. Oracle fornisce agli sviluppatori di applicazioni aziendali con una soluzione Java end-to-end per la creazione, la distribuzione e la gestione delle applicazioni Java. La soluzione totale è costituita da interfacce programmatiche sul lato client e sul lato server, strumenti per supportare lo sviluppo di Java e una macchina virtuale Java integrata con il server Oracle Database. Tutti questi prodotti sono compatibili al 100 % con gli standard Java.
Ambiente di programmazione Java
Oltre all’ORACLEJVM, l’ambiente di programmazione Java è costituito da:
- Java ha memorizzato le procedure come equivalente e compagno Java per PL/SQL. Le procedure memorizzate da Java sono strettamente integrate con PL/SQL. È possibile chiamare una procedura memorizzata da Java da un pacchetto PL/SQL; È possibile chiamare procedure PL/SQL da una procedura memorizzata da Java.
- È possibile accedere ai dati SQL tramite JDBC.
- Strumenti e script utilizzati nell’assistenza nello sviluppo, nel caricamento di classe e nella gestione della classe.
Per aiutarti a decidere quali API Java utilizzare, esaminare la seguente tabella:
Per avere una procedura Java invocata da SQL, come un trigger.
Procedure memorizzate da Java
Per invocare dichiarazioni SQL dinamiche e complesse da un oggetto Java.
Procedure memorizzate da Java
Se sei un programmatore PL/SQL che esplora Java, sarai interessato alle procedure memorizzate Java. Una procedura memorizzata Java è un programma che scrivi in Java per eseguire nel server, esattamente come una procedura memorizzata da PL/SQL. Lo invochi direttamente con prodotti come SQL*Plus o indirettamente con un trigger. È possibile accedervi da qualsiasi client Oracle Net: OCI, Pro* o JDBC. Il capitolo 5, “Sviluppo di procedure memorizzate Java” spiega come scrivere procedure memorizzate in Java, come accedervi da PL/SQL e come accedere alla funzionalità PL/SQL da Java.
Inoltre, puoi usare Java per sviluppare programmi potenti indipendentemente da PL/SQL. Oracle Database fornisce un’implementazione completamente conforme al linguaggio di programmazione Java e JVM.
Integrazione PL/SQL e funzionalità Oracle RDBMS
Puoi invocare programmi PL/SQL esistenti da Java e invocare i programmi Java da PL/SQL. Questa soluzione protegge e sfrutta gli investimenti esistenti mentre apri i vantaggi e le opportunità di Internet computing con sede a Java.
Oracle offre due diverse interfacce di programmazione delle applicazioni (API) per gli sviluppatori Java per accedere a SQL Data-JDBC. Entrambe le API sono disponibili su client e server, quindi è possibile distribuire lo stesso codice in entrambi i punti.
Driver JDBC
JDBC è un protocollo di accesso al database che consente di connettersi a un database e quindi preparare ed eseguire le istruzioni SQL rispetto al database. Le librerie di classe Java Core forniscono solo un’API JDBC. JDBC è progettato, tuttavia, per consentire ai venditori di fornire ai conducenti che offrono la specializzazione necessaria per un determinato database. Oracle consegna i seguenti tre driver JDBC distinti.
Driver sottile JDBC
È possibile utilizzare il driver sottile JDBC per scrivere applicazioni e applet Java Pure al 100% che accedono a Oracle SQL Data. Il driver sottile JDBC è particolarmente adatto alle applicazioni e alle applet basate su browser Web, perché puoi scaricarlo dinamicamente da una pagina Web proprio come qualsiasi altra applet Java.
Driver interfaccia di chiamata oracle JDBC
Il driver JDBC Oracle Call Interface (OCI) accede alle librerie di codice nativo (cioè non java) specifiche per Oracle sul client o nel livello intermedio, fornendo un aumento delle prestazioni rispetto al driver sottile JDBC, al costo di dimensioni significativamente più grandi e installazione sul lato client.
Driver interno sul lato server JDBC
Oracle Database utilizza il driver interno lato server quando il codice Java esegue sul server. Consente alle applicazioni Java che eseguono nella macchina virtuale Java del server di accedere ai dati definiti localmente (ovvero sulla stessa macchina e nello stesso processo) con JDBC. Fornisce un ulteriore aumento delle prestazioni a causa della sua capacità di utilizzare direttamente le librerie Oracle RDBMS sottostanti, senza il sovraccarico di una connessione di rete interveniente tra il codice Java e i dati SQL. Supportando la stessa interfaccia Java-SQL sul server, il database Oracle non richiede di rielaborare il codice durante la distribuzione.
Jpublisher
JPublisher fornisce uno strumento semplice e conveniente per creare programmi Java che accedono alle tabelle di database oracle esistenti. Vedere la Guida dell’utente di Oracle Database JPublisher per ulteriori informazioni.
Strumenti di sviluppo
L’introduzione di Java al server di database Oracle consente di utilizzare diversi ambienti di sviluppo integrati Java. L’adesione del database Oracle alla compatibilità Java e gli standard e i protocolli aperti di Internet garantiscono che i programmi Java puri al 100% funzionino quando li distribuisci sul database Oracle. Oracle fornisce molti strumenti o utility, tutti scritti in Java, che rendono più semplice lo sviluppo e la distribuzione delle applicazioni del server Java. Oracle’s Jdeveloper ha molte funzionalità progettate specificamente per facilitare la distribuzione di procedure memorizzate Java e Javabean. Puoi scaricare jdeveloper nel seguente sito: http: // otn.oracolo.com/software/prodotti/jdev/contenuto.html.
Desupport of J2EE Technologies nel database Oracle
Con l’introduzione di Container di Oracle Application Server per J2EE (OC4J)-un nuovo contenitore J2EE più facile da usare, più veloce, più veloce e certificato-INIZIO DESAPPORT della Java 2 Enterprise Edition (J2EE) e Corba Stacks dal database, a partire da Oracle9io Release del database 2. Tuttavia, la Java VM (OracleJVM) incorporata da database è ancora presente e continuerà a essere migliorato per offrire funzionalità Java 2 Standard Edition (J2SE), JAVA Stored Procedure e JDBC nel database del database.
Come di Oracle9io Release del database 2 (9.2.0), Oracle non supporta più le seguenti tecnologie nel database:
- lo stack J2EE, composto da:
- Contenitore Enterprise Beans (EJB)
- Contenitore Javaserver Pages (JSP)
- Oracle9io Servlet Engine (OSE)
I clienti non saranno più in grado di distribuire servlet, pagine JSP, EJB e oggetti CORBA nei database Oracle. Oracle9io Release del database 1 (9.0.1) sarà l’ultima versione del database per supportare lo stack J2EE e Corba. Oracle sta incoraggiando i clienti a migrare le applicazioni J2EE esistenti in esecuzione nel database a OC4J.
Giava
Oracle Java è il linguaggio di programmazione n. 1 e la piattaforma di sviluppo. Riduce i costi, abbraccia i tempi di sviluppo, guida l’innovazione e migliora i servizi applicativi. Con milioni di sviluppatori che gestiscono oltre 60 miliardi di macchine virtuali Java in tutto il mondo, Java continua ad essere la piattaforma di sviluppo di scelta per le imprese e gli sviluppatori.
Java 20 è ora disponibile
La prossima versione nella Cadence di sei mesi, Java 20, migliora le prestazioni, la stabilità e la sicurezza dello sviluppo delle applicazioni Java.
Graalvm Enterprise Free su OCI
Costruisci eseguibili nativi che aiutano le applicazioni Java ad avviare rapidamente, ridurre l’utilizzo della memoria e risparmiare i costi di hosting.
Servizio di gestione Java
JMS Advance Funzionalità Aiuta gli amministratori a ottenere ulteriori approfondimenti sui carichi di lavoro Java. Analizzare l’utilizzo, le vulnerabilità e l’impatto dagli aggiornamenti della tabella di marcia crittografica.
Java Developer Day a Oracle Devlive 2023
Guarda il keynote a livello di DevLive e scopri i miglioramenti di rilascio di Java 20 per AppDev, le innovazioni linguistiche moderne e il supporto per i framework di sviluppatori Java.
Rapporti di Java Analyst
Java e l’arte di guidare la trasformazione digitale
Ottieni approfondimenti su come sfruttare Java per supportare i tuoi sforzi di modernizzazione e trasformazione. Scopri come ottenere il massimo dalle funzionalità di servizio open source, cloud e di supporto in questo brief tecnico di Omdia.
Java: modernizzazione dello sviluppo per applicazioni sicure e basate su cloud
Scopri come Java aiuta le organizzazioni ad accelerare la trasformazione digitale minimizzando le vulnerabilità per oggi’S BUSSICAZIONE DI APPLICAZIONE.
Punti di dolore per la sicurezza e la conformità in alto nello sviluppo dell’applicazione
La sicurezza rimane la priorità più importante per i dirigenti IT, secondo un recente rapporto di 451 Research. Leggi il brief per scoprire i migliori problemi di sicurezza per gli sviluppatori e come raggiungere i tuoi obiettivi di sicurezza e conformità IT con Java.
Brief di conoscenza di Aberdeen
Scopri perché i leader nello sviluppo delle applicazioni usano Java per costruire applicazioni di livello mondiale in modo più efficiente la massima qualità e la più forte sicurezza.