{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,10]],"date-time":"2025-10-10T01:07:09Z","timestamp":1760058429809,"version":"build-2065373602"},"reference-count":79,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA1","license":[{"start":{"date-parts":[[2025,4,9]],"date-time":"2025-04-09T00:00:00Z","timestamp":1744156800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["CNS-2330752,CNS-2401873"],"award-info":[{"award-number":["CNS-2330752,CNS-2401873"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100012166","name":"National Key Research and Development Program of China","doi-asserted-by":"publisher","award":["No.2022YFB450040"],"award-info":[{"award-number":["No.2022YFB450040"]}],"id":[{"id":"10.13039\/501100012166","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2025,4,9]]},"abstract":"<jats:p>The balance between the compilation\/optimization time and the produced code quality is very important for Just-In-Time (JIT) compilation. Time-consuming optimizations can cause delayed deployment of the optimized code, and thus more execution time needs to be spent either in the interpretation or less optimized code, leading to a performance drag. Such a performance drag can be detrimental to mobile and client-side devices such as those running Android, where applications are often shorting-running, frequently restarted and updated. To tackle this issue, this paper presents a lightweight learning-based, rule-guided dynamic compilation approach to generate good-quality native code directly without the need to go through the interpretive phase and the first-level optimization at runtime. Different from existing JIT compilers, the compilation process is driven by translation rules, which are automatically learned offline by taking advantage of existing JIT compilers. We have implemented a prototype of our approach based on Android 14 to demonstrate the feasibility and effectiveness of such a lightweight rule-based approach using several real-world applications. Results show that, compared to the default mode running with the interpreter and two tiers of JIT compilers, our prototype can achieve a 1.23\u00d7 speedup on average. Our proposed compilation approach can also generate native code 5.5\u00d7 faster than the existing first-tier JIT compiler in Android, with the generated code running 6% faster. We also implement and evaluate our approach on a client-side system running Hotspot JVM, and the results show an average of 1.20\u00d7 speedup.<\/jats:p>","DOI":"10.1145\/3720418","type":"journal-article","created":{"date-parts":[[2025,4,9]],"date-time":"2025-04-09T13:48:26Z","timestamp":1744206506000},"page":"113-142","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["JavART: A Lightweight Rule-Based JIT Compiler using Translation Rules Extracted from a Learning Approach"],"prefix":"10.1145","volume":"9","author":[{"ORCID":"https:\/\/orcid.org\/0009-0005-3533-6828","authenticated-orcid":false,"given":"Hanzhang","family":"Wang","sequence":"first","affiliation":[{"name":"Fudan University, Shanghai, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0000-5809-495X","authenticated-orcid":false,"given":"Wei","family":"Peng","sequence":"additional","affiliation":[{"name":"Fudan University, Shanghai, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-0840-4846","authenticated-orcid":false,"given":"Wenwen","family":"Wang","sequence":"additional","affiliation":[{"name":"University of Georgia, Athens, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-1735-9373","authenticated-orcid":false,"given":"Yunping","family":"Lu","sequence":"additional","affiliation":[{"name":"Fudan University, Shanghai, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9653-8777","authenticated-orcid":false,"given":"Pen-Chung","family":"Yew","sequence":"additional","affiliation":[{"name":"University of Minnesota at Twin Cities, Minneapolis, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-1224-2237","authenticated-orcid":false,"given":"Weihua","family":"Zhang","sequence":"additional","affiliation":[{"name":"Fudan University, Shanghai, China"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2025,4,9]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"2014. A Perfect Match: Java and the Internet of Things. https:\/\/www.oracle.com\/technical-resources\/articles\/java\/java-maker-iot.html"},{"key":"e_1_2_1_2_1","unstructured":"2019. Edge Computing on a SIM with Java Card 3.1. https:\/\/blogs.oracle.com\/javamagazine\/post\/edge-computing-on-a-sim-with-java-card-31"},{"key":"e_1_2_1_3_1","unstructured":"2020. Benchmarking Android Runtime: Past Present and Future. https:\/\/static.linaro.org\/connect\/lvc20\/presentations\/LVC20-311-0.pdf"},{"key":"e_1_2_1_4_1","unstructured":"2020. Java Microservices: A Practical Guide. https:\/\/www.marcobehler.com\/guides\/java-microservices-a-practical-guide"},{"key":"e_1_2_1_5_1","unstructured":"2021. Build Your First Android App in Java. https:\/\/developer.android.com\/codelabs\/build-your-first-android-app"},{"key":"e_1_2_1_6_1","unstructured":"2023. AWS IoT Device SDK for Java v2. https:\/\/github.com\/aws\/aws-sdk-java-v2"},{"key":"e_1_2_1_7_1","unstructured":"2023. Azure IoT libraries for Java. https:\/\/learn.microsoft.com\/en-us\/java\/api\/overview\/azure\/iot?view=azure-java-stable"},{"key":"e_1_2_1_8_1","unstructured":"2023. Kura: The Extensible Open Source Java\/OSGi IoT Edge Framework. https:\/\/eclipse.dev\/kura"},{"volume-title":"The Mobile Economy","year":"2023","key":"e_1_2_1_9_1","unstructured":"2023. The Mobile Economy 2023. https:\/\/www.gsma.com\/solutions-and-impact\/connectivity-for-good\/mobile-economy\/wp-content\/uploads\/2023\/03\/270223-The-Mobile-Economy-2023.pdf"},{"key":"e_1_2_1_10_1","unstructured":"2023. State of the Java Survey and Report. https:\/\/www.azul.com\/wp-content\/uploads\/final-2023-state-of-java-report.pdf"},{"key":"e_1_2_1_11_1","unstructured":"2024. Android Debug Bridge. https:\/\/developer.android.com\/tools\/adb"},{"key":"e_1_2_1_12_1","unstructured":"2024. Dalvik bytecode format. https:\/\/source.android.com\/docs\/core\/runtime\/dalvik-bytecode"},{"key":"e_1_2_1_13_1","unstructured":"2024. UI Automator. https:\/\/developer.android.com\/training\/testing\/other-components\/ui-automator"},{"key":"e_1_2_1_14_1","unstructured":"2024. UI jank detection. https:\/\/developer.android.com\/studio\/profile\/jank-detection"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/277650.277740"},{"key":"e_1_2_1_16_1","volume-title":"Ullman","author":"Aho Alfred V.","year":"2006","unstructured":"Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. 2006. Compilers: Principles, Techniques, and Tools (2nd Edition). Addison-Wesley Longman Publishing Co., Inc., USA. isbn:0321486811"},{"key":"e_1_2_1_17_1","volume-title":"SAND: Towards High-Performance Serverless Computing. In 2018 USENIX Annual Technical Conference (USENIX ATC 18)","author":"Akkus Istemi Ekin","year":"2018","unstructured":"Istemi Ekin Akkus, Ruichuan Chen, Ivica Rimac, Manuel Stein, Klaus Satzke, Andre Beck, Paarijaat Aditya, and Volker Hilt. 2018. SAND: Towards High-Performance Serverless Computing. In 2018 USENIX Annual Technical Conference (USENIX ATC 18). USENIX Association, Boston, MA. 923\u2013935. isbn:978-1-939133-01-4 https:\/\/www.usenix.org\/conference\/atc18\/presentation\/akkus"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/353171.353175"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/1289927.1289967"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133876"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/3624007.3624050"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2005.14"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/1167473.1167488"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/3458336.3465305"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/800230.806984"},{"key":"e_1_2_1_26_1","unstructured":"John Chapin and Mike Roberts. 2020. Programming AWS Lambda: build and deploy serverless applications with Java. O\u2019Reilly Media."},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/349299.349306"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1109\/40.591653"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2541940.2541945"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1109\/PCCC.1989.37442"},{"volume-title":"Proceedings of the 19th International Conference on Computer Aided Verification (CAV\u201907)","author":"Ganesh Vijay","key":"e_1_2_1_31_1","unstructured":"Vijay Ganesh and David L. Dill. 2007. A Decision Procedure for Bit-Vectors and Arrays. In Proceedings of the 19th International Conference on Computer Aided Verification (CAV\u201907). Springer-Verlag, Berlin, Heidelberg. 519\u2013531. isbn:9783540733676"},{"key":"e_1_2_1_32_1","volume-title":"SOAP, WSDL, and UDDI","author":"Graham Stephen","unstructured":"Stephen Graham, Glen Daniels, Doug Davis, Yuichi Nakamura, Simeon Simeonov, Toufic Boubez, Ryo Neyama, Peter Brittenham, Paul Freemantle, and Dieter Koenig. 2004. Building Web Services with Java: Making Sense of XML, SOAP, WSDL, and UDDI (2nd Edition). Pearson Education. isbn:0672326418","edition":"2"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/1356058.1356062"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/1950365.1950412"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.5555\/776261.776289"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0057013"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1133956.1133980"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/944579.944588"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.5555\/2190025.2190071"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO50266.2020.00043"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/3468264.3473915"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/378993.379234"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/512529.512552"},{"key":"e_1_2_1_44_1","volume-title":"JITServer: Disaggregated Caching JIT Compiler for the JVM in the Cloud. In 2022 USENIX Annual Technical Conference (USENIX ATC 22)","author":"Khrabrov Alexey","year":"2022","unstructured":"Alexey Khrabrov, Marius Pirvu, Vijay Sundaresan, and Eyal de Lara. 2022. JITServer: Disaggregated Caching JIT Compiler for the JVM in the Cloud. In 2022 USENIX Annual Technical Conference (USENIX ATC 22). USENIX Association, Carlsbad, CA. 869\u2013884. isbn:978-1-939133-29-62 https:\/\/www.usenix.org\/conference\/atc22\/presentation\/khrabrov"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/360248.360252"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/1369396.1370017"},{"key":"e_1_2_1_47_1","volume-title":"Warm-up Your JVM: Understand and Eliminate JVM Warm-up Overhead in Data-Parallel Systems. In 12th USENIX Symposium on Operating Systems Design and Implementation (OSDI 16)","author":"Lion David","year":"2016","unstructured":"David Lion, Adrian Chiu, Hailong Sun, Xin Zhuang, Nikola Grcevski, and Ding Yuan. 2016. Don\u2019 t Get Caught in the Cold, Warm-up Your JVM: Understand and Eliminate JVM Warm-up Overhead in Data-Parallel Systems. In 12th USENIX Symposium on Operating Systems Design and Implementation (OSDI 16). USENIX Association, Savannah, GA. 383\u2013400. isbn:978-1-931971-33-1 https:\/\/www.usenix.org\/conference\/osdi16\/technical-sessions\/presentation\/lion"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/2150976.2151012"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/3428236"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/3453483.3454043"},{"key":"e_1_2_1_51_1","volume-title":"Murach\u2019s Java Servlets and JSP","author":"Murach Joel","year":"1890","unstructured":"Joel Murach and Michael Urban. 2014. Murach\u2019s Java Servlets and JSP (3rd ed.). Mike Murach and Associates. isbn:1890774782","edition":"3"},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/605397.605404"},{"key":"e_1_2_1_53_1","volume-title":"Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium -","volume":"1","author":"Paleczny Michael","year":"2001","unstructured":"Michael Paleczny, Christopher Vick, and Cliff Click. 2001. The Java HotspotTM Server Compiler. In Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1 (JVM\u201901). USENIX Association, USA. 1."},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/277650.277743"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/330249.330250"},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2019.8661171"},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/1449764.1449796"},{"key":"e_1_2_1_58_1","volume-title":"Microservices Patterns: With Examples in Java","author":"Richardson Chris","year":"2018","unstructured":"Chris Richardson. 2018. Microservices Patterns: With Examples in Java. Simon and Schuster."},{"key":"e_1_2_1_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/237090.237175"},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/2500828.2500839"},{"key":"e_1_2_1_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/996841.996875"},{"key":"e_1_2_1_62_1","volume-title":"2019 USENIX Annual Technical Conference (USENIX ATC 19)","author":"Song Changheng","year":"2019","unstructured":"Changheng Song, Wenwen Wang, Pen-Chung Yew, Antonia Zhai, and Weihua Zhang. 2019. Unleashing the Power of Learning: An Enhanced $Learning-Based$ Approach for Dynamic Binary Translation. In 2019 USENIX Annual Technical Conference (USENIX ATC 19). 77\u201390."},{"key":"e_1_2_1_63_1","doi-asserted-by":"publisher","DOI":"10.1145\/2544137.2544157"},{"key":"e_1_2_1_64_1","doi-asserted-by":"publisher","DOI":"10.1145\/504282.504296"},{"key":"e_1_2_1_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/781131.781166"},{"key":"e_1_2_1_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/2048066.2048103"},{"key":"e_1_2_1_67_1","doi-asserted-by":"publisher","DOI":"10.1145\/3563311"},{"key":"e_1_2_1_68_1","unstructured":"Ben L. Titzer. 2023. Whose baseline compiler is it anyway? arxiv:2305.13241."},{"key":"e_1_2_1_69_1","doi-asserted-by":"publisher","DOI":"10.1145\/3302424.3303978"},{"key":"e_1_2_1_70_1","doi-asserted-by":"publisher","DOI":"10.1145\/3173162.3177160"},{"key":"e_1_2_1_71_1","doi-asserted-by":"publisher","DOI":"10.1145\/358274.358283"},{"key":"e_1_2_1_72_1","doi-asserted-by":"publisher","DOI":"10.1145\/504282.504295"},{"key":"e_1_2_1_73_1","doi-asserted-by":"publisher","DOI":"10.1145\/1772954.1772979"},{"key":"e_1_2_1_74_1","doi-asserted-by":"publisher","DOI":"10.1145\/2400682.2400689"},{"key":"e_1_2_1_75_1","doi-asserted-by":"publisher","DOI":"10.1145\/3360610"},{"key":"e_1_2_1_76_1","doi-asserted-by":"publisher","DOI":"10.1145\/3485513"},{"key":"e_1_2_1_77_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276494"},{"key":"e_1_2_1_78_1","doi-asserted-by":"publisher","DOI":"10.1109\/PACT.1999.807503"},{"key":"e_1_2_1_79_1","doi-asserted-by":"publisher","DOI":"10.1145\/2660193.2660221"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3720418","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3720418","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T17:07:38Z","timestamp":1760029658000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3720418"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,4,9]]},"references-count":79,"journal-issue":{"issue":"OOPSLA1","published-print":{"date-parts":[[2025,4,9]]}},"alternative-id":["10.1145\/3720418"],"URL":"https:\/\/doi.org\/10.1145\/3720418","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2025,4,9]]},"assertion":[{"value":"2024-10-14","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-02-18","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-04-09","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}