ObjectWeb ASM
Originalförfattare | Eric Bruneton |
---|---|
Utvecklare | OW2 |
Initial release | 2002 |
Stabil frisättning | 9.3 / 3 april 2022
|
Förvar | |
Skrivet i | Java |
Operativ system | Cross-plattform |
Typ | bytecode Engineering Library |
Licens | BSD-licens |
Hemsida |
|
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
- Officiell hemsida
- OW2 Home - OW2 Consortiums hemsida.
- AspectWerkz - AspectWerkz-projektets hemsida. (Ett av de högsynsprojekt som använder ASM.)
- Bytecode Visualizer - gratis Eclipse-plugin för visning och felsökning av Java-bytekod som använder ASM-biblioteket