Trace-based Debloat for Java Bytecode

08/19/2020
by   César Soto Valero, et al.
0

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 accurate execution traces and the debloating process. Given a Java project and a workload, JDBL generates a debloated version of the project that is syntactically correct and preserves the original behavior, modulo the workload. We evaluate the feasibility and the effectiveness of trace-based debloat with 395 open-source Java libraries for a total 10M+ lines of code. We demonstrate that our approach significantly reduces the size of these libraries while preserving the functionalities needed by their clients.

READ FULL TEXT

page 12

page 18

research
02/16/2023

Automatic Specialization of Third-Party Java Dependencies

Modern software systems rely on a multitude of third-party dependencies....
research
10/08/2022

Towards the Detection of Malicious Java Packages

Open-source software supply chain attacks aim at infecting downstream us...
research
01/21/2020

A Comprehensive Study of Bloated Dependencies in the Maven Ecosystem

Build automation tools and package managers have a profound influence on...
research
08/24/2017

A Story of Parametric Trace Slicing, Garbage and Static Analysis

This paper presents a proposal (story) of how statically detecting unrea...
research
03/27/2021

NMRPy: a novel NMR scripting system to implement artificial intelligence and advanced applications

Background: Software is an important windows to offer a variety of compl...
research
05/23/2020

A Comprehensive Study on Software Aging across Android Versions and Vendors

This paper analyzes the phenomenon of software aging - namely, the gradu...
research
06/14/2017

Understanding and Analyzing Java Reflection

Java reflection has been increasingly used in a wide range of software. ...

Please sign up or login with your details

Forgot password? Click here to reset