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
- HTTP
- 디자인 패턴
- Python
- bytecode
- 개발
- python3
- db
- 파이썬
- 스프링 부트
- django
- JPA
- Spring Boot
- ORM
- 장고
- rabbitmq
- 데이터베이스
- BCI
- java
- node.js
- 자바
- 스프링부트
- 웹 개발
- 스프링
- 파이썬3
- 웹
- 안드로이드
- Spring
- mysql
- 자료구조
- 보안
Archives
- Today
- Total
semtax의 개발 일지
ASM Library Guideline 챕터 1 정리 본문
반응형
1. ASM을 어디에다 쓰는가?
- 난독화 도구 제작등에도 사용 됨.
- JIT만들때도 활용이 가능 함.
- 그 외 기존 class 파일의 바이트 코드 패치를 할때 사용 됨.
- AspectJ 같은데서도 쓰인다고 함
2. ASM 라이브러리의 전체적인 구조
2-1. 전체 구성
- Tree Based API와 Event Based API를 제공함
- Tree Based API는 Top-Down으로 자바 바이트 코드를 파싱하여 생성된 AST를 순회하는 방식으로 동작
- Event Based API는 순차적으로 바이트코드를 읽어들어서 특정 구문이 발견되었을때(Ex: 클래스 정의, 변수선언 등) 해당 구문이 발생하면 이벤트 핸들러가 실행되는 방식임
2-2. 주요 모듈
- org.objectweb.asm : 이벤트 based API를 제공
- org.objectweb.asm.util : 기타 함수들을 제공
- org.objectweb.asm.commons : 미리 정의된 Listener(Filter)들을 제공
- org.objectweb.asm.tree : 트리 based API를 제공
- rg.objectweb.asm.tree.analysis : 트리기반의 미리 정의된 Filter(AST Handler) 들을 제공
2-3. 주요 프로그래밍 방식
- Asm의 객체들은 크게 아래 3가지 형태로 나누어짐
- Event Producer : 클래스 파일을 읽어들이고 파싱하는 역할
- Event Consumer : 클래스 파일을 생성하는 역할
- Event Filter : 클래스 파일에서 특정 요소들을 필터링하는 역할
- 보통 아래와 같은 단계를 통해 라이브러리를 사용하고 진행이 됨
- 목적에 맞게 Event Producer와 Event Consumer, Event Filter들을 조합 함.
- 이를 통해 클래스파일이 저 조합된 필터들을 통해서 변형 또는 생성되어 출력 됨.
반응형
'개발 > Java' 카테고리의 다른 글
ASM Library Guideline 챕터6 정리 (0) | 2020.01.13 |
---|---|
ASM Library Guideline 챕터 4 정리 (0) | 2020.01.10 |
ASM Library Guideline 챕터3 정리 (0) | 2020.01.10 |
ASM Library Guideline 챕터 2 정리 (0) | 2020.01.08 |
자바 시스템 클래스 들을 ASM으로 변경하는법 (0) | 2020.01.07 |
Comments