Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/320384.320414acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
Article
Free access

Practical experience with an application extractor for Java

Published: 01 October 1999 Publication History

Abstract

Java programs are routinely transmitted over low-bandwidth network connections as compressed class file archives (i.e., zip files and jar files). Since archive size is directly proportional to download time, it is desirable for applications to be as small as possible. This paper is concerned with the use of program transformations such as removal of dead methods and fields, inlining of method calls, and simplification of the class hierarchy for reducing application size. Such “extraction” techniques are generally believed to be especially useful for applications that use class libraries, since typically only a small fraction of a library's functionality is used. By “pruning away” unused library functionality, application size can be reduced dramatically. We implemented a number of application extraction techniques in Jax, an application extractor for Java, and evaluate their effectiveness on a set of realistic benchmarks ranging from 27 to 2,332 classes (with archives ranging from 56,796 to 3,810,120 bytes). We report archive size reductions ranging from 13.4% to 90.2% (48.7% on average).

References

[1]
AGESEN, Q. Concrete Type Inference: Delivering Object-Oriented Applications. PhD thesis, Stanford University, December 1995. Appeared as Sun Microsystems Laboratories Technical Report SMLI TR-96-52.
[2]
AGESEN, O., AND UNGAR, D. Sifting out the gold: Delivering compact applications from an exploratory object-oriented programming environment. In Proceedings of the Ninth Annual Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA'94) (Portland, OR, 1994), pp. 355-370. ACM SIGPLAN Notices 29(10).
[3]
ARNOLD, K., AND GOSLING, J. The Java Programming Language, second edition ed. Addison-Wesley, 1997.
[4]
BACON, D. F. Fast and Effective Optimziation of Statically Typed Object-Oriented Languages. PhD thesis, University of California at Berkeley, Dec 1997. Forthcoming.
[5]
BACON, D. F., AND SWEENEY, P. F. Fast static analysis of C++ virtual function calls. In Proceedings of the Eleventh Annual Conference on Object-Oriented Programming Systems, Lnaguages, and Applications (OOPSLA '96) (San Jose, CA, 1996), pp. 324-341. ACM SIGPLAN Notices 31(10).
[6]
BRADLEY, Q., HORSPOOL, R. N., AND VITEK, J. Jazz: An efficient compressed format for java archive files. In CASCON'98 (November/December 1998), pp. 294-302.
[7]
CALDER, B., KRINTZ, C., AND HOLZLE, U. Reducing transfer delay using java class file splitting and prefetching. In these proceedings.
[8]
DEAN, J., GROVE, D., AND CHAMBERS, C. Optimization of object-oriented programs using static class hierarchy analysis. In Proceedigns of the Ninth European Conference on Object-Oriented Programming (ECOOP'95) (Aarhus, Denmark, Aug. 1995), W. Olthoff, Ed., Springer-Verlag, pp. 77-101.
[9]
DIGITALK INC. Smalltalk/V for win32 Programming, 1993. Chapter 17: "Object Libraries and Library Builder.
[10]
GOSLING, J., Joy, B., AND STEELE, G. The Java Language Specification. Addison-Wesley, 1996.
[11]
HORSPOOL, R. N., AND CORLESS, J. Tailored compression of java class files. Software-- Practice and Experience 28, 12 (1998), 1253-1268.
[12]
IBM CORPORATION. IBM Smalltalk User's Guide, version 3, release 0 ed., 1995. Chapter 36: Introduction to Packaging, Chapter 37: "Simple Packaging, Chapter 38: " Advanced Packaging.
[13]
ISHIZAKI, K., KAWAHITO, M., YASUB, T., TAKEUCHI, M., OGASAWARA, T., SUGANUMA, T., ONODERA, T., KOMATSU, H., AND NAKATANI, T. Design, implementation, and evaluation of optimizations in a just-in-time compiler. In Proceedigns of the ACM SIGPLAN JavaGrande Conference (San Francisco, CA, June 1999).
[14]
KRINTZ, C., CALDER, B., LEE, H. B., AND ZORN, B. G. Overlapping execution with transfer using non-strict execution for mobile programs. In Proceedigns of the 8th International Conference on Architectural Support for Programming Languages and Operating Systems (San Jose, California, October 1998), pp. 159-169.
[15]
LINDHOLM, T., AND YELLIN, F. The Java Virtual Machine Specification. Addison-Wesley, 1997.
[16]
PANDE, H. D., AND RYDER, B. G. Data-flow-based virtual function resolution. In Proceedings of the Third International Symposium on Static Analysis (SAS'96) (September 1996), pp. 238-254. Springer- Verlag LNCS 1145.
[17]
PARCPLACE SYSTEMS. ParcPlace Smalltalk, ovjectworks release 4.1 ed., 1992. Section 16: Deploying an Application, Section 28: Binary Object Streaming Service.
[18]
PUGH, W. Compressing java class files. In Proceedings of the ACM SIGPLAN'99 Conference on Programming Language Design and Implementation (Atlanta, GA, May 1999), pp. 247-258. ACM SIGPLAN Notices 34(5).
[19]
SHAPIRO, M., AND HORWITZ, S. Fast and accurate flow-insensitive points-to analysis. In Conference Record of the Twenty-Fourth ACM Symposium on Principles of Programming Languages (Paris, France, 1997), pp. 1-14.
[20]
STEENSGAARD, B. Points-to analysis in almost linear time. In Proceedings of the Twenty-Third ACM Symposium on Principles of Programming Languages (St. Petersburg, FL, January 1996), pp. 32-41.
[21]
SWEENEY, P. F., AND TIP, F. A study of dead data members in C++ applications. In Proceedings of the ACM SIGPLAN'98 Conference on Programming Language Design and Implementation (Montreal, Canada, June 1998), pp. 324-332. ACM SIGPLAN Notices 33(6).
[22]
TIP, F., CHOI, J.-D., FIELD, J., AND RAMALINGAM, G. Slicing class hierarchies in C++. In Proceedings of the Eleventh Annual Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA'96) (San Jose, CA, 1996), pp. 179-197. ACM SIGPLAN Notices 31(10).
[23]
TIP, F., AND SWEENEY, P. Class hierarchy specialization. In Proceedings of the Twelfth Annual Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA '97) (Atlanta, GA, 1997), pp. 271-285. ACM SIGPLAN Notices 32(10).
[24]
TIP, F., AND SWEENEY, P. F. Class hierarchy specialization. Tech. rep. RC21111, IBM T.J. Watson Research Center, February 1998.

Cited By

View all
  • (2024)Performance Study of Kotlin and Java Programs with Bytecode AnalysisJournal of Information Processing10.2197/ipsjjip.32.38032(380-395)Online publication date: 2024
  • (2024)Assessing Reflection Usage with Mutation Testing Augmented AnalysisReuse and Software Quality10.1007/978-3-031-66459-5_7(105-122)Online publication date: 19-Jun-2024
  • (2023)Coverage-Based Debloating for Java BytecodeACM Transactions on Software Engineering and Methodology10.1145/354694832:2(1-34)Online publication date: 4-Apr-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
OOPSLA '99: Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
October 1999
462 pages
ISBN:1581132387
DOI:10.1145/320384
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 October 1999

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Conference

OOPSLA99
Sponsor:

Acceptance Rates

OOPSLA '99 Paper Acceptance Rate 30 of 152 submissions, 20%;
Overall Acceptance Rate 268 of 1,244 submissions, 22%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)119
  • Downloads (Last 6 weeks)29
Reflects downloads up to 20 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Performance Study of Kotlin and Java Programs with Bytecode AnalysisJournal of Information Processing10.2197/ipsjjip.32.38032(380-395)Online publication date: 2024
  • (2024)Assessing Reflection Usage with Mutation Testing Augmented AnalysisReuse and Software Quality10.1007/978-3-031-66459-5_7(105-122)Online publication date: 19-Jun-2024
  • (2023)Coverage-Based Debloating for Java BytecodeACM Transactions on Software Engineering and Methodology10.1145/354694832:2(1-34)Online publication date: 4-Apr-2023
  • (2023)Automatic Specialization of Third-Party Java DependenciesIEEE Transactions on Software Engineering10.1109/TSE.2023.332495049:11(5027-5045)Online publication date: Nov-2023
  • (2023)PExReport: Automatic Creation of Pruned Executable Cross-Project Failure Reports2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE)10.1109/ICSE48619.2023.00027(184-195)Online publication date: May-2023
  • (2022)Stubbifier: debloating dynamic server-side JavaScript applicationsEmpirical Software Engineering10.1007/s10664-022-10195-627:7Online publication date: 1-Dec-2022
  • (2021)Logical bytecode reductionProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454091(1003-1016)Online publication date: 19-Jun-2021
  • (2021)On the real-world effectiveness of static bug detectors at finding null pointer exceptionsProceedings of the 36th IEEE/ACM International Conference on Automated Software Engineering10.1109/ASE51524.2021.9678535(292-303)Online publication date: 15-Nov-2021
  • (2020)JShrink: in-depth investigation into debloating modern Java applicationsProceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3368089.3409738(135-146)Online publication date: 8-Nov-2020
  • (2019)Initialize once, start fast: application initialization at build timeProceedings of the ACM on Programming Languages10.1145/33606103:OOPSLA(1-29)Online publication date: 10-Oct-2019
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media