개발정리

Java Reflextion API 개요 본문

JAVA

Java Reflextion API 개요

coffee. 2024. 4. 15. 22:37

Java Reflextion API

  • 리플렉션은 가능케 합니다. 자바 코드가 필드와 메소드 그리고 클래스의 생성자에 대한 정보를 찾는것을
    그리고 투영된 필드,메소드,생성자들 을 사용하는 것을 보안적인 제약과 함께
  • 그 API는 수용합니다. 타겟 오브젝트의 public 멤버들 또는 주어진 클래스에 의해 선언된 멤버들에 접근이 필요한 애플리케이션을
  • 이것은 또한 프로그램들이 default reflective access control 을 억제하도록 허용합니다.

리플렉션 API의 자취

리플렉션 API의 사용

  • 리플렉션은 보통 사용됩니다 JVM상에서 실행중인 애플리케이션의 runtime behavior 을 조사하거나 수정하는 능력이 필요한 프로그램들에 의해
  • 이것은 비교적으로 향상된 특징이며 언어의 본질을 강하게 쥐고있는 개발자들에 의해 사용되어야만 합니다.
  • 이러한 경고를 마음에 새기면서, 리플렉션은 강력한 기술 이며 애플리케이션이 불가능 했던 동작을 가능하게 합니다.

확장 가능한 특징

  • 한 애플리케이션은 만들 수도 있습니다 외부의 유저가 정의한 클래스의 사용을 확장 가능한 오브젝트의 인스턴스를 생성 함 으로써 그들의 충분한 자격이있는 이름을 사용하면서

    클래스 브라우저 과 시각적 개발 환경

  • (클래스 브라우저는 IDE의 특성입니다. 프로그래머가 OOP코드의 구조를 시각화 하거나 찾을수 있게하는)
  • 클래스 브라우저는 클래스의 멤버들의 열거가 가능해야 합니다.
  • 시각적 개발 환경은 이점을 얻을수 있습니다. 올바른 코드를 작성하는 개발자를 돕기위해

    디버거와 테스트 툴

  • 디버거는 클래스의 private멤버를 조사할 필요가 있습니다.
  • 테스트 설비는 리플렉션의 사용을 만들수 있습니다. 시스템 적으로 호출 하면서 클래스에 정의된 API셋을 테스트 SUITE에서 고수준의 코드 커버리지를 보장하기 위해

리플렉션의 결점

  • 리플렉션은 강력합니다. 하지만 무차별적으로 사용되어서는 안됩니다.
  • 만약 이것이 리플렉션을 사용하지 않아도 동작이 가능하다면 사용을 피하는것이 낫습니다.
  • 다음으로 따라오는 주의점은 가슴에 새겨 두십시오 리플렉션을 통해 코드에 접근할때

퍼포먼스 오버헤드

  • 왜냐하면 리플렉션은 동적으로 분석된 타입들을 포함하기 때문이다. 특정 JVM 최적화는 수행되지 않을 수 있다. 그 결과 투영된 동작들은 투영되지 않은것 보다 느린 퍼포먼스를 가진다. 그리고 자주 호출되는 성능에 민감한 애플리케이션들의 코드 는 피해야 한다.

    보안 제한

  • 리플렉션은 런타임 퍼미션이 필요합니다.시큐리티 매니저 아래에서 동작할때는 제공되지 않을수 있는
  • 이것은 매우 중요한 고려사항 입니다. 애플릿 처럼 제한된 시큐리티 컨텍스트 안에서 실행되어야 하는 코드에서

내부사항의 노출

  • 리플렉션이 코드를 허용하기 때문에 동작을 수행하도록 non-reflective코드에서는 허용되지 않은
    private필드나 메소드에 접근하는 것과 같은 리플렉션의 사용의 결과로 예측하지 못한 사이드 이펙트를 초래할수 있습니다. 휴대성을 파괴하고 고장난 코드를 렌더 할 수 있는
  • Reflective 코드는 추상화를 깨고 그 결과로 플랫폼의 업그레이드와 함께 행동을 바꿀 수도 있다.

참조

'JAVA' 카테고리의 다른 글

Java Reflection _ class  (0) 2024.04.16
자바 컴파일 과정  (0) 2024.03.17