Oracle 데이터베이스가 내부적으로 Java를 사용합니까?
각 클라이언트는 세션을 시작하고 최상위 입력 지점을 통해 서버 측 로직 모듈을 호출하고 결국 세션을 종료합니다. 서버 환경은 호스팅 된 Java 프로그램의 세션, 네트워크 및 기타 공유 리소스 관리를 숨 깁니다.
요약
Oracle 데이터베이스는 내부적으로 Java를 사용합니다. Oracle은 엔터프라이즈 애플리케이션 개발자를위한 엔드 투 엔드 Java 솔루션을 제공합니다. 이 솔루션에는 클라이언트 측 및 서버 측 프로그래밍 방식 인터페이스, Java 개발 도구 및 Oracle 데이터베이스와 통합 된 JVM이 포함됩니다. 데이터베이스 응용 프로그램 개발의 Java는 데이터 바운드 프로 시저 및 기능 설계, Java 라이브러리로 데이터베이스의 기능을 확장하고 SQL 및 Java2ee World를 연결하는 것과 같은 기능을 제공합니다. Java 프로그래밍 환경은 또한 PL/SQL, JDBC 및 SQLJ 프로그래밍 인터페이스 및 클래스 관리를위한 도구의 동반자로서 Java 저장 절차를 제공합니다. 또한 Oracle Database는 PL/SQL 통합 및 기능을 제공하므로 Java에서 기존 PL/SQL 프로그램을 호출 할 수 있으며 그 반대도 마찬가지로. Oracle에서 제공 한 JDBC 드라이버는 Java 응용 프로그램 및 애플릿을위한 데이터베이스에 연결을 활성화합니다.
키 포인트
1. 데이터베이스 응용 프로그램 개발의 Java :
- Java SE API 및 JDBC를 사용하여 데이터 중 하나 절차 및 기능 설계.
- 데이터베이스의 도달 범위 및 기능을 표준 및 타사 Java 라이브러리로 확장.
- JDBC 수준에서 대칭 데이터 액세스를위한 J2SE 애플리케이션의 유연한 파티셔닝.
- 웹 구성 요소를 호출하고 SQL 및 웹 서비스를 브리징하여 SQL 및 J2EE World 브리징.
2. Java 프로그래밍 환경 사용 :
- Java는 절차를 Java 동등한 것으로 저장하고 PL/SQL의 동반자.
- SQL 데이터에 액세스하기위한 JDBC 및 SQLJ 프로그래밍 인터페이스.
- 클래스 개발,로드 및 관리를위한 도구 및 스크립트.
삼. Java 저장 절차 :
Java 저장 절차는 PL/SQL 저장 프로 시저와 마찬가지로 서버에 배포 된 Java 프로그램입니다. 트리거를 통해 직접 또는 간접적으로 호출 할 수 있습니다. Oracle Database는 표준 Java 프로그래밍 언어 및 JVM의 완전한 구현을 제공합니다.
4. PL/SQL 통합 및 Oracle RDBMS 기능 :
Oracle Database는 PL/SQL에서 Java 및 Java 프로그램에서 기존 PL/SQL 프로그램을 호출 할 수 있습니다. 이를 통해 PL/SQL 및 Java 코드를 활용하고 Java 기반 인터넷 컴퓨팅 기회를 활용할 수 있습니다. Oracle에서 제공하는 JDBC 드라이버에는 JDBC Thin Driver, JDBC OCI 드라이버 및 JDBC 서버 측 내부 드라이버가 포함됩니다.
질문
1. 데이터베이스 애플리케이션 개발에서 Java는 어떤 기능을합니까??
데이터베이스 응용 프로그램 개발의 Java는 데이터 바운드 프로 시저 및 기능 설계, Java 라이브러리로 데이터베이스의 기능을 확장하고 SQL 및 Java2ee World를 연결하는 것과 같은 기능을 제공합니다.
2. PL/SQL과 동등한 Java 저장 절차는 무엇입니까??
Java 저장 절차는 PL/SQL의 Java 동등성 및 동반자 역할을합니다.
삼. Java에서 SQL 데이터에 액세스하기위한 프로그래밍 인터페이스는 무엇입니까??
JDBC 및 SQLJ 프로그래밍 인터페이스는 Java의 SQL 데이터에 액세스하는 데 사용됩니다.
4. Java 프로그래밍 환경에서 사용할 수있는 도구?
Java 프로그래밍 환경은 클래스 개발,로드 및 관리를위한 도구 및 스크립트를 제공합니다.
5. Java 저장 절차를 어떻게 호출 할 수 있습니까??
Java 저장 절차는 트리거를 통해 직접 또는 간접적으로 호출 할 수 있습니다.
6. Oracle 데이터베이스가 Java에서 기존 PL/SQL 프로그램을 호출 할 수 있습니까??
예, Oracle Database는 Java에서 기존 PL/SQL 프로그램을 호출하는 지원을 지원합니다.
7. Java 응용 프로그램이 Oracle SQL 데이터에 어떻게 액세스 할 수 있습니까??
Java 응용 프로그램은 Oracle에서 제공 한 JDBC 드라이버를 통해 Oracle SQL 데이터에 액세스 할 수 있습니다.
8. JDBC 얇은 드라이버의 목적은 무엇입니까??
JDBC Thin Driver는 Oracle SQL 데이터에 액세스하는 순수한 Java 응용 프로그램 및 애플릿을 작성할 수 있습니다. 웹 기반 응용 프로그램 및 애플릿에 적합합니다.
9. JDBC OCI 드라이버는 JDBC 얇은 드라이버와 어떻게 다릅니 까??
JDBC OCI 드라이버는 클라이언트 또는 중간 계층의 Oracle 특정 기본 코드 및 라이브러리에 액세스하여 더 큰 크기 및 클라이언트 측 설치 비용으로 JDBC Thin 드라이버에 비해 성능 향상을 제공합니다.
10. JDBC 서버 측 내부 드라이버는 무엇입니까??
JDBC 서버 측 내부 드라이버는 서버의 Oracle JVM에서 실행되는 Java 응용 프로그램이 JDBC를 사용하여 로컬로 정의 된 데이터에 액세스 할 수 있도록하여 기본 Oracle RDBMS 라이브러리를 직접 사용하여 성능 향상을 제공합니다.
Oracle 데이터베이스가 내부적으로 Java를 사용합니까?
각 클라이언트는 세션을 시작하고 최상위 입력 지점을 통해 서버 측 로직 모듈을 호출하고 결국 세션을 종료합니다. 서버 환경은 호스팅 된 Java 프로그램의 세션, 네트워크 및 기타 공유 리소스 관리를 숨 깁니다.
Oracle은 Java를 사용합니까?
Oracle은 Enterprise Application 개발자에게 Java 응용 프로그램 작성, 배포 및 관리를위한 엔드 투 엔드 Java 솔루션을 제공합니다. 총 솔루션은 클라이언트 측 및 서버 측 프로그래밍 방식 인터페이스, Java 개발을 지원하는 도구 및 Oracle 데이터베이스와 통합 된 JVM으로 구성됩니다. 이러한 모든 제품은 Java 표준과 완전히 호환됩니다. 이 섹션은 다음 주제를 다룹니다
- 데이터베이스 응용 프로그램 개발의 Java
- Java 프로그래밍 환경 사용
- Java 저장 절차
- PL/SQL 통합 및 Oracle RDBMS 기능
- 개발 도구
- 인터넷 프로토콜 버전 6 지원
1.6.데이터베이스 응용 프로그램 개발의 1 Java
데이터베이스 응용 프로그램 개발에서 Java의 가장 중요한 기능은 다음과 같습니다
- Java SE API 및 JDBC를 사용하여 데이터 중 하나 절차 및 기능 설계.
- 데이터베이스의 도달 범위 및 기능을 표준 및 타사 Java 라이브러리로 확장. 예를 들어, 데이터베이스에서 드라이버를 사용하여 타사 데이터베이스에 액세스하고 Hadoop/HDFS에 액세스.
- JDBC 수준에서 대칭 데이터 액세스를위한 Java2 플랫폼의 유연한 파티셔닝 제공.
- 브리징 SQL 및 Java2 플랫폼, Enterprise Edition (J2EE) World by :
- JSP 및 Servlet과 같은 웹 구성 요소 호출
- 웹 서비스 콜 아웃을 사용한 SQL 및 웹 서비스 브리징
1.6.2 Java 프로그래밍 환경 사용
Java 프로그래밍 환경은 Oracle JVM 외에도 다음을 제공합니다
- Java는 절차를 Java 동등한 것으로 저장하고 PL/SQL의 동반자. Java 저장 절차는 PL/SQL과 밀접하게 통합됩니다. PL/SQL 패키지 및 Java 저장 절차의 PL/SQL 절차에서 Java 저장 절차를 호출 할 수 있습니다.
- SQL 데이터에 액세스하기위한 JDBC 및 SQLJ 프로그래밍 인터페이스.
- 클래스 개발,로드 및 관리에 도움이되는 도구 및 스크립트.
다음 표는 어떤 Java API를 사용 해야하는지 결정하는 데 도움이됩니다
트리거와 같은 SQL에서 호출 된 Java 절차를 갖기 위해.
Java 저장 절차
Java 객체에서 알려진 열 이름이있는 알려진 테이블에서 정적이고 간단한 SQL 문을 호출하려면.
Java 객체에서 동적이고 복잡한 SQL 문을 호출하려면.
1.6.3 Java 저장 절차
Java 저장 절차는 서버에 작성 및 배포 된 Java 프로그램이며 PL/SQL 저장 프로 시저와 똑같은 서버에서 실행됩니다. SQL*Plus와 같은 제품으로 직접 호출하거나 트리거로 간접적으로 호출합니다. OCI 및 Pro*, JDBC 또는 SQLJ와 같은 Oracle Net 클라이언트에서 액세스 할 수 있습니다.
또한 Java를 사용하여 PL/SQL과 무관 할 수있는 강력한 서버 측 프로그램을 개발할 수 있습니다. Oracle Database는 표준 Java 프로그래밍 언어와 완전히 준수하는 JVM을 완전히 구현합니다.
관련 주제
1.6.4 PL/SQL 통합 및 Oracle RDBMS 기능
PL/SQL에서 Java 및 Java 프로그램에서 기존 PL/SQL 프로그램을 호출 할 수 있습니다. 이 솔루션은 PL/SQL 및 Java 코드를 보호하고 활용하고 Java 기반 인터넷 컴퓨팅의 장점과 기회를 열어줍니다.
Oracle Database는 SQL 데이터에 액세스하기위한 두 가지 다른 Java API, JDBC 및 SQLJ를 제공합니다. 이 API는 클라이언트에서 사용할 수 있으며 JDBC API도 서버에서도 사용할 수 있습니다. 결과적으로 클라이언트 및 서버에 응용 프로그램을 배포 할 수 있습니다.
다음 주제는 Oracle Database에서 제공하는 Java API를 소개합니다
1.6.4.1 JDBC 드라이버
JDBC는 데이터베이스에 연결하고 데이터베이스에 SQL 문 및 쿼리를 실행할 수있는 데이터베이스 액세스 프로토콜입니다. 핵심 Java 클래스 라이브러리는 다음 JDBC API를 제공합니다 : Java.SQL 및 Javax.SQL . 그러나 JDBC는 공급 업체가 특정 데이터베이스에 필요한 전문화를 제공하는 드라이버를 공급할 수 있도록 설계되었습니다. Oracle은 다음과 같은 고유 한 JDBC 드라이버를 제공합니다
JDBC 얇은 드라이버
JDBC Thin 드라이버를 사용하여 Oracle SQL 데이터에 액세스하는 순수한 Java 응용 프로그램 및 애플릿을 작성할 수 있습니다. JDBC Thin Driver는 웹 기반 애플릿 및 애플릿에 특히 적합합니다. 다른 Java 애플릿과 유사한 웹 페이지에서 동적으로 다운로드 할 수 있기 때문입니다.
JDBC OCI 드라이버
JDBC OCI 드라이버는 Oracle 특정 기본 코드, 즉 비 자바 코드 및 클라이언트 또는 미들층의 라이브러리에 액세스하여 JDBC Thin 드라이버에 비해 성능 향상을 제공합니다.
JDBC 서버 측 내부 드라이버
Oracle Database는 Java 코드가 서버에서 실행될 때 서버 측 내부 드라이버를 사용합니다. 서버의 Oracle JVM에서 실행되는 Java 응용 프로그램이 로컬로 정의 된 데이터, 즉 동일한 시스템 및 동일한 프로세스의 데이터에 액세스 할 수 있습니다. Java 코드와 SQL 데이터 사이의 중간 네트워크 연결의 오버 헤드없이 기본 Oracle RDBMS 라이브러리를 직접 사용하는 능력 때문에 성능 향상을 제공합니다. 서버에서 동일한 Java-SQL 인터페이스를 지원함으로써 Oracle Database는 배포 할 때 코드를 재 작업 할 필요가 없습니다.
관련 주제
Oracle 데이터베이스가 내부적으로 Java를 사용합니까??
편집하다:
Oracle에는 데이터베이스 자체와 동일한 컴퓨터에서 실행되는 JVM이 포함되어 있지만 “DBMS 관련”코드를 실행하는 데 사용되지 않습니다.Java로 작성된 저장 절차/기능을 실행하는 것만.
2011 년 9 월 13 일 6:43에 응답했습니다
a_horse_with_no_name a_horse_with_no_name
78k 14 14 골드 배지 157 157은 배지 194 194 청동 배지
와우, c 부분에 대해 모른다. +1.
2011 년 9 월 13 일 10:17
“역사 타임 라인”: Oracle을 확인하십시오.com/US/Corporate/Timeline/Index.HTML : 1983 : “Oracle은 C 프로그래밍 언어로 서버 코드를 작성하여 데이터베이스의 버전 3을 릴리스합니다.”
2011 년 9 월 13 일 10:24
내 생각에 Java는 존재하지 않는다고 생각합니다. 나는 첫 번째 Java가 Oracle 8i에 왔다고 생각합니다.
2011 년 9 월 13 일 16:59
내부 JVM은 “DBMS 관련”코드를 실행하는 데 사용되지 않습니다. Java로 작성된 저장 절차/기능을 실행하는 것만.
2011 년 9 월 13 일 18:27
@a_horse_with_no_name- “표준”패키지의 의미에 달려 있다고 생각합니다. Oracle은 Java로 내장 된 여러 패키지를 제공합니다 (예 : 많은 XMLQuery 패키지를 포함하여 XDB를 사용하는 모든 것은 내부 JVM에 따라 다릅니다). 이들은 대부분의 개발자가 자주 사용하는 패키지의 의미에서 “표준”이 아닙니다. 그러나 Oracle 데이터베이스의 기본 설치를 할 때 설치된다는 의미에서 “표준”입니다.
1
Oracle 데이터베이스의 Java 소개이 책은 Oracle 데이터베이스에서 Java 응용 프로그램을 개발,로드 및 실행하는 방법에 대한 개요를 제공합니다.
이 장에는 다음 정보가 포함되어 있습니다
- 챕터 내용
- 이 릴리스의 새로운 기능?
- Java의 개요
- Oracle 데이터베이스에서 Java를 사용하는 이유는 무엇입니까??
- OracleJVM과는 다른 것입니다?
- OracleJVM의 주요 구성 요소
- Oracle의 Java 응용 프로그램 전략
- Oracle 데이터베이스에서 J2EE 기술의 Desport
챕터 내용
- Oracle Database 프로그래머 용 Java 언어를 소개합니다. Oracle PL/SQL 개발자. Oracle 데이터베이스의 확장 성 및 성능을 활용하는 Java Server 측 응용 프로그램을 개발할 수 있습니다. Java에 익숙하지 않은 경우 “Java 개요”를 참조하십시오 .
- Oracle Database 내에서 Java 사용을 고려하는 이유를 조사하십시오. “Oracle Database에서 Java를 사용하는 이유를 참조하십시오?” . 또한 Oracle 데이터베이스 내에서 지원되는 각 Java API에 대한 간단한 설명이 제공됩니다. API 목록에는 JDBC 및 Java 저장 절차가 포함됩니다. “Oracle의 Java 응용 프로그램 전략”을 참조하십시오 .
이 릴리스의 새로운 기능?
다음 섹션에서는이 릴리스의 추가 사항을 설명합니다
- J2SE로 업그레이드.4.1
- 전용 모드 세션을위한 새로운 메모리 모델
- 데이터베이스 웹 서비스 콜 아웃
- 기본 Java 인터페이스
- EJB 콜 아웃
J2SE로 업그레이드.4.1
이 릴리스에서 시스템 클래스는 J2SE 1에서 업그레이드됩니다.3 ~ J2SE 1.4.1. J2SE 1.4.1은 J2SE 1과 호환됩니다.삼. Sun Microsystems는 J2SE 1 간의 비 호환성 목록을 게시합니다.4.1 및 다음 웹 사이트의 이전 버전 :
http : // java.해.com/products/j2se/1.4.1/호환성.HTML
시스템 클래스를 J2SE 1로 업그레이드하는 일의 일부로.4.1, OracleJVM은 헤드리스 AWT를 지원합니다. Headless AWT는 플랫폼의 기본 디스플레이 및 입력 장치에 의존하지 않는 AWT 계산을 허용하지만 대신 해당 기본 리소스에 액세스하려고 시도합니다. 그래픽 사용자 인터페이스를 표시하거나 키보드 또는 마우스 입력에서 읽으려고 시도하는 메소드 새로운 런타임 예외 Java.AWT.HeadlessException. 마찬가지로 OracleJVM은 서버의 기본 사운드 장치를 사용하여 사운드를 재생하거나 녹음하려고하지만 응용 프로그램에서 지원되는 사운드 파일을 읽고 쓰고 조작 할 수 있습니다. 자세한 내용은 “서버의 사용자 인터페이스”를 참조하십시오 .
전용 모드 세션을위한 새로운 메모리 모델
Oracle Database에서 OracleJVM에는 전용 서버를 통해 데이터베이스에 연결하는 세션에 대한 새로운 메모리 모델이 있습니다. 전용 서버를 사용하는 세션은 모든 데이터베이스 호출에 대해 동일한 프로세스를 사용하도록 보장되므로 프로세스 전역 영역은 세션 별 메모리 및 객체 할당에 사용됩니다. 즉, 각 통화가 끝날 때 마비되었던 일부 개체와 리소스가 이제 전화를 통해 살 수 있습니다. 특히, 스레드 및 열린 파일과 같은 특정 운영 체제와 관련된 리소스는 이제 각 데이터베이스 통화가 끝날 때 더 이상 정리되지 않습니다.
공유 서버를 사용하는 세션의 경우 이전 릴리스에 적용된 통화의 제한 사항이 여전히 있습니다. 그 이유는 공유 서버를 사용하는 세션이 후속 데이터베이스 호출에서 동일한 프로세스에 연결하도록 보장되지 않기 때문에 통화 전체에 걸쳐 필요한 세션 별 메모리 및 개체는 시스템 글로벌 영역에 저장됩니다. 즉, 스레드, 열린 파일 및 소켓과 같은 프로세스 별 리소스는 각 통화가 끝날 때 정리해야하므로 다음 통화에는 사용할 수 없습니다. 공유 서버를 사용할 때 OracleJVM 동작에 대한 자세한 내용은 “공유 서버에 대한 특별 고려 사항”을 참조하십시오 .
데이터베이스 웹 서비스 콜 아웃
Oracle Database에서는 웹 서비스 클라이언트 스택을 OracleJVM에로드하여 Java 및 PL/SQL의 외부 웹 서비스 콜 아웃을 지원할 수 있습니다. JPUBLISHER 도구를 사용하여 OracleJVM에로드 된 이러한 프록시에 대한 정적 Java 클라이언트 지방성 및 PL/SQL 통화 사양을 생성하여 Java, PL/SQL 및 SQL 코드에서 웹 서비스에 액세스 할 수 있습니다.
기본 Java 인터페이스
Oracle Database에서는 이제 PL/SQL 통화 사양을 정의하고 JDBC를 통해 이들을 호출하지 않고 Java 클라이언트에서 OracleJVM에서 Java 클래스의 공개 정적 메소드를 호출 할 수 있습니다. 대신, JPUBLISHER 유틸리티를 사용하여 서버 측 Java 클래스와 동일한 서명을 가진 클라이언트-프로시 클래스를 생성 할 수 있습니다. JDBC 연결이있는 클라이언트-프록시 인스턴스를 인스턴스화 한 후에는 프록시 메소드를 직접 호출 할 수 있습니다.
그림 1-1은 정적 서버 측 Java 방법의 직접 호출을위한 클라이언트 측 스터브 API를 보여줍니다. Jpublisher는 투명하게 스터브 생성을 처리합니다.
그림 1-1 기본 Java 인터페이스
예를 들어 서버에서 다음 방법을 호출하려면
공개 문자열 오라클.SQLJ.체커.jdbcversion.to_string ();
jpub -java = 오라클.SQLJ.체커.jdbcversion
EJB 콜 아웃
특정 엔터프라이즈 애플리케이션에서는 데이터베이스 내에서 원격 서버에 배포되는 EJB (Enterprise Java Beans)에 액세스하는 것이 필수적입니다. Oracle Database는 RMI를 통해 원격으로 배포 된 EJB에 액세스하는 수단을 제공합니다.
그림 1-2 EJB 콜 아웃
Java의 개요
Java는 선택한 객체 지향 프로그래밍 언어로 부상했습니다. 다음 개념이 포함됩니다
- 플랫폼 독립의 기본 기초를 제공하는 JVM (Java Virtual Machine)
- 자동화 된 스토리지 관리 기술, 가장 눈에 띄는 것은 쓰레기 수집입니다
- C에서 빌리고 강력한 타이핑을 시행하는 언어 구문
결과는 객체 지향적이고 응용 프로그램 수준 프로그램에 효율적인 언어입니다.
Java 및 객체 지향 프로그래밍 용어
이 섹션은 Oracle 데이터베이스 환경에서 Java 응용 프로그램 개발의 기본 용어를 다룹니다. 이 용어는 숙련 된 Java 프로그래머에게 친숙해야합니다. 객체 지향 프로그래밍 또는 Java 언어에 대한 자세한 토론은이 책의 범위를 벗어납니다. 전체 언어 사양 외에도 많은 텍스트는 서점과 인터넷에서 구입할 수 있습니다. 서문의 “제안 된 독서”를 참조하여 참조 자료에 대한 포인터 및 인터넷에서 Java 관련 정보를 찾을 수있는 장소를 참조하십시오.
클래스
모든 객체 지향 프로그래밍 언어는 클래스의 개념을 지원합니다. 테이블 정의와 마찬가지로 클래스는 공통 특성을 공유하는 객체에 대한 템플릿을 제공합니다. 각 클래스에는 다음이 포함될 수 있습니다
- 속성-특정 클래스의 각 객체가 보유하는 종종 또는 인스턴스 변수.
- 방법-클래스에서 정의하거나 클래스에서 확장 된 클래스에 의해 상속 된 메소드를 호출 할 수 있습니다.
클래스에서 객체를 만들 때 해당 클래스의 인스턴스를 생성합니다. 인스턴스에는 데이터로 알려진 객체의 필드가 포함되어 있습니다. 그림 1-3.
그림 1-3 클래스 및 인스턴스
인스턴스를 만들 때 속성은 직원과 관련된 개인 및 개인 정보를 저장합니다. 즉, 직원 사례에 포함 된 정보는 해당 단일 직원에게만 알려져 있습니다. 그림 1-3의 예는 직원의 두 가지 사례 인 Smith와 Jones를 보여줍니다. 각 인스턴스에는 개별 직원과 관련된 정보가 포함됩니다.
속성
인스턴스 내의 속성을 필드라고합니다. 인스턴스 필드는 관계형 테이블 행의 필드와 유사합니다. 클래스는 필드와 각 필드의 유형을 정의합니다. Java의 필드를 정적, 공개, 개인, 보호 또는 기본 액세스라고 선언 할 수 있습니다.
- 공개, 개인, 보호 또는 기본 액세스 필드는 각 인스턴스 내에서 생성됩니다.
- 정적 필드는 직원 클래스의 모든 인스턴스에서 정보를 사용할 수 있다는 점에서 글로벌 변수와 같습니다.
언어 사양은 모든 필드에 대한 데이터 가시성 규칙을 정의합니다. 가시성 규칙이 필드에서 데이터에 액세스 할 수있는 상황에서 정의.
행동 양식
클래스는 또한 해당 클래스의 인스턴스에서 호출 할 수있는 방법을 정의합니다. 방법은 Java로 작성되어 객체의 동작을 정의합니다. 이 상태와 행동의 번들은 캡슐화의 본질이며, 모든 객체 지향 프로그래밍 언어의 특징입니다. 직원 클래스를 정의하는 경우 각 직원의 ID가 개인 필드라고 선언하면 다른 개체는 메소드가 필드를 반환하는 경우에만 해당 개인 필드에 액세스 할 수 있습니다. 이 예에서는 객체가 직원을 호출하여 직원의 식별자를 검색 할 수 있습니다.getId () 메소드.
또한 캡슐화를 통해 직원이.getId () 메소드는 개인이거나 직원을 쓰지 않기로 결정할 수 있습니다.getId () 메소드. 캡슐화는 재사용 가능하고 오용하지 않는 프로그램을 작성하는 데 도움이됩니다. 캡슐화는 공개로 선언 된 객체의 특징 만 공개합니다. 다른 모든 분야와 방법은 비공개입니다. 개인 필드 및 메소드는 내부 객체 처리에 사용할 수 있습니다.
클래스 계층
Java는 큰 계층 구조 내에서 클래스를 정의합니다. 계층 구조의 상단에는 객체 클래스가 있습니다. Java의 모든 클래스는 슈퍼 클래스의 상속 체인을 통과 할 때 객체 클래스에서 어느 정도 상속합니다. 클래스 B가 클래스 A에서 상속 될 때 클래스 B의 각 인스턴스는 클래스 B에 정의 된 모든 필드와 클래스 A에 정의 된 모든 필드를 포함합니다. 예를 들어, 그림 1-4에서 풀 타임 elployee 클래스에는 직원 클래스에서 상속되기 때문에 직원 클래스에 정의 된 ID 및 최후 이름 필드가 포함되어 있습니다. 또한 FullTimeEdloyee 클래스는 다른 분야 인 보너스를 추가하며, 여기에는 풀 타임 elployee 내에 만 포함됩니다.
클래스 A 또는 B에 정의 된 클래스 B 인스턴스에서 메소드를 호출 할 수 있습니다. 직원 예에서 풀 타임 직원 인스턴스는 자체 클래스 내에서만 정의 된 메소드 또는 직원 클래스 내에서 정의 된 메소드를 호출 할 수 있습니다.
그림 1-4 클래스 계층
클래스 B의 인스턴스는 클래스 A의 인스턴스를 대체 할 수 있으며, 상속은 코드 재사용 개선을위한 객체 지향 언어의 또 다른 강력한 구성을 만듭니다. 동작을 정의하고 계층 구조에서 의미가있는 상태를 정의하는 새로운 클래스를 만들 수 있지만 클래스 라이브러리에서 기존 기능을 활용할 수 있습니다.
인터페이스
Java는 단일 상속 만 지원합니다. 즉, 각 수업에는 하나의 클래스 만 있습니다. 둘 이상의 소스에서 상속 해야하는 경우 Java. 인터페이스는 클래스와 유사합니다. 그러나 인터페이스는 구현이 아닌 메소드 서명을 정의합니다. 이 방법은 인터페이스를 구현하도록 선언 된 클래스에서 구현됩니다. 단일 클래스가 동시에 많은 인터페이스를 지원할 때 다중 상속이 발생합니다.
다형성
직원 예에서 다른 유형의 직원이 현재까지 보상으로 응답 할 수 있어야한다고 가정합니다. 보상은 다른 종류의 직원에 대해 다르게 계산됩니다.
- 풀 타임 직원은 보너스를받을 자격이 있습니다
- 비 제제 고용인은 초과 근무 급여를받습니다
전통적인 절차 언어에서는 긴 스위치 문을 작성하며 가능한 다양한 사례가 정의됩니다.
스위치 : (직원.유형) 사례 : 직원 반환 직원.급수; 사례 : 풀 타임 직원 반환 직원.월급 + 직원.Bonustodate .
새로운 종류의 직원을 추가하면 스위치 명세서를 업데이트해야합니다. 데이터 구조를 수정하면 사용하는 모든 스위치 문을 수정해야합니다. Java와 같은 객체 지향 언어에서 직원 클래스에 이미 정의 된 것 이상으로 특별한 대우가 필요한 직원 클래스의 각 서브 클래스에 대해 Method, avessationTodate ()를 구현합니다. 예를 들어, 다음과 같이 Nonexemptemployee의 보상 조정 () 메소드를 구현할 수 있습니다
개인 플로트 보상 작업 ()
다음과 같이 풀 타임 직원의 방법을 구현합니다
개인 플로트 보상 작업 ()
메소드 이름 averationTodate ()의 일반적인 사용을 통해 사용중인 직원의 유형을 알지 못하면 다른 클래스에서 동일한 메소드를 호출하고 다른 결과를받을 수 있습니다. 풀 타임 직원 및 파트 타임 직원을 처리하기 위해 특별한 방법을 작성할 필요가 없습니다. 다른 대상이 다른 방식으로 동일한 메시지에 응답하는이 능력은 다형성이라고합니다.
또한 직원의 상속하지 않는 완전히 새로운 클래스를 생성 할 수 있습니다. 현재까지 총 급여를 계산하는 프로그램은 풀 타임, 파트 타임 또는 계약자 여부에 관계없이 급여를받는 모든 사람들을 반복하고 각각의 보상 조정 () 메소드를 호출하여 반환 된 값을 추가합니다. 메소드의 발신자가 올바르게 작동한다는 지식으로 개별 보상 작업 () 메소드를 안전하게 변경할 수 있습니다. 예를 들어 기존 클래스에 새 필드를 안전하게 추가 할 수 있습니다.
Java Virtual Machine (JVM)
다른 고급 컴퓨터 언어와 마찬가지로 Java 소스는 저수준 기계 지침으로 컴파일됩니다. Java에서는이 지침을 바이트 코드로 알려져 있습니다 (크기는 1 바이트의 스토리지 1 바이트이기 때문에). 대부분의 다른 언어 (C- 컴파일에 대한 컴파일과 컴파일) 인텔 또는 HP 프로세서와 관련된 지침으로. Java 소스는 JVM (Java Virtual Machine)과 상호 작용하는 표준 플랫폼 독립적 인 바이트 코드 세트로 컴파일됩니다. JVM은 Java 코드를 실행하는 특정 플랫폼에 최적화 된 별도의 프로그램입니다. 그림 1-5는 Java가 플랫폼 독립성을 유지할 수있는 방법을 보여줍니다. Java 소스는 바이트 코드로 컴파일되며 플랫폼 독립. 각 플랫폼은 운영 체제에 특정한 JVM을 설치했습니다. 소스의 Java 바이트 코드는 JVM을 통해 적절한 플랫폼 종속 조치로 해석됩니다.
그림 1-5 Java 구성 요소 구조
Java 프로그램을 개발할 때는 Java 언어로 작성된 사전 정의 된 핵심 클래스 라이브러리를 사용합니다. Java Core 클래스 라이브러리는 기본 언어 지원 (Java와 같이 일반적으로 사용되는 기능을 제공하는 패키지로 논리적으로 나뉩니다.Lang), 입력/출력 (Java.io) 및 네트워크 액세스 (Java.그물). JVM 및 Core 클래스 라이브러리는 함께 Java 프로그래머가 Java를 지원하는 모든 하드웨어 및 운영 체제가 프로그램을 실행한다는 확신을 가지고 개발할 수있는 플랫폼을 제공합니다. 이 개념은 Java의 “한 번 쓰기, 어디서나 실행”아이디어를 이끌어냅니다.
그림 1-6. Oracle Java 지원 시스템은 데이터베이스 내에 위치하므로 JVM은 운영 체제와 직접 대신 Oracle 데이터베이스 라이브러리와 상호 작용합니다.
그림 1-6 Oracle 데이터베이스 Java 구성 요소 구조
Sun Microsystems는 Java Language와 JVM 모두에 대해 공개적으로 이용 가능한 사양을 제공합니다. JLS (Java Language Specification)는 구문 및 시맨틱과 같은 것을 정의합니다. JVM 사양은 바이트 코드를 실행하는 “기계”에 필요한 저수준 동작을 정의합니다. 또한 Sun Microsystems는 JVM 구현자가 사양을 준수했는지 확인하기위한 호환성 테스트 스위트를 제공합니다. 이 테스트 제품군은 Java Compatibility Kit (JCK)로 알려져 있습니다. OracleJVM 구현은 JCK를 완전히 준수합니다. 전반적인 Java 전략의 일부는 공개적으로 지정된 표준과 해당 표준 준수를 확인하는 간단한 방법과 함께 공급 업체가 모든 플랫폼에서 Java에 대한 균일 한 지원을 제공 할 수 있다는 것입니다.
Java 언어의 주요 기능
Java 언어에는 서버 응용 프로그램 개발에 이상적인 주요 기능이 있습니다. 이러한 기능은 다음과 같습니다
- 단순성-자바는 객체 모델의 일관된 시행으로 인해 서버 응용 프로그램에 사용되는 대부분의 다른 언어보다 간단한 언어입니다. 대형 표준 클래스 라이브러리 세트는 모든 플랫폼에서 Java 개발자에게 강력한 도구를 제공합니다.
- 이식성-자바는 플랫폼 전체에서 휴대용입니다. Java로 플랫폼 의존적 코드를 작성할 수는 있지만 기계를 원활하게 움직이는 프로그램을 작성하는 것도 간단합니다. 이를 호스팅하는 플랫폼에서 그래픽 사용자 인터페이스를 직접 지원하지 않는 Oracle Server 응용 프로그램은 Java가 가지고있는 몇 가지 플랫폼 휴대 성 문제를 피하는 경향이 있습니다.
- 자동 스토리지 관리-Java Virtual Machine은 프로그램 실행 중에 모든 메모리 할당 및 거래를 자동으로 수행합니다. Java 프로그래머는 명시 적으로 메모리를 할당하거나 무료로 할 수 없습니다. 대신, 그들은 JVM에 의존하여 이러한 부기 작업을 수행하여 새 개체를 생성하고 객체가 더 이상 참조되지 않을 때 메모리를 할당하여 메모리를 할당합니다. 후자의 작업은 쓰레기 수집으로 알려져 있습니다.
- 강력한 타이핑-Java 변수를 사용하기 전에는 보유 할 객체의 클래스를 선언해야합니다. Java의 강력한 타이핑은 Java와 PL/SQL 애플리케이션 간의 언어 간 통화에 합리적이고 안전한 솔루션을 제공하고 동일한 응용 프로그램 내에서 Java 및 SQL 통화를 통합 할 수 있습니다.
- 포인터 없음-Java는 구문에서 C의 풍미를 많이 유지하지만 직접 포인터 또는 포인터 조작을 지원하지 않습니다. 기본 유형을 제외한 모든 매개 변수를 참조 별 (즉, 객체 아이덴티티는 보존)를 전달합니다. Java는 C의 낮은 레벨, 포인터에 직접 액세스하지 않아 메모리 손상과 누출을 제거합니다.
- 예외 처리-자바 예외는 객체입니다. Java는 개발자에게 특정 클래스의 방법으로 어떤 예외를 던질 수 있는지 선언해야합니다.
- Flexible Namespace- 자바는 클래스를 정의하고 인터넷의 도메인 네임 스페이스를 반영하는 계층 구조 내에서 보유합니다. Java 응용 프로그램을 배포하고 이름 충돌을 피할 수 있습니다. JNDI (Java Naming and Directory Interface)와 같은 Java 확장 기능. Java의 네임 스페이스 접근 방식은 Oracle이 클래스 이름을 해결하기위한 스키마 개념을 통합 할 수있을 정도로 유연하며 언어 사양을 완전히 준수합니다.
- 보안-Java Bytecodes와 JVM의 설계를 통해 내장 메커니즘은 Java 이진 코드가 변조되지 않았는지 확인할 수 있습니다. Oracle Database는 Oracle Database Security와 결합 할 때 Java 방법을 호출 할 수있는 사람을 결정하는 SecurityManager 인스턴스와 함께 설치됩니다.
- 관계형 데이터베이스에 대한 연결 표준-JDBC는 Java 코드가 관계형 데이터베이스에 거주하는 데이터에 액세스하고 조작 할 수 있도록합니다. Oracle은 공급 업체 독립적 인 휴대용 Java 코드가 관계형 데이터베이스에 액세스 할 수있는 드라이버를 제공합니다.
Oracle 데이터베이스에서 Java를 사용하는 이유는 무엇입니까??
데이터베이스 내에서 Java 응용 프로그램을 작성하고로드 할 수있는 유일한 이유는 안전한 언어이기 때문입니다. Java는 Java Code가있는 운영 체제를 조작하지 못하도록 개발되었습니다. C와 같은 일부 언어는 데이터베이스 내에서 보안 문제를 도입 할 수 있습니다. Java는 디자인으로 인해 데이터베이스 내에서 허용하는 안전한 언어입니다.
Java Language는 개발자에게 많은 장점을 제시하지만 Java Server 응용 프로그램을 확장 가능한 방식으로 지원하는 JVM의 구현을 제공하는 것은 어려운 일입니다. 이 섹션에서는 이러한 과제 중 일부에 대해 설명합니다.
- Java와 RDBMS : 강력한 조합
- 멀티 스레딩
- 쓰레기 수집을 통한 자동 스토리지 관리
- 발자국
- 성능
- 동적 클래스 로딩
Java와 RDBMS : 강력한 조합
Oracle RDBMS는 Java 응용 프로그램에 복잡한 쿼리와 동일한 데이터의 다른 뷰를 지원하는 동적 데이터 처리 엔진을 제공합니다. 모든 클라이언트 요청은 즉각적인 처리를위한 데이터 쿼리로 조립되며 쿼리 결과는 즉시 생성됩니다.
몇 가지 기능으로 Java는 서버 프로그래밍에 이상적입니다. Java는 상용 소프트웨어 구성 요소 (Javabeans)를 사용하여 응용 프로그램을 조립할 수 있습니다. 유형 안전 및 자동 메모리 관리는 RDBMS와의 엄격한 통합을 허용합니다. 또한 Java는 네트워크에서 응용 프로그램 구성 요소의 투명한 분포를 지원합니다.
따라서 Java와 RDBMS는 비즈니스 요구가 변경됨에 따라 우아하게 진화 할 수있는 구성 요소 기반 네트워크 중심 응용 프로그램의 빠른 조립을 지원합니다. 또한 애플리케이션 및 데이터 스토어를 데스크탑에서 지능형 네트워크 및 네트워크 중심 서버로 옮길 수 있습니다. 더 중요한 것은 모든 클라이언트 장치에서 해당 응용 프로그램 및 데이터 스토어에 액세스 할 수 있습니다.
그림 1-7. (PL/SQL은 Oracle 데이터베이스와 밀접하게 통합 된 고급 4GL입니다.) 그림은 또한 Oracle Net Services Connection Manager가 많은 네트워크 연결을 단일 데이터베이스 연결로 퍼 뜨릴 수있는 방법을 보여줍니다. 이를 통해 RDBMS가 많은 동시 사용자를 지원할 수 있습니다.
그림 1-7 2 계층 클라이언트/서버 구성
멀티 스레딩
멀티 스레딩 지원은 종종 자바 언어의 주요 확장 기능 중 하나로 인용됩니다. 확실히, Java Language 및 Class 라이브러리는 다른 많은 언어보다 Java로 멀티 스레드 애플리케이션을 작성하는 것이 더 간단하지만 신뢰할 수 있고 확장 가능한 멀티 스레드 코드를 작성하는 것은 여전히 모든 언어에서도 여전히 어려운 작업입니다.
데이터베이스 서버로서 Oracle Database는 수천 명의 사용자가 효율적으로 작동합니다. OracleJVM은 RDBMS 서버의 시설을 사용하여 수천 명의 사용자를위한 Java 실행을 동시에 예약합니다. Oracle Database는 JLS 및 JCK가 요구하는 Java 언어 레벨 스레드를 지원하지만 데이터베이스 범위 내에서 스레드를 사용하면 확장 성이 증가하지 않습니다. 데이터베이스의 임베디드 확장 성을 사용하면 멀티 스레드 Java 서버를 작성할 필요가 없습니다. 단일 스레드 Java 응용 프로그램을 작성하여 사용자를 예약하기 위해 데이터베이스 시설을 사용해야합니다. 데이터베이스는 각 응용 프로그램 간의 일정을 처리합니다. 따라서 스레드를 관리하지 않고도 확장 성을 달성합니다. 여전히 멀티 스레드 Java 응용 프로그램을 작성할 수 있지만 여러 Java 스레드는 서버의 성능을 증가시키지 않습니다.
Multithreading이 Java에 부과하는 하나의 어려움은 스레드와 자동화 된 스토리지 관리 또는 가비지 수집의 상호 작용입니다. 일반적인 JVM에서 실행되는 쓰레기 수집가는 어떤 Java 언어 스레드가 실행되는지 또는 기본 운영 체제가 어떻게 일정을 잡는 지에 대한 지식이 없습니다.
- 비 Oracle 데이터베이스 모델-단일 사용자는 단일 Java 언어 레벨 스레드에 맵핑됩니다. 동일한 단일 쓰레기 수집가는 모든 사용자로부터 모든 쓰레기를 관리합니다. 다양한 기술은 일반적으로 다양한 수명 및 크기의 객체의 할당 및 수집을 다룹니다. 크게 멀티 스레드 애플리케이션의 결과는 기껏해야 기본 스레드에 대한 운영 체제 지원에 의존하며, 이는 신뢰할 수없고 확장 가능성이 제한 될 수 있습니다. 이러한 구현에 대한 높은 수준의 확장 성이 설득력있게 입증되지 않았습니다.
- OracleJVM 모델-수천 명의 사용자가 서버에 연결하고 동일한 Java 코드를 실행할 때 마치 각 사용자가 자신의 Java 가상 시스템에서 자신의 Java 코드를 실행하는 것처럼 경험합니다. OracleJVM의 책임은 Oracle RDBMS의 확장 가능한 접근 방식을 사용하여 운영 체제 프로세스 및 스레드를 사용하는 것입니다. 이 접근법의 결과로 JVM의 쓰레기 수집기는 언제라도 한 명 이상의 사용자로부터 쓰레기를 수집하지 않기 때문에 더 신뢰할 수 있고 효율적입니다. OracleJVM의 스레드 모델 구현에 대한 자세한 내용은 “Oracle Database의 스레딩”을 참조하십시오.
쓰레기 수집을 통한 자동 스토리지 관리
가비지 컬렉션. 결과적으로 이것은 일반적으로 C 및 C ++ 프로그램을 괴롭히는 큰 메모리 누출 원을 제거합니다. 그러한 혜택에 대한 가격이 있습니다 : 쓰레기 수집은 프로그램 실행 속도 및 발자국의 오버 헤드에 기여합니다. 많은 논문이 트레이드 오프 자격을 갖추고 정량화되었지만 대안을 고려하여 전체 비용은 합리적입니다.
가비지 컬렉션. OracleJVM은 이러한 과제를 다음과 같은 방식으로 충족시킵니다
- OracleJVM은 여러 사용자를 효율적으로 관리 할 수있는 Oracle Database Scheduling Facilities를 사용합니다.
- 가비지 컬렉션은 단일 세션 내에서 단일 사용자에게 초점을 맞추기 때문에 가비지 컬렉션이 여러 사용자에게 일관되게 수행됩니다. OracleJVM은 사용자 수가 증가함에 따라 메모리 관리자 작업의 부담과 복잡성이 증가하지 않기 때문에 큰 이점을 누립니다. 메모리 관리자는 단일 세션 내에서 객체의 할당 및 수집을 수행합니다. 일반적으로 단일 사용자의 활동으로 번역됩니다.
- OracleJVM은 사용되는 메모리 유형에 따라 다른 쓰레기 수집 기술을 사용합니다. 이러한 기술은 고효율과 낮은 오버 헤드를 제공합니다.
발자국
실행 Java 프로그램의 발자국은 많은 요인에 의해 영향을받습니다
- 프로그램 자체의 크기-많은 클래스와 방법과 포함 된 코드의 양.
- 프로그램의 복잡성-프로그램 자체와 대조적으로 OracleJVM이 프로그램이 실행할 때 사용하는 핵심 클래스 라이브러리의 양.
- JVM이 사용하는 상태-JVM이 할당하는 많은 개체, 그들이 얼마나 큰지, 그리고 전화를 통해 얼마나 많은 것을 유지 해야하는지.
- 쓰레기 수집가 및 메모리 매니저가 실행 프로그램의 요구를 처리하는 능력, 종종 비 결정적 이는. 객체가 할당되는 속도와 다른 개체에 의해 유지되는 방식은이 요인의 중요성에 영향을 미칩니다.
확장 성 관점에서 많은 동시 클라이언트를 지원하는 열쇠는 최소 사용자 당 세션 풋 프린트입니다. OracleJVM은 공유 메모리에 Java Bytecodes와 같은 사용자에게 모든 읽기 전용 데이터를 배치하여 사용자 당 사용자 세션 발자국을 최소로 유지합니다. 적절한 쓰레기 수집 알고리즘은 사용자 세션에 대한 작은 발자국을 유지하기 위해 통화 및 세션 메모리에 적용됩니다. OracleJVM은 세 가지 유형의 쓰레기 수집 알고리즘을 사용하여 사용자의 세션 메모리를 유지합니다
- 단기간에 대한 세대의 청소
- 단일 통화의 수명에 존재하는 물체에 대한 Mark and Lazy Sweep Collection
- 수명이 오래된 개체에 대한 수집가 복사-세션 내에서 통화를 가로 질러 사는 목체
성능
OracleJVM 성능은 기본 컴파일러를 구현하여 향상됩니다.
기본 컴파일러가 성능을 향상시키는 방법
Java는 JVM 위에 플랫폼 독립적 인 바이트 코드를 실행하여 특정 하드웨어 플랫폼과 상호 작용합니다. 소프트웨어 내에 레벨을 추가 할 때마다 성능이 저하됩니다. Java는 플랫폼 독립적 인 바이트 코드를 해석하기 위해 중개자를 겪어야하기 때문에 C와 같은 플랫폼 의존 언어 내에 존재하지 않는 Java 응용 프로그램의 경우 어느 정도의 비 효율성이 존재합니다. 이 문제를 해결하기 위해 여러 JVM 공급 업체가 기본 컴파일러를 만듭니다. 기본 컴파일러는 Java Bytecodes를 플랫폼 의존적 기본 코드로 변환하여 통역사 단계를 제거하고 성능을 향상시킵니다.
다음은 네이티브 컴파일을위한 두 가지 방법을 설명합니다
JIT (Just-In-Time) 컴파일
JIT 컴파일러는 런타임 중에 Java 바이트 코드를 기본 (플랫폼 별) 기계 코드로 빠르게 컴파일합니다. 이것은 플랫폼에서 실행할 실행 파일을 생성하지 않습니다. 대신, 번역 된 직후에 실행되는 Java 바이트 코드에서 플랫폼 의존적 코드를 제공합니다. 이것은 자주 실행되는 Java 코드에 사용되어야하며 C와 같은 언어에 가까운 속도로 실행됩니다.
컴파일은 Java Bytecodes를 런타임 전에 플랫폼 독립적 인 C 코드로 변환합니다. 그런 다음 표준 C 컴파일러는 C 코드를 대상 플랫폼의 실행 파일로 컴파일합니다. 이 접근법은 드물게 수정 된 Java 응용 프로그램에 더 적합합니다. 이 접근법은 현대 C 컴파일러에서 발견되는 성숙하고 효율적인 플랫폼 별 컴파일 기술을 활용합니다.
Oracle Database는 미리 컴파일을 사용하여 핵심 Java 클래스 라이브러리를 제공합니다. JIT 접근법은 각 플랫폼에 대해 저수준의 프로세서 의존적 코드를 작성하고 유지 해야하는 모든 플랫폼에서 지원하는 모든 플랫폼에서 적용 할 수 있습니다. 이 기본 편집 기술을 자신의 자바 코드로 사용할 수 있습니다.
그림 1-8에서 볼 수 있듯이 기본적으로 컴파일 된 코드는 해석 된 코드보다 최대 10 배 빠르게 실행됩니다. 따라서 프로그램이 사용하는 기본 코드가 많을수록 더 빠르게 실행됩니다.
그림 1-8 통역사 대 가속기
자세한 내용은 “기본적으로 컴파일 된 코드”를 참조하십시오.
동적 클래스 로딩
Java의 또 다른 강력한 특징은 동적 클래스 로딩입니다. 클래스 로더는 프로그램 실행 중에 사용되는 경우에만 디스크에서 클래스를로드 (해석에 필요한 JVM 특정 메모리 구조에 배치). 클래스 로더는 클래스 경로에서 클래스를 찾아 프로그램 실행 중에로드합니다. 애플릿에 적합한이 접근법은 서버 환경에서 다음과 같은 문제를 제기합니다
클래스 로딩 작업은 처음 실행에 심각한 페널티를 제공합니다. 간단한 프로그램은 OracleJVM이 많은 핵심 클래스를로드하여 요구를 지원할 수 있습니다. 프로그래머는로드 된 클래스 수를 쉽게 예측하거나 결정할 수 없습니다.
OracleJVM은 다른 Java 가상 시스템과 마찬가지로 클래스를 동적으로로드합니다. 동일한 일회성 클래스 로딩 속도 히트가 발생합니다. 그러나 클래스가 공유 메모리에로드되므로 해당 클래스의 다른 사용자는 클래스가 다시로드되지 않습니다.
동적 클래스 로딩의 이점은 프로그램 업데이트를 지원한다는 것입니다. 예를 들어, 서버에서 클래스를 업데이트하고 프로그램을 다운로드하고 다음에 프로그램을 사용할 때마다 업데이트를 동적으로 볼 수 있습니다. 서버 프로그램은 신뢰성을 강조하는 경향이 있습니다. 개발자는 모든 클라이언트가 특정 프로그램 구성을 실행한다는 것을 알아야합니다. 고객이 실수로로드 할 의도하지 않은 일부 클래스를 부주의하게로드하는 것을 원하지 않습니다.
Oracle Database는 런타임에서 클래스로드 작업에서 업로드 및 해결 작업을 분리합니다. loadjava 유틸리티를 사용하여 서버에 개발 한 Java 코드를 업로드합니다. ClassPath를 사용하는 대신 설치 시간에 Resolver를 지정합니다. Resolver는 ClassPath와 유사하지만 클래스가있는 스키마를 지정할 수 있습니다. 클래스 로딩에서 해상도를 분리하면 항상 프로그램 사용자가 실행하는 프로그램을 알고 있습니다. Loadjava 및 Resolvers에 대한 자세한 내용은 11 장, “스키마 객체 도구”를 참조하십시오.
OracleJVM과는 다른 것입니다?
이 섹션에서는 OracleJVM과 일반적인 클라이언트 JVMS의 몇 가지 중요한 차이점에 대해 설명합니다.
메소드 메인 ()
클라이언트 기반 Java 응용 프로그램은 응용 프로그램의 프로필을 정의하는 단일 최상위 방법 (main ())을 선언합니다. 애플릿과 마찬가지로 서버 기반 응용 프로그램에는 “내부 루프가 없습니다.”대신, 그들은 논리적으로 독립적 인 고객에 의해 주도됩니다.
각 클라이언트는 세션을 시작하고 최상위 입력 지점을 통해 서버 측 로직 모듈을 호출하고 결국 세션을 종료합니다. 서버 환경은 호스팅 된 Java 프로그램의 세션, 네트워크 및 기타 공유 리소스 관리를 숨 깁니다.
GUI
서버는 GUI를 제공 할 수 없지만 그로 인한 논리를 제공 할 수 있습니다. OracleJVM은 Abstract Windowing Toolkit (AWT)의 헤드리스 모드 만 지원합니다. 모든 AWT Java 클래스는 서버 환경 내에서 사용할 수 있으며 프로그램이 서버에서 GUI를 구체화하려고 시도하지 않는 한 AWT 기능을 사용할 수 있습니다. 자세한 내용은 “서버의 사용자 인터페이스”를 참조하십시오 .
IDE
OracleJVM은 개발이 아닌 Java 응용 프로그램 배포를 지향합니다. Oracle JDeveloper와 같이 좋아하는 IDE에서 응용 프로그램을 작성하고 단위 테스트 한 다음 RDBMS 내에서 실행을 위해 배치 할 수 있습니다.
자세한 내용은 “개발 도구”를 참조하십시오.
Java의 이진 호환성은 모든 IDE에서 작업 한 다음 Java 클래스 파일을 서버에 업로드 할 수 있습니다. Java 소스 파일을 데이터베이스로 이동할 필요가 없습니다. 대신 강력한 클라이언트 측 IDE를 사용하여 서버에 배포 된 Java 응용 프로그램을 유지할 수 있습니다.
OracleJVM의 주요 구성 요소
이 섹션은 OracleJVM의 주요 구성 요소와 그들이 제공하는 일부 시설에 대해 간략하게 설명합니다.
Oracle Database Java Virtual Machine (JVM)은 완전한 Java 2 호환 Java 실행 환경입니다. RDBMS 커널과 동일한 프로세스 공간 및 주소 공간에서 실행되며 메모리 힙을 공유하고 관계형 데이터에 직접 액세스합니다. 이 설계는 메모리 사용을 최적화하고 처리량을 증가시킵니다.
OracleJVM은 Java 객체를위한 런타임 환경을 제공합니다. Java 데이터 구조, 메소드 파견, 예외 처리 및 언어 수준 스레드를 완전히 지원합니다. 또한 Java를 포함한 모든 핵심 Java 클래스 라이브러리를 지원합니다.랭, 자바.Io, Java.NET, Java.수학과 Java.유도. 그림 1-9는 주요 구성 요소를 보여줍니다.
그림 1-9 OracleJVM의 주요 구성 요소
OracleJVM은 RDBMS Schemas에 표준 Java 네임 스페이스를 포함합니다. 이 기능은 Java 프로그램이 기업의 Oracle 데이터베이스 및 응용 프로그램 서버에 저장된 Java 객체에 액세스 할 수 있도록합니다.
또한 OracleJVM은 RDBMS의 확장 가능한 공유 메모리 아키텍처와 밀접하게 통합됩니다. Java 프로그램은 귀하의 개입없이 효율적으로 통화, 세션 및 객체 수명을 사용합니다. 따라서 세션 길이의 상태가 있더라도 OracleJvmand 중간 계층 Java 비즈니스 객체를 확장 할 수 있습니다.
쓰레기 수집기는 “쓰레기 수집을 통한 자동 스토리지 관리”에 설명되어 있습니다 . 기본 컴파일러는 “성능”에서 논의됩니다 . 나머지 구성 요소는 다음 섹션에 설명되어 있습니다
또한 다음 섹션에서는 JDBC 드라이버의 개요를 제공합니다
도서관 관리자
Java 클래스를 Oracle 데이터베이스에 저장하려면 SQL Create Java 문을 사용하여 작업을 수행하는 명령 줄 유틸리티 Loadjava를 사용합니다. Create Java 문에 의해 호출되면 라이브러리 관리자는 Java 소스, 클래스 또는 리소스 파일을 데이터베이스에로드합니다. 이 Java 스키마 객체에 직접 액세스하지 마십시오. OracleJVM만이 사용합니다.
컴파일러
OracleJVM에는 표준 Java 2 (JDK 1이라고도 함.2) Java 컴파일러. Create Java 소스 명령문에 의해 호출되면 Java 소스 파일을 아키텍처 중립, 1 바이트 지침으로 변환합니다 바이트 코드. 각 바이트 코드는 opcode와 그 오페라로 구성됩니다. Java 표준에 완전히 부합하는 결과 Java 클래스 파일은 런타임에 통역사에게 제출됩니다.
통역사
Java 프로그램을 실행하려면 OracleJVM에는 표준 Java 2 바이트 코드 통역사가 포함됩니다. 통역사 및 관련 Java 런타임 시스템이 표준 Java 클래스 파일을 실행합니다. 런타임 시스템은 호스트 환경에서 기본 메소드 및 콜인/콜 아웃을 지원합니다.
더 빠른 실행을 위해 코드를 컴파일 할 수도 있습니다. OracleJVM은 기본적으로 컴파일 된 버전의 핵심 Java 클래스 라이브러 및 JDBC 드라이버를 사용합니다. 자세한 내용은 “기본적으로 컴파일 된 코드”를 참조하십시오 .
클래스 로더
런타임 시스템의 요청에 응답하여 Java 클래스 로더는 데이터베이스에 저장된 Java 클래스를 찾아,로드 및 초기화합니다. 클래스 로더는 클래스를 읽은 다음이를 실행하는 데 필요한 데이터 구조를 생성합니다. 불변의 데이터와 메타 데이터는 초기화 공유 메모리에로드됩니다. 결과적으로 각 세션마다 더 적은 메모리가 필요합니다. 클래스 로더는 필요할 때 외부 참조를 해결하려고 시도합니다. 또한 Java 클래스 파일을 다시 컴파일해야 할 때 Java 컴파일러를 자동으로 호출하고 소스 파일을 사용할 수 있습니다).
확인자
Java 클래스 파일은 완전히 휴대 가능하며 잘 정의 된 형식을 준수합니다. 검증자는 프로그램 흐름을 변경하거나 액세스 제한을 위반할 수있는 “스푸핑 된”Java 클래스 파일의 부주의 한 사용을 방지합니다. Oracle Security 및 Java Security는 검증 자와 협력하여 응용 프로그램 및 데이터를 보호합니다.
서버 측 JDBC 내부 드라이버
JDBC. Sun Microsystems에 의해 지정되고 ODBC (Open Database Connectivity) 및 X/Open SQL CLI (Call Level Interface) 이후 모델링 된 JDBC 클래스는 여러 데이터베이스에 대한 동시 연결, 트랜잭션 관리, 간단한 쿼리 및 긴 칼럼 데이터에 대한 통화와 같은 표준 기능을 제공합니다.
저수준 진입 지점을 사용하여 특별히 조정 된 JDBC 드라이버는 RDBM 내부에서 직접 실행되므로 Java 저장 절차에서 Oracle 데이터에 가장 빠르게 액세스 할 수 있습니다. 서버 측 내부 JDBC 드라이버는 Sun Microsystems JDBC 사양을 완전히 준수합니다. RDBMS와 밀접하게 통합 된 Oracle 특정 데이터 유형, 세계화 문자 세트 및 저장 절차를 지원합니다. 또한 클라이언트 측 및 서버 측 JDBC API는 동일하므로 애플리케이션을 쉽게 분할 할 수 있습니다.
Oracle의 Java 응용 프로그램 전략
Java의 매력 중 하나는 편재성과 그것을 사용하여 응용 프로그램을 개발할 수있는 많은 프로그래머 수입니다. Oracle은 Java 응용 프로그램을 작성, 배포 및 관리하기위한 엔드 투 엔드 Java 솔루션으로 Enterprise Application 개발자에게 제공됩니다. 총 솔루션은 클라이언트 측 및 서버 측 프로그래밍 방식 인터페이스, Java 개발을 지원하는 도구 및 Oracle Database Server와 통합 된 Java 가상 시스템으로 구성됩니다. 이 모든 제품은 Java 표준과 100 % 호환됩니다.
자바 프로그래밍 환경
OracleJVM 외에도 Java 프로그래밍 환경은 다음으로 구성됩니다
- Java는 절차를 Java 동등한 것으로 저장하고 PL/SQL의 동반자. Java 저장 절차는 PL/SQL과 밀접하게 통합됩니다. PL/SQL 패키지에서 Java 저장 절차를 호출 할 수 있습니다. Java 저장 절차에서 PL/SQL 절차를 호출 할 수 있습니다.
- SQL 데이터는 JDBC를 통해 액세스 할 수 있습니다.
- 개발, 클래스 로딩 및 클래스 관리를 지원하는 데 사용되는 도구 및 스크립트.
사용할 Java API를 결정하는 데 도움이 되려면 다음 표를 검사하십시오
트리거와 같은 SQL에서 Java 절차를 호출하려면.
Java 저장 절차
Java 객체에서 동적이고 복잡한 SQL 문을 호출하려면.
Java 저장 절차
Java를 탐험하는 PL/SQL 프로그래머 인 경우 Java 저장 절차에 관심이 있습니다. Java 저장 절차는 PL/SQL 저장 프로 시저와 같이 서버에서 실행하기 위해 Java로 작성하는 프로그램입니다. SQL*Plus와 같은 제품으로 직접 호출하거나 트리거로 간접적으로 호출합니다. 모든 Oracle Net 클라이언트 (OCI, Pro* 또는 JDBC에서 액세스 할 수 있습니다. 5 장, “Java 저장 절차 개발”Java에서 저장된 절차를 작성하는 방법, PL/SQL에서 액세스하는 방법 및 Java에서 PL/SQL 기능에 액세스하는 방법을 설명합니다.
또한 Java를 사용하여 PL/SQL과 독립적으로 강력한 프로그램을 개발할 수 있습니다. Oracle Database는 Java 프로그래밍 언어 및 JVM을 완전히 준수하는 구현을 제공합니다.
PL/SQL 통합 및 Oracle RDBMS 기능
Java에서 기존 PL/SQL 프로그램을 호출하고 PL/SQL에서 Java 프로그램을 호출 할 수 있습니다. 이 솔루션은 Java 기반 인터넷 컴퓨팅의 장점과 기회를 열면서 기존 투자를 보호하고 활용합니다.
Oracle은 Java 개발자가 SQL 데이터에 액세스 할 수 있도록 두 가지 API (Application Programming Interfaces)를 제공합니다. -JDBC. 두 API는 클라이언트 및 서버에서 사용할 수 있으므로 어느 곳에서도 동일한 코드를 배포 할 수 있습니다.
JDBC 드라이버
JDBC는 데이터베이스에 연결 한 다음 데이터베이스에 대해 SQL 문을 준비하고 실행할 수있는 데이터베이스 액세스 프로토콜입니다. 핵심 Java 클래스 라이브러리는 하나의 JDBC API 만 제공합니다. 그러나 JDBC는 공급 업체가 특정 데이터베이스에 필요한 전문화를 제공하는 드라이버를 공급할 수 있도록 설계되었습니다. Oracle은 다음과 같은 3 가지 JDBC 드라이버를 제공합니다.
JDBC 얇은 드라이버
JDBC Thin Driver를 사용하여 Oracle SQL 데이터에 액세스하는 100% 순수한 Java 응용 프로그램 및 애플릿을 작성할 수 있습니다. JDBC Thin Driver는 웹 페이지에서 다른 Java 애플릿과 마찬가지로 웹 페이지에서 동적으로 다운로드 할 수 있기 때문에 웹 브라우저 기반 응용 프로그램 및 애플릿에 특히 적합합니다.
JDBC Oracle 통화 인터페이스 드라이버
JDBC Oracle Call Interface (OCI) 드라이버는 클라이언트 또는 중간 계층의 Oracle 특유의 원시 코드 (즉, Java 비 Java) 라이브러리에 액세스하여 JDBC Thin 드라이버에 비해 일부 성능 향상을 제공합니다.
JDBC 서버 측 내부 드라이버
Oracle Database는 Java 코드가 서버에서 실행될 때 서버 측 내부 드라이버를 사용합니다. 서버의 Java Virtual Machine에서 실행되는 Java 응용 프로그램이 JDBC를 사용하여 로컬로 정의 된 데이터 (즉, 동일한 시스템 및 동일한 프로세스)에 액세스 할 수 있습니다. Java 코드와 SQL 데이터 사이의 중간 네트워크 연결의 오버 헤드없이 기본 Oracle RDBMS 라이브러리를 직접 사용하는 기능으로 인해 추가 성능 향상을 제공합니다. 서버에서 동일한 Java-SQL 인터페이스를 지원함으로써 Oracle Database는 배포 할 때 코드를 재 작업 할 필요가 없습니다.
Jpublisher
Jpublisher는 기존 Oracle 관계형 데이터베이스 테이블에 액세스하는 Java 프로그램을 만드는 간단하고 편리한 도구를 제공합니다. 자세한 내용은 Oracle Database Jpublisher 사용자 안내서를 참조하십시오.
개발 도구
Oracle Database Server에 Java를 소개하면 여러 Java 통합 개발 환경을 사용할 수 있습니다. Oracle 데이터베이스를 Java 호환성 및 개방형 인터넷 표준 및 프로토콜에 준수하면 Oracle Database에 100% 순수한 Java 프로그램이 작동하도록합니다. 오라클. Oracle의 JDeveloper는 Java 저장 절차 및 기업 Javabeans를보다 쉽게 배치하기 위해 특별히 설계된 많은 기능을 가지고 있습니다. 다음 사이트에서 jdeveloper를 다운로드 할 수 있습니다 : http : // otn.신탁.com/소프트웨어/제품/jdev/컨텐츠.HTML.
Oracle 데이터베이스에서 J2EE 기술의 Desport
새롭고 가벼우면서도, 사용하기 쉽고, 사용하기 쉽고, 더 빠르고, 인증 된 J2EE 컨테이너 인 J2EE (OC4J)를위한 Oracle Application Server 컨테이너가 도입되면서 Oracle9로 시작하여 Java 2 Enterprise Edition (J2EE) 및 Corba Stacks의 Despport를 시작했습니다나 데이터베이스 릴리스 2. 그러나 데이터베이스가 포함 된 Java VM (OracleJVM)은 여전히 존재하며 데이터베이스에서 Java 2 Standard Edition (J2SE) 기능, Java 저장 절차 및 JDBC를 제공하도록 계속 향상 될 것입니다.
Oracle9에서나 데이터베이스 릴리스 2 (9.2.0), Oracle은 더 이상 데이터베이스의 다음 기술을 지원하지 않습니다
- J2EE 스택은 다음으로 구성됩니다
- 엔터프라이즈 콩 (EJB) 컨테이너
- Javaserver 페이지 (JSP) 컨테이너
- Oracle9나 서블릿 엔진 (OSE)
고객은 더 이상 Oracle 데이터베이스에 서블릿, JSP 페이지, EJB 및 CORBA 객체를 배포 할 수 없습니다. Oracle9나 데이터베이스 릴리스 1 (9.0.1) J2EE 및 Corba 스택을 지원하는 마지막 데이터베이스 릴리스가됩니다. 오라클.
자바
Oracle Java는 1 위의 프로그래밍 언어 및 개발 플랫폼입니다. 비용을 줄이고 개발 기간을 단축하고 혁신을 주도하며 응용 프로그램 서비스를 향상시킵니다. 전 세계적으로 600 억 개 이상의 Java 가상 머신을 운영하는 수백만 명의 개발자가 기업 및 개발자를위한 개발 플랫폼이 계속되고 있습니다.
Java 20을 사용할 수 있습니다
6 개월간 케이던스 Java 20의 다음 릴리스는 Java 응용 프로그램 개발의 성능, 안정성 및 보안을 향상시킵니다.
Graalvm Enterprise Free OCI
Java 응용 프로그램이 빠르게 시작하고 메모리 사용량을 줄이며 호스팅 비용을 절약하는 데 도움이되는 기본 실행 파일을 구축하십시오.
Java 관리 서비스
JMS Advance 기능은 관리자가 Java 워크로드에 대한 추가 통찰력을 얻는 데 도움이됩니다. 암호화 로드맵 업데이트의 사용, 취약성 및 영향 분석.
Oracle Devlive 2023의 Java 개발자의 날
Devlive Level Up의 기조 연설을보고 AppDev의 Java 20 릴리스 향상, 현대 언어 혁신 및 Java 개발자 프레임 워크 지원에 대해 알아보십시오.
Java 분석가 보고서
자바와 디지털 혁신을 주도하는 기술
현대화 및 혁신 노력을 지원하기 위해 Java를 활용하는 방법에 대한 통찰력을 얻으십시오. 이 OMDIA 기술 브리프에서 오픈 소스, 클라우드 네이티브 및 지원 서비스 기능을 최대한 활용하는 방법에 대해 알아보십시오.
Java : 안전한 클라우드 기반 애플리케이션을위한 현대화 개발
Java가 오늘날의 취약점을 최소화하면서 조직이 디지털 혁신을 가속화하는 방법에 대해 알아보십시오’S 응용 프로그램이 필요합니다.
최상위 IT 보안 및 응용 프로그램 개발의 고통 지점
451 Research의 최근 보고서에 따르면, IT 임원에게는 보안이 가장 중요한 우선 순위입니다. 브리프를 읽으십시오. 개발자의 최고 보안 문제와 Java를 통해 IT 보안 및 규정 준수 목표를 달성 할 수있는 방법을 찾으십시오.
애버딘 지식 요약
애플리케이션 개발의 리더가 왜 Java를 사용하여 세계적 수준의 애플리케이션을보다 효율적으로 구축하여 최고 품질과 가장 강력한 보안.