{"title":"Dynamic bytecode usage by object oriented Java programs","authors":"J. Waldron","doi":"10.1109/TOOLS.1999.779084","DOIUrl":null,"url":null,"abstract":"Java is an object oriented language that has grown in popularity since its release in 1996 and is particularly interesting because it uses a byte code intermediate language to represent programs, so that the same program can be run unchanged on machines with different underlying instruction sets. To measure dynamic byte code usage it was necessary to modify the source code Kaffe, a Java Virtual Machine. A selection of programs was measured to compare the way different applets and applications use the bytecodes, and it was found that very similar patterns of usage appear in all cases. For the test suite studied most of the bytecodes were used at least once during execution. However a small subset of the bytecodes was executed with very high frequency. 40% of instructions executed either pushed local variables or constants onto the operand stack, merely telling the useful instructions which operands to use. This result questions the stack based design for the intermediate representation of Java programs, since the bytecodes only occupy on average twelve percent of a class file, an intermediate representation that is less compact, but executes more efficiently might be possible.","PeriodicalId":434404,"journal":{"name":"Proceedings Technology of Object-Oriented Languages and Systems. TOOLS 29 (Cat. No.PR00275)","volume":"74 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1999-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"13","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings Technology of Object-Oriented Languages and Systems. TOOLS 29 (Cat. No.PR00275)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/TOOLS.1999.779084","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 13
Abstract
Java is an object oriented language that has grown in popularity since its release in 1996 and is particularly interesting because it uses a byte code intermediate language to represent programs, so that the same program can be run unchanged on machines with different underlying instruction sets. To measure dynamic byte code usage it was necessary to modify the source code Kaffe, a Java Virtual Machine. A selection of programs was measured to compare the way different applets and applications use the bytecodes, and it was found that very similar patterns of usage appear in all cases. For the test suite studied most of the bytecodes were used at least once during execution. However a small subset of the bytecodes was executed with very high frequency. 40% of instructions executed either pushed local variables or constants onto the operand stack, merely telling the useful instructions which operands to use. This result questions the stack based design for the intermediate representation of Java programs, since the bytecodes only occupy on average twelve percent of a class file, an intermediate representation that is less compact, but executes more efficiently might be possible.