ObjectWeb ASM

ASM
Originalförfattare Eric Bruneton
Utvecklare OW2
Initial release 2002 ; 21 år sedan ( 2002 )
Stabil frisättning
9.3 / 3 april 2022 ; för 11 månader sedan ( 2022-04-03 )
Förvar
Skrivet i Java
Operativ system Cross-plattform
Typ bytecode Engineering Library
Licens BSD-licens
Hemsida asm .ow2 .io Edit this at Wikidata

ASM - biblioteket är ett projekt av OW2 -konsortiet. Det tillhandahåller ett enkelt API för att sönderdela, modifiera och återkomponera binära Java-klasser (dvs. bytecode ) . Projektet var ursprungligen tänkt och utvecklat av Eric Bruneton. ASM är för närvarande Java-centrerad och har för närvarande inte en backend som exponerar andra bytecode-implementationer (som .NET- bytecode, Python -bytecode, etc.).

Namnet "ASM" är inte en akronym: det är bara en referens till nyckelordet asm för C, vilket gör att vissa funktioner kan implementeras i assemblerspråk.

Används

ASM tillhandahåller ett enkelt bibliotek som exponerar de interna aggregerade komponenterna i en given Java-klass genom dess besökarorienterade API. ASM tillhandahåller också, utöver detta besökar-API, ett träd-API som representerar klasser som objektkonstruktioner. Båda API:erna kan användas för att modifiera den binära bytekoden, såväl som att generera ny bytekod (via injektion av ny kod i den befintliga koden, eller genom att generera nya klasser helt och hållet.) ASM-biblioteket har använts i flera olika applikationer, som t.ex. :

Prestanda- och profileringsinstrumentanrop
som fångar prestandamått kan injiceras i Java-klassbinärer för att undersöka minnes-/täckningsdata. (Till exempel att injicera instrumentering vid ingångs-/utgångspunkter.)
Implementering av ny språksemantik
Till exempel använder Groovy ASM för att generera sin bytekod. Dessutom har aspektorienterade tillägg till Java-språket implementerats genom att använda ASM för att bryta ner klassstrukturer för punktavsnittsidentifiering, och sedan igen när klassen rekonstrueras genom att injicera aspektrelaterad kod tillbaka i binären. (Se: AspectWerkz )

Invokedynamic

Sedan version 3.2 har ASM lagt till stöd för den nya invokedynamic koden, som tillåter metodanrop som förlitar sig på dynamisk typkontroll på de senaste JDK 7 -binärfilerna, vilket underlättar stödet för dynamiskt typade språk .

Releasehistorik

Den här tabellen visar endast versioner med betydande steg i ObjectWeb ASM-historiken, förutom versioner som huvudsakligen fixade buggar och förbättrad prestanda.

Släpp Utgivningsdatum Höjdpunkter
2.0 2005-05-17 Java 5 språkstöd
3.2 2009-06-11 stöd för den nya invokedynamic koden.
4.0 2011-10-29 Java 7 språkstöd
5.0 2014-03-16 Java 8 språkstöd
6,0 2017-09-23
Codebase migrerade till Gitlab Java 9 språkstöd
6.1 2018-03-11 Java 10 språkstöd
7,0 2018-10-27 Java 11 språkstöd
7.1 2019-03-03 Java 13 språkstöd
8,0 2020-03-28 Java 14 språkstöd
9,0 2020-09-22 Java 16 språkstöd
9.1 2021-02-06 Java 17 språkstöd
9.2 2021-06-20 Java 18 språkstöd
9.3 2022-04-03 Java 19 språkstöd, ny Maven BOM

Se även

externa länkar