首页> 外文期刊>Automated software engineering >Improving static resolution of dynamic class loading in Java using dynamically gathered environment information
【24h】

Improving static resolution of dynamic class loading in Java using dynamically gathered environment information

机译:使用动态收集的环境信息提高Java中动态类加载的静态分辨率

获取原文
获取原文并翻译 | 示例

摘要

In Java software, one important flexibility mechanism is dynamic class loading. Unfortunately, the vast majority of static analyses for Java treat dynamic class loading either unsoundly or too conservatively. We present a novel semi-static approach for resolving dynamic class loading by combining static string analysis with dynamically gathered information about the execution environment. The insight behind the approach is that dynamic class loading often depends on characteristics of the environment that are encoded in various environment variables. Such variables are not static elements; however, their run-time values typically remain the same across multiple executions of the application. Thus, the string values reported by our technique are tailored to the current installation of the system under analysis. Additionally, we propose extensions of string analysis to increase the number of sites that can be resolved purely statically, and to track the names of environment variables. An experimental evaluation on the Java 1.4 standard libraries shows that a state-of-the-art purely static approach resolves only 28% of non-trivial sites, while our approach resolves 74% of such sites. We also demonstrate how the information gained from resolved dynamic class loading can be used to determine the classes that can potentially be instantiated through the use of reflection. Our extensions of string analysis greatly increase the number of resolvable reflective instantiation sites. This work is a step towards making static analysis tools better equipped to handle the dynamic features of Java.
机译:在Java软件中,一种重要的灵活性机制是动态类加载。不幸的是,绝大多数针对Java的静态分析对动态类加载的处理都不合理或过于保守。我们通过结合静态字符串分析与动态收集的有关执行环境的信息,提出了一种解决动态类加载的新型半静态方法。该方法背后的见解是动态类加载通常取决于以各种环境变量编码的环境特征。这样的变量不是静态元素。但是,它们的运行时值在应用程序的多次执行中通常保持不变。因此,我们的技术报告的字符串值适合于正在分析的系统的当前安装。此外,我们建议扩展字符串分析,以增加可以完全静态解决的站点数量,并跟踪环境变量的名称。对Java 1.4标准库的实验评估表明,最先进的纯静态方法仅可解决28%的非重要站点,而我们的方法可解决74%的此类站点。我们还演示了如何从解析的动态类加载中获得的信息可用于确定可以通过使用反射实例化的类。我们对字符串分析的扩展极大地增加了可解析的反射实例化站点的数量。这项工作是朝着使静态分析工具更好地适应Java的动态功能迈出的一步。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号