오브젝트웹 ASM

ObjectWeb ASM
ASM
원본 작성자에릭 브런턴
개발자OW2
초기 릴리즈2002년; 20년 전(2002년)
안정적 해제
9.1 / 2021년 2월 6일; 13개월(2021-02-06)
리포지토리
기록 위치자바
운영 체제크로스 플랫폼
유형바이트코드 엔지니어링 라이브러리
면허증BSD 라이선스
웹사이트asm.ow2.이오 Edit this at Wikidata

ASM 라이브러리는 OW2 컨소시엄의 프로젝트다.바이너리 Java 클래스(즉, 바이트코드)를 분해, 수정, 재구성할 수 있는 간단한 API를 제공한다.이 프로젝트는 원래 에릭 브루니톤에 의해 구상되고 개발되었다.ASM은 현재 자바 중심이며, 현재 다른 바이트 코드 구현(예: )을 노출하는 백엔드를 가지고 있지 않다.NET 바이트코드, Python 바이트코드 등).

'ASM'이라는 명칭은 약어가 아니라, 일부 기능이 조립 언어로 구현될 수 있도록 하는 C의 asm 키워드를 가리키는 것일 뿐이다.[1]

사용하다

ASM은 방문자 지향 API를 통해 주어진 자바 클래스의 내부 집계 구성요소를 노출시키는 간단한 라이브러리를 제공한다.ASM은 또한 이 방문자 API 위에 객체 구성으로 클래스를 나타내는 트리 API를 제공한다.두 API는 바이너리 바이트 코드를 수정하는 것뿐만 아니라 새로운 바이트 코드 생성에 사용될 수 있다(기존 코드에 새로운 코드를 주입하거나 새로운 클래스를 완전히 생성함).ASM 라이브러리는 다음과 같은 여러 가지 다양한 애플리케이션에서 사용되어 왔다.

성능 및 프로파일링
성능 지표를 캡처하는 계측 호출을 Java 클래스 이진 파일에 주입하여 메모리/커버리지 데이터를 검사할 수 있다(예: 입력/출구 지점에 계측기 주입).
신언어 의미론 구현
예를 들어 그루비는 ASM을 사용하여 바이트코드를 생성한다.또한, 자바 언어에 대한 측면 지향적 추가는 ASM을 사용하여 점 절단 식별을 위한 클래스 구조를 분해한 다음, 다시 측면 관련 코드를 바이너리에 다시 주입하여 클래스를 재구성할 때 구현되었다.(참조: SideWerkz)

인보키다이나믹

버전 3.2 이후 ASM은 새로운 기능에 대한 지원을 추가했다.invokedynamic최신 JDK 7 바이너리에 대한 동적 유형 확인에 의존하는 메서드 호출이 가능하여 동적으로 입력된 언어에 대한 지원이 용이하다.[2][3]

발매이력

이 표는 버그를 주로 수정하고 성능을 향상시킨 버전 외에 ObjectWeb ASM 기록에 중요한 단계가 있는 버전만 제시한다.[4]

해제 릴리스 날짜 하이라이트
2.0 2005-05-17 Java 5 언어 지원
3.2 2009-06-11 새로운 것에 대한 지원invokedynamic암호를 [2]붙이다
4.0 2011-10-29 Java 7 언어 지원
5.0 2014-03-16 Java 8 언어 지원
6.0 2017-09-23 Gitlab으로 마이그레이션된 코드베이스
Java 9 언어 지원
6.1 2018-03-11 Java 10 언어 지원
7.0 2018-10-27 Java 11 언어 지원
7.1 2019-03-03 Java 13 언어 지원
8.0 2020-03-28 Java 14 언어 지원
9.0 2020-09-22 Java 16 언어 지원
9.1 2021-02-06 Java 17 언어 지원
9.2 2021-06-20 Java 18 언어 지원

참고 항목

참조

  1. ^ Bruneton, Éric; Lenglet, Romain; Coupaye, Thierry (2002). "ASM: a code manipulation tool to implement adaptable systems". FranceTélécom R&D,DTL/ASR. Retrieved 2020-06-07.
  2. ^ a b Forax, Remi (2009-06-11). "ASM now supports invokedynamic". Retrieved 2009-11-14.
  3. ^ "11 June 2009: ASM 3.2 (cvs-tag: ASM_3_2)". ObjectWeb. 2009-06-11. Retrieved 2009-11-14.
  4. ^ "Versions". ObjectWeb. Retrieved 2020-06-06.

외부 링크