Java IDL:IDL 와 Java 의 매핑 - xrath.com 에서 번역됨

# Java IDL:IDL 와 Java 언어의 매핑

이번 릴리스의 JavaTM 2 Platform Standard Edition 5.0 에는, Object Management Group (OMG)의 인터페이스 정의 언어 (IDL)를 읽어들여 Java 인터페이스에 변환 (즉 매핑)하는 컴파일러,`idlj` 가 포함되어 있습니다. 사용되는 커멘드행 옵션에 따라,`idlj` 컴파일러는 Stub, 스켈리턴, 헬퍼, 홀더등의 파일을 필요에 따라서 작성합니다. 이러한 `. java` 파일은, OMG 문서 (pdf 형식)「OMG IDL to Java Language Mapping Specification, ptc, 00-01-08」라고 그 개정판「ptc/00-11-03, The new IDL to Java Mapping Chapter」로 지정되고 있는 매핑에 따라,IDL 파일로부터 생성됩니다. 버젼 00-01-08 의 IDL 로부터 Java 언어에의 매핑은, CORBA 버젼 2.3. 2 에 준거하고 있습니다. IDL 로부터 Java 에의 매핑의 기본적인 개요에 대해서는,「IDL 와 Java 언어의 매핑의 개요」를 참조해 주세요.

- J2SE 5.0 에 탑재되고 있는 CORBA 기술은, 다음의 문서로 설명되고 있는 매핑에 준거하고 있습니다. Official Specifications for CORBA support in J2SE 5.0

OMG 의 스펙 「IDL to Java Language Mapping」안에는, 다음과 같은 요약하기 어려운 토픽이 있습니다.

- Section 1.13, Mapping for Value Type
- Section 1.14, Value Box Types
- Section 1.20, Server-Side Mapping
- Section 1.21, Java ORB Portability Interfaces

## IDL 와 Java 언어의 매핑의 개요

CORBA 의 객체는, OMG IDL (Object Management Group Interface Definition Language)로 정의되고 있습니다. OMG IDL 의 구문 및 시멘틱스는,「CORBA/IIOP 2.3. 1 Specification」의 제 3 장으로 정의되고 있습니다. IDL-to-Java 컴파일러의 `idlj` 는, IDL 로 정의된 인터페이스를「OMG IDL to Java Language Mapping Specification, ptc, 00-01-08」의 정의에 따라 Java 클래스와 인터페이스에 맵 합니다. 그것들은,「Official Specifications for CORBA support in J2SE 5.0」 으로 설명되고 있는 이 버젼의 Java 플랫폼에서 지원되고 있습니다.

이 개요에서는, OMG IDL 의 데이터형과 Java 의 데이터형의 대응을 나타냅니다. OMG IDL 는, 그 이름이 가리키도록(듯이), 인터페이스를 정의하고 있습니다. Java 의 인터페이스와 같이, IDL 의 인터페이스에는, 인터페이스의 오퍼레이션의 구현 (Java 에서의 메소드)은 포함되어 있지 않습니다. 즉, IDL 의 인터페이스에서는, 오퍼레이션의 시그니챠 (오퍼레이션의 이름, 반환값의 데이터형, 받는 파라미터의 데이터형, 및 발생하는 예외)만이 정의되고 있습니다. 이러한 오퍼레이션을 구현하려면 , Java 언어로 기술된 Java 클래스가 제공되어 있지 않으면 안됩니다.

다음의 겉(표)는, IDL 의 주요한 원가요소와 거기에 대응하는 Java 의 원가요소의 일람입니다.

IDL 의 데이터형 | Java 의 데이터형
--- | ---
module | package
boolean | boolean
char, wchar | char
octet | byte
string, wstring | java.lang.String
short, unsigned short | short
long, unsigned long | int
long long, unsigned long long | long
float | float
double | double
fixed | java.math.BigDecimal
enum, struct, union | class
sequence, 배열 | 배열
interface (비추상) | 시그니챠인타페스와 오퍼레이션 인터페이스, 헬퍼 클래스, 홀더 클래스
interface (추상) | 시그니챠인타페스, 헬퍼 클래스, 홀더 클래스
constant (인터페이스내에 없다) | public interface
constant (인터페이스내) | 비추상의 Java 시그니챠인타페스 또는 추상의 단독 Java 인터페이스에 있어서의 필드
exception | class
Any | org.omg.CORBA.Any
인터페이스내에서 상자의 형태 선언 | "scoped" package
typedef | helper classes
의사 객체 | 의사 interface
readonly attribute | 액세스용 메소드
readwrite attribute | 액세스 및 변경용 메소드
operation | method

Java IDL 탑에