Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- REDIS
- EBS
- AWS
- 컴포넌트 주도
- rabbitmq 에러
- quert
- 오라클
- Java Reflextion API
- 도커빌드
- 리액트
- 애그리거트
- 공식문서
- 리덕스
- 자료구조
- redux
- 오라클 병렬처리
- paraller
- .getClass()
- vue.js
- forNmae()
- 자바
- $emit()
- 네임드 뷰
- 커스텀 로그인
- VUE
- exiting abnormally
- react
- 리덕스 공식문서
- ACCESS_REFUSED
- Express
Archives
- Today
- Total
개발정리
Java Reflextion API 개요 본문
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 |