A2공간 - 도움되는 글을 쓰자

ani2life.egloos.com

포토로그


그냥 잡담

※방명록은 따로 없고 무조건 최신글에 댓글 남기시면 됩니다. ^^

위드블로그



Java 5.0 이상에서 RMI는 stub 파일 불필요 개발/플밍

RMI 공부를 하면서 이런저런 테스트를 해봤는데 stub 파일이 없어도 동작했습니다.
그래서 구글링을 통해 아래와 같은 정보를 얻었습니다.

"새로운 Java 5.0 RMI의 최고의 특징중 하나는 rmic를 사용하여 stubs의 정적 생성을 더이상 요구할 필요가 없다. 이 위업은 런타임시 stub 클래스의 동적생성에 의해서 수행된다. 이하생략..."

원문 : http://today.java.net/pub/a/today/2005/10/06/the-new-rmi.html?page=last
참고 : JDK release notes

One of the best features of the new Java 5.0 RMI is that static generation of stubs using rmic is not required anymore. This feat is accomplished by the dynamic generation of stub classes at runtime. However, if the client is not running Java 5.0, then rmic must still be used to pre-generate stub classes for remote objects. Dynamic stub generation is made possible by two different changes that were part of previous JDK releases. First, the revision of the JRMP protocol in Java 2 enabled RMI to work without skeletons. Second, the introduction of Dynamic Proxies in Java 1.3 obviated the need for client-side stubs.

The JDK release notes provide the following explanation for stubless RMI: When an application exports a remote object (using the constructors or the static exportObject methods of the classes java.rmi.server.UnicastRemoteObject or java.rmi.activation.Activatable) and a pre-generated stub class for the remote object's class cannot be loaded, the remote object's stub will be a java.lang.reflect.Proxy instance (whose class is dynamically generated) with a java.rmi.server.RemoteObjectInvocationHandler as its invocation handler. An existing application can be deployed to use dynamically generated stub classes whether or not pre-generated stub classes exist by setting the system property java.rmi.server.ignoreStubClasses to "true". If this property is set to "true," then pre-generated stub classes are never used.


덧글

  • 최종욱 2007/06/15 10:26 #

    Java 5는 어노테이션부터 시작해서 불필요한 파일들을 꽤 많이 '생략'하기 시작했죠. Java 6은 더 좋습니다. ㅎㅎ
  • -A2- 2007/06/15 11:00 #

    최종욱// 갈수록 불필요한 것들이 줄어들어서 좋습니다. ^^
  • 베짱이 2007/06/19 15:38 # 삭제

    도움되는 글을 쓰자 <- 마음에 꼭 들어오네용~
  • -A2- 2007/06/19 23:06 #

    베짱이// 저도 다른 사람들의 글로 많은 도움을 받았기 때문이죠. ^^
  • 산골소년 2007/06/21 12:35 # 삭제

    안녕하세요~ 댓글 타고 왔습니다~ ^^

    저도 최근에서야 1.5 를 써보고 있는데요

    List<Object> list = new ArrayList(); <- 이런것 부터요.

    근데 제가 문법책을 안봐서 그런데 저렇게 명시적으로 어떤 객체인지 표기하면 어떤게 좋나요? @@;;
  • -A2- 2007/06/23 13:26 #

    산골소년// 객체를 리스트에서 다시 꺼내올때 캐스팅할 필요가 없습니다. ^^ 그외 내부적으로는 저도 자세히 모르겠네요.
  • karos 2007/10/08 22:14 # 삭제

    추가적으로 적자면 실행시에만 에러를 검출할수 있었던 Object(즉 모든 클래스가 반환가능)리턴이 컴파러에서 검출할수 있게 되었습니다. 물론 여러가지 오브젝트를 받아서 처리할 시는 어쩔수 없이 제네릭을 사용할수 없지만 한가지 타입만을 받을 때에는 미리 선언을 해두면 코딩의 실수로 다른 타입의 객체가 들어가도록 코딩하면 쓰는 IDE나 아님 컴파일시 잡아주어서 쉽게 컴파일이 가능합니다.
  • -A2- 2007/10/09 23:45 #

    karos// 추가 설명 감사합니다. ^^
  • -A2- 2007/11/23 17:01 #

    조상현// 내 블로그에 글 남기면서 왠 존댓말 ㅡㅡ;