2020
DOI: 10.48550/arxiv.2008.08401
|View full text |Cite
Preprint
|
Sign up to set email alerts
|

Coverage-Based Debloating for Java Bytecode

Abstract: Software bloat is code that is packaged in an application but is actually not used and not necessary to run the application. The presence of bloat is an issue for software security, for performance, and for maintenance. In recent years, several works have proposed techniques to detect and remove software bloat. In this paper, we introduce a novel technique to debloat Java bytecode through dynamic analysis, which we call trace-based debloat. We have developed JDBL, a tool that automates the collection of accura… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
4
0

Year Published

2021
2021
2022
2022

Publication Types

Select...
3

Relationship

2
1

Authors

Journals

citations
Cited by 3 publications
(4 citation statements)
references
References 36 publications
(42 reference statements)
0
4
0
Order By: Relevance
“…Runtimes were not designed for serverless architectures and recent optimizations for Java [25] and .NET [62] achieve large speedups of up to 10×, though sometimes at the cost of more memory usage or larger deployment sizes. Debloating system stacks [36] and application dependencies [68] is another promising optimization motivated by large initialization overheads for applications with large dependency trees (e.g., App-E and App-J). Alternatively, serverless developers can select languages with lower runtime initialization overhead, such as Golang [46].…”
Section: Discussionmentioning
confidence: 99%
“…Runtimes were not designed for serverless architectures and recent optimizations for Java [25] and .NET [62] achieve large speedups of up to 10×, though sometimes at the cost of more memory usage or larger deployment sizes. Debloating system stacks [36] and application dependencies [68] is another promising optimization motivated by large initialization overheads for applications with large dependency trees (e.g., App-E and App-J). Alternatively, serverless developers can select languages with lower runtime initialization overhead, such as Golang [46].…”
Section: Discussionmentioning
confidence: 99%
“…Similarly, we observed that the number of bloated dependencies tends to grow over time, whether or not there is a need for it. In the last years, there is a recent resurgence of interest in debloating Java bytecode [5,14,20,28,29]. These tools remove Java bytecode using static and dynamic analysis.…”
Section: Related Workmentioning
confidence: 99%
“…The test-suite of the clients can also be used as further validation of modifications performed on the library. This is the type of usage that we leverage in our recent work [6], where we debloat libraries and verify that the compilation and the execution of their clients' tests are not affected. Hence, having information regarding library usage by clients is useful for validating program transformation since it provides dynamic data that helps to overcome the limitations of static analysis in Java.…”
Section: A Pairs Of Libraries and Clientsmentioning
confidence: 99%
“…In general, many program analyses require a list of compilable and testable software packages, which we provide with DUETS. The dataset also supports more specific use cases, such as analyzing the API usage by the clients of a particular library [5], or debloating based on dynamic analysis [6], [7]. We provide a framework with the dataset.…”
Section: Introductionmentioning
confidence: 99%