RMI
소켓 프로그램은 단순히 데이터를 송수신하는 기능만 제공한다.
RMI는 다른 호스트에 있는 메소드를 편리하게 실행하고 결과를 리턴해 주는 기능을 제공한다.
프로그램 내에서 IP 주소나 포트 번호를 직접 다루지 않는다. 즉, RMI를 사용하면 서버 IP 주소에 무관하게 프로그램을 작성할 수 있다(단, 서비스 이름과 서비스 등록을 관리하는 호스트의 주소는 알아야 한다).
저수준(low-level) 소켓을 이용하지 않고 원격 객체의 메소드를 호출할 수 있는 방법을 제공하는 하는 객체 지향 언어인 Java 기반의 분산 컴퓨팅 환경(클라이언트/서버 지원)을 위한 미들웨어(RPC와 유사)
특징
RPC의 Java 버전
스레드(thread)가 원격 객체(Remote Object)의 메소드(method) 호출
다른 Java Virtual Machine 상에 있는 객체는 “원격” 객체
RPC vs RMI
RPC : Procedural Programming Style
RMI : Object-Oriented Programming Style
RPC의 매개변수 : Ordinary Data Structures
RMI의 매개변수 : Objects
장점
객체 지향적이다.
프로그램 작성 및 사용이 쉽다.
안전하고 보안성이 있다.
기존 시스템과 통합해서 사용할 수 있다.
RMI의 HTTP 프록싱 메커니즘을 사용하여 방화벽을 넘어서 통신 가능.
단점
자바에의존적이다.
오버헤드가 크다. 대규모이거나 복잡한 객체들이 전달될 때 이러한 오버 헤드는 더 심각하게 된다.