Abstrakt. Vid interface Java med andra system såsom databaser, programmerare måste ofta programmera i speciella gränssnitt språk som SQL. Kod skriven på dessa språk behöver ofta vara inbäddad i strängar där de inte kan felkontrolleras vid kompileringstid, eller Java kompilatorn behöver ändras för att direkt känna igen kod skriven på dessa språk. Vi har valt ett annat tillvägagångssätt för att lägga till databas sökmöjligheter till Java. Bytecode rewriting tillåter oss att lägga till frågefunktioner till Java vars korrekthet kan kontrolleras vid kompileringstid men som inte kräver några ändringar av Javaspråket, Javakompilatorerna, Java VMs eller IDEs. Liksom traditionella objekt-relationella kartverktyg, tillhandahåller vi Java bibliotek för att få tillgång till enskilda databasposter som objekt och navigera bland dem. För att uttrycka en fråga, skriver en programmerare helt enkelt kod som tar en samling som representerar hela innehållet i en databas, itererar över varje post som de skulle med en normal samling, och välja poster av intresse. Frågan är fullt giltig Java kod som, om den utförs, kommer att läsa igenom en hel databas och kopiera poster i Java objekt där de kommer att inspekteras. Köra frågor på detta sätt är uppenbarligen ineffektivt, men vi har en särskild bytekod omskrivning verktyg som kan dekompilera Java klass filer, identifiera frågor i bytekoden, och skriva om koden för att använda SQL istället. Den omskrivna bytekoden kan sedan köras med någon vanlig Java-VM. Eftersom frågor använder standard Java set manipulation syntax, Java programmerare behöver inte lära sig någon ny syntax. Vårt system kan hantera komplexa frågor som utnyttjar alla grundläggande relationsoperationer och uppvisar prestanda jämförbar med handskrivna SQL.
Iu och Zwaenepoel REF föreslog ett Java bytecode omskrivningsverktyg som automatiskt detekterar och konverterar kompilerad Java-kod som direkt manipulerar databastabeller som Java-samlingar (istället för att använda JDBC) till effektivare SQL-frågor.
Queryll: Java Database Queries Through Bytecode Rewriting
{'venue': 'Middleware', 'journal': None, 'mag_field_of_study': ['Computer Science']}