RMI (Remote Method Invocation) – 원격 메쏘드 호출
RMI는 자바 프로그래밍 언어와 개발환경을 사용하여 서로 다른 컴퓨터들 상에 있는 객체들이 분산 네트웍 내에서 상호 작용하는 객체지향형 프로그램을 작성할 수 있는 방식이다.
RMI는 일반적으로 RPC라고 알려져 있는 것의 자바 버전이지만, 그러나 요청과 함께 하나 이상의 객체들을 통과시키는 능력을 가지고 있다.
객체는 원격 컴퓨터 내에서 수행될 서비스를 변경하는 정보를 포함할 수 있다.
자바를 발명한 회사인 썬 마이크로시스템즈에서는 이것을 “움직이는 작용”(moving behavior)이라고 부른다.
예를 들면, 원격 컴퓨터에 있는 사용자가 비용 청구서를 채울 때, 사용자와 상호작용을 하는 자바 프로그램은 RMI를 사용하여 비용 보고에 관해 항상 최신 방침을 가지고 있는 다른 컴퓨터의 자바 프로그램과 통신할 수 있을 것이다.
이에 답하여, 그 프로그램은 최신 방침에 위반됨이 없는 방식으로 사용자의 비용 청구서 데이터를 심사하는 원격 컴퓨터 프로그램의 이용을 허락하는 객체와, 관련 메쏘드 정보를 돌려보낼 것이다.
사용자와 회사는 둘 모두 초기에 실수를 예방함으로써 시간을 절약할 수 있게 된다.
회사의 방침이 변경될 때마다, 오직 한 컴퓨터에 있는 프로그램만 변경하면 된다.
썬은 그것의 객체 매개변수 전달 방식을 객체 직렬화라고 부른다.
RMI 요청은 원격 객체의 메쏘드를 부르는 요청이다.
이 요청은 지역 컴퓨터 내에 객체 메쏘드를 부르는 것과 같은 구문 형식을 가진다.
일반적으로, RMI는 네트웍에 걸쳐 있는 객체 모델과 그것의 장점들을 보호하기 위해 설계된다.
RMI는 응용프로그램과 자바 가상머신 사이에 세 개가 계층으로 구현된다.
그 세 가지 계층이란 다음과 같다.