首页 > 最新文献

Principles and Practice of Programming in Java最新文献

英文 中文
The potential of speculative class-loading 投机性类加载的可能性
Pub Date : 2007-09-05 DOI: 10.1145/1294325.1294354
Dmitrijs Zaparanuks, M. Jovic, Matthias Hauswirth
Platforms such as Java provide many software engineering benefits. However, these benefits often come at the cost of significant runtime overhead. In this paper we study the potential for hiding some of that overhead by employing speculative execution techniques. In particular, we study the predictability of class-loading requests and the potential benefits of speculatively preloading classes in interactive applications.
诸如Java之类的平台提供了许多软件工程方面的好处。然而,这些好处往往是以显著的运行时开销为代价的。在本文中,我们研究了通过使用推测执行技术来隐藏部分开销的可能性。特别地,我们研究了类加载请求的可预测性,以及在交互式应用程序中推测性预加载类的潜在好处。
{"title":"The potential of speculative class-loading","authors":"Dmitrijs Zaparanuks, M. Jovic, Matthias Hauswirth","doi":"10.1145/1294325.1294354","DOIUrl":"https://doi.org/10.1145/1294325.1294354","url":null,"abstract":"Platforms such as Java provide many software engineering benefits. However, these benefits often come at the cost of significant runtime overhead. In this paper we study the potential for hiding some of that overhead by employing speculative execution techniques. In particular, we study the predictability of class-loading requests and the potential benefits of speculatively preloading classes in interactive applications.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"379 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131999822","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
A Java mobile-enabled environment to access adaptive services 支持Java移动设备的环境,用于访问自适应服务
Pub Date : 2007-09-05 DOI: 10.1145/1294325.1294361
S. Ceriani, C. Raibulet, Luigi Ubezio
Today information systems provide services which may be accessed through various types of devices and/or networks and from different locations. Services should be adapted at runtime to the features of the requiring device. Moreover, users may specify additional information when claiming for services, information through which they indicate the quality level required and expected from the provided services. For example, users may request the printing of an image by specifying also the expected resolution, format and/or number of colors. In this context, we propose a mobile-enabled approach to design and implement adaptable services. Our solution defines three different service layers: (1) a low-level network communication layer providing connectivity services among the peers available in a system, (2) a middleware managing the system-specific services and defining a communication protocol for the services requests, and (3) a high-level application layer dealing with domain-specific services. In this paper, attention is focused on the middleware and network communication layers.
今天,信息系统提供的服务可以通过各种类型的设备和/或网络,从不同的地点访问。服务应该在运行时适应所需设备的特性。此外,用户在申请服务时可以指定额外的信息,通过这些信息,他们可以表明所提供的服务所要求和期望的质量水平。例如,用户可以通过指定期望的分辨率、格式和/或颜色数量来请求打印图像。在这种情况下,我们提出了一种支持移动的方法来设计和实现适应性服务。我们的解决方案定义了三个不同的服务层:(1)低级网络通信层,提供系统中可用的对等点之间的连接服务;(2)中间件,管理特定于系统的服务,并为服务请求定义通信协议;(3)高级应用层,处理特定于领域的服务。本文重点研究了中间件层和网络通信层。
{"title":"A Java mobile-enabled environment to access adaptive services","authors":"S. Ceriani, C. Raibulet, Luigi Ubezio","doi":"10.1145/1294325.1294361","DOIUrl":"https://doi.org/10.1145/1294325.1294361","url":null,"abstract":"Today information systems provide services which may be accessed through various types of devices and/or networks and from different locations. Services should be adapted at runtime to the features of the requiring device. Moreover, users may specify additional information when claiming for services, information through which they indicate the quality level required and expected from the provided services. For example, users may request the printing of an image by specifying also the expected resolution, format and/or number of colors.\u0000 In this context, we propose a mobile-enabled approach to design and implement adaptable services. Our solution defines three different service layers: (1) a low-level network communication layer providing connectivity services among the peers available in a system, (2) a middleware managing the system-specific services and defining a communication protocol for the services requests, and (3) a high-level application layer dealing with domain-specific services. In this paper, attention is focused on the middleware and network communication layers.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"75 5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132087089","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Towards intelligent analysis techniques for object pretenuring 面向对象伪装的智能分析技术
Pub Date : 2007-09-05 DOI: 10.1145/1294325.1294353
Jeremy Singer, Gavin Brown, M. Luján, I. Watson
Object pretenuring involves the identification of long-lived objects at or before their instantiation. It is a key optimization for generational garbage collection systems, which are standard in most high performance Java virtual machines. This paper presents a new study of factors that are used to indicate object lifespans. We adopt the information theory measurement of normalized mutual information to compare these various different factors in a common framework. A study of garbage collection traces from four standard Java benchmark programs shows that there is high dependence on some of these factors such as allocation site and object type. We also identify and measure new factors based on object-oriented metrics.
对象伪装涉及在实例化时或实例化之前对长寿命对象的识别。它是分代垃圾收集系统的关键优化,分代垃圾收集系统是大多数高性能Java虚拟机的标准配置。这篇论文提出了一项新的研究,用于表明物体寿命的因素。我们采用归一化互信息的信息论度量来比较这些不同的因素在一个共同的框架内。对四个标准Java基准程序的垃圾收集跟踪的研究表明,其中一些因素(如分配位置和对象类型)高度依赖。我们还基于面向对象的度量来识别和度量新的因素。
{"title":"Towards intelligent analysis techniques for object pretenuring","authors":"Jeremy Singer, Gavin Brown, M. Luján, I. Watson","doi":"10.1145/1294325.1294353","DOIUrl":"https://doi.org/10.1145/1294325.1294353","url":null,"abstract":"Object pretenuring involves the identification of long-lived objects at or before their instantiation. It is a key optimization for generational garbage collection systems, which are standard in most high performance Java virtual machines. This paper presents a new study of factors that are used to indicate object lifespans. We adopt the information theory measurement of normalized mutual information to compare these various different factors in a common framework. A study of garbage collection traces from four standard Java benchmark programs shows that there is high dependence on some of these factors such as allocation site and object type. We also identify and measure new factors based on object-oriented metrics.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125770411","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 18
The design of a Java phone programming environment 设计了一个Java手机编程环境
Pub Date : 2007-09-05 DOI: 10.1145/1294325.1294330
R. Cook
Mobile phones present unique challenges to the implementation of a self-contained programming environment. The paper details the design of the M scripting environment for mobile phones. The goal of the environment is to make the breadth and power of the Java libraries available to anyone with a Java-enabled phone. The paper lists some of the design problems that were encountered together with the M solution. M is the only self-contained programming environment for cell phones that executes on cell phones.
移动电话对自包含编程环境的实现提出了独特的挑战。本文详细介绍了手机M脚本环境的设计。该环境的目标是使任何拥有支持Java的手机的人都可以使用Java库的广度和功能。本文列举了一些与M解一起遇到的设计问题。M是唯一一个在移动电话上执行的自包含的移动电话编程环境。
{"title":"The design of a Java phone programming environment","authors":"R. Cook","doi":"10.1145/1294325.1294330","DOIUrl":"https://doi.org/10.1145/1294325.1294330","url":null,"abstract":"Mobile phones present unique challenges to the implementation of a self-contained programming environment. The paper details the design of the M scripting environment for mobile phones. The goal of the environment is to make the breadth and power of the Java libraries available to anyone with a Java-enabled phone. The paper lists some of the design problems that were encountered together with the M solution. M is the only self-contained programming environment for cell phones that executes on cell phones.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114952081","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Array bounds check elimination for the Java HotSpot#8482; client compiler Java热点#8482的数组边界检查消除客户机编译器
Pub Date : 2007-09-05 DOI: 10.1145/1294325.1294343
Thomas Würthinger, Christian Wimmer, H. Mössenböck
Whenever an array element is accessed, Java virtual machines execute a compare instruction to ensure that the index value is within the valid bounds. This reduces the execution speed of Java programs. Array bounds check elimination identifies situations in which such checks are redundant and can be removed. We present an array bounds check elimination algorithm for the Java HotSpot#8482; VM based on static analysis in the just-in-time compiler. The algorithm works on an intermediate representation in static single assignment form and maintains conditions for index expressions. It fully removes bounds checks if it can be proven that they never fail. Whenever possible, it moves bounds checks out of loops. The static number of checks remains the same, but a check inside a loop is likely to be executed more often. If such a check fails, the executing program falls back to interpreted mode, avoiding the problem that an exception is thrown at the wrong place. The evaluation shows a speedup near to the theoretical maximum for the scientific SciMark benchmark suite (40% on average). The algorithm also improves the execution speed for the SPECjvm98 benchmark suite (2% on average, 12% maximum).
每当访问数组元素时,Java虚拟机都会执行比较指令,以确保索引值在有效范围内。这降低了Java程序的执行速度。数组边界检查消除识别这种检查是多余的并且可以删除的情况。提出了一种用于Java HotSpot#8482的数组边界检查消除算法;在实时编译器中基于静态分析的VM。该算法处理静态单赋值形式的中间表示,并维护索引表达式的条件。如果可以证明边界检查永远不会失败,则完全取消边界检查。只要有可能,它就会将边界检查移出循环。检查的静态数量保持不变,但循环内的检查可能会更频繁地执行。如果这样的检查失败,执行的程序就会退回到解释模式,从而避免在错误的位置抛出异常的问题。评估显示,科学SciMark基准套件的加速接近理论最大值(平均为40%)。该算法还提高了SPECjvm98基准套件的执行速度(平均2%,最高12%)。
{"title":"Array bounds check elimination for the Java HotSpot#8482; client compiler","authors":"Thomas Würthinger, Christian Wimmer, H. Mössenböck","doi":"10.1145/1294325.1294343","DOIUrl":"https://doi.org/10.1145/1294325.1294343","url":null,"abstract":"Whenever an array element is accessed, Java virtual machines execute a compare instruction to ensure that the index value is within the valid bounds. This reduces the execution speed of Java programs. Array bounds check elimination identifies situations in which such checks are redundant and can be removed. We present an array bounds check elimination algorithm for the Java HotSpot#8482; VM based on static analysis in the just-in-time compiler.\u0000 The algorithm works on an intermediate representation in static single assignment form and maintains conditions for index expressions. It fully removes bounds checks if it can be proven that they never fail. Whenever possible, it moves bounds checks out of loops. The static number of checks remains the same, but a check inside a loop is likely to be executed more often. If such a check fails, the executing program falls back to interpreted mode, avoiding the problem that an exception is thrown at the wrong place.\u0000 The evaluation shows a speedup near to the theoretical maximum for the scientific SciMark benchmark suite (40% on average). The algorithm also improves the execution speed for the SPECjvm98 benchmark suite (2% on average, 12% maximum).","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128577832","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 56
A DSL approach for object memory management of small devices 小型设备对象内存管理的DSL方法
Pub Date : 2007-09-05 DOI: 10.1145/1294325.1294346
K. Marquet, G. Grimaud
Small devices have a specific hardware configuration. In particular, they usually include several types of memories (typically ROM, internal and external RAM, Flash memory) different in quantities and properties. We propose an object memory management where the placement of an object in a given generation is based on different properties. This approach is supported by a domain specific language allowing to write powerful and flexible placement policies. These placement policies completely describe the placement, in the different memories, of the objects handled by the virtual machine.
小型设备具有特定的硬件配置。特别是,它们通常包括几种类型的存储器(通常是ROM,内部和外部RAM,闪存)在数量和属性上不同。我们提出了一种对象内存管理,其中对象在给定代中的位置基于不同的属性。该方法由特定于领域的语言支持,允许编写强大而灵活的放置策略。这些放置策略完全描述了由虚拟机处理的对象在不同内存中的放置。
{"title":"A DSL approach for object memory management of small devices","authors":"K. Marquet, G. Grimaud","doi":"10.1145/1294325.1294346","DOIUrl":"https://doi.org/10.1145/1294325.1294346","url":null,"abstract":"Small devices have a specific hardware configuration. In particular, they usually include several types of memories (typically ROM, internal and external RAM, Flash memory) different in quantities and properties. We propose an object memory management where the placement of an object in a given generation is based on different properties. This approach is supported by a domain specific language allowing to write powerful and flexible placement policies. These placement policies completely describe the placement, in the different memories, of the objects handled by the virtual machine.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"65 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127990106","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 5
Redundant boxing elimination by a dynamic compiler for Java 由Java动态编译器消除冗余装箱
Pub Date : 2007-09-05 DOI: 10.1145/1294325.1294355
Y. Chiba
Auto-boxing improves code readability by eliminating the need for explicit boxing code, but it does not improve performance, because it does not eliminate boxing code but inserts the code implicitly. Current auto-boxing implementations try to improve performance by caching some of the boxed values in order to avoid wrapper class instance allocation on each boxing operation. Such an implementation, however, sometimes suffers greater performance degradation because it prevents traditional optimizations, such as redundant instance allocation elimination. This paper presents a new optimizing technique that eliminates the boxing code inserted by auto-boxing if the code is found redundant. Estimation using the SPECjbb2005 benchmark showed that this optimization improved performance by 3.6%.
自动装箱通过消除对显式装箱代码的需要来提高代码的可读性,但它并没有提高性能,因为它没有消除装箱代码,而是隐式地插入代码。当前的自动装箱实现试图通过缓存一些装箱值来提高性能,以避免在每个装箱操作上分配包装器类实例。然而,这样的实现有时会遭受更大的性能下降,因为它阻止了传统的优化,例如消除冗余实例分配。本文提出了一种新的优化技术,可以消除自动装箱插入的冗余装箱代码。使用SPECjbb2005基准进行的估计表明,这种优化将性能提高了3.6%。
{"title":"Redundant boxing elimination by a dynamic compiler for Java","authors":"Y. Chiba","doi":"10.1145/1294325.1294355","DOIUrl":"https://doi.org/10.1145/1294325.1294355","url":null,"abstract":"Auto-boxing improves code readability by eliminating the need for explicit boxing code, but it does not improve performance, because it does not eliminate boxing code but inserts the code implicitly. Current auto-boxing implementations try to improve performance by caching some of the boxed values in order to avoid wrapper class instance allocation on each boxing operation. Such an implementation, however, sometimes suffers greater performance degradation because it prevents traditional optimizations, such as redundant instance allocation elimination. This paper presents a new optimizing technique that eliminates the boxing code inserted by auto-boxing if the code is found redundant. Estimation using the SPECjbb2005 benchmark showed that this optimization improved performance by 3.6%.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"23 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131067946","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 9
Extending and contributing to an open source web-based system for the assessment of programming problems 扩展和贡献一个开源的基于web的系统来评估编程问题
Pub Date : 2007-09-05 DOI: 10.1145/1294325.1294327
O. Gotel, C. Scharff, A. Wildenberg
This paper describes the development of a web-based programming and assessment environment for use in supporting programming fundamentals courses (CS1, CS2) taught in Java. This environment is currently linked with WeBWorK, an open source web-based system developed at the University of Rochester that is popular for administering and assessing mathematics and physics coursework, but is designed for the potential integration with other course management system (CMS) environments. In addition to the traditional multiple-choice and short answer questions that have been augmented with the extensive randomization and customization routines of WeBWorK, this new environment (called WeBWorK-JAG where JAG stands for Java Auto Grader) can automatically collect and grade free-form program fragments written in Java. Novel pedagogy has been developed based on the capabilities of this extension and preliminary classroom results are discussed in this paper. For example, when students contributed to WeBWorK by creating WeBWorK-JAG questions for their peers, they are exposed to the reality of creating comprehensive unit tests and to the wider quality assurance aspects of formulating questions and their solution sets. This work is described in the context of an emerging commercial market for web-based programming assistants and its unique contributions are summarized.
本文描述了一个基于web的编程和评估环境的开发,用于支持Java编程基础课程(CS1, CS2)。该环境目前与WeBWorK相关联,WeBWorK是罗切斯特大学开发的一个基于web的开源系统,用于管理和评估数学和物理课程作业,但设计用于与其他课程管理系统(CMS)环境的潜在集成。除了传统的选择题和简答题(这些问题已经被WeBWorK的广泛随机化和自定义例程所增强)之外,这个新环境(称为WeBWorK-JAG,其中JAG代表Java自动评分器)可以自动收集和评分用Java编写的自由格式的程序片段。基于这种扩展的能力,新的教学方法已经被开发出来,并在本文中讨论了初步的课堂结果。例如,当学生通过为他们的同伴创建WeBWorK- jag问题来为WeBWorK做出贡献时,他们就暴露在创建全面单元测试的现实中,并暴露在制定问题及其解决方案集的更广泛的质量保证方面。这项工作是在基于web的编程助手的新兴商业市场背景下描述的,并总结了其独特的贡献。
{"title":"Extending and contributing to an open source web-based system for the assessment of programming problems","authors":"O. Gotel, C. Scharff, A. Wildenberg","doi":"10.1145/1294325.1294327","DOIUrl":"https://doi.org/10.1145/1294325.1294327","url":null,"abstract":"This paper describes the development of a web-based programming and assessment environment for use in supporting programming fundamentals courses (CS1, CS2) taught in Java. This environment is currently linked with WeBWorK, an open source web-based system developed at the University of Rochester that is popular for administering and assessing mathematics and physics coursework, but is designed for the potential integration with other course management system (CMS) environments. In addition to the traditional multiple-choice and short answer questions that have been augmented with the extensive randomization and customization routines of WeBWorK, this new environment (called WeBWorK-JAG where JAG stands for Java Auto Grader) can automatically collect and grade free-form program fragments written in Java. Novel pedagogy has been developed based on the capabilities of this extension and preliminary classroom results are discussed in this paper. For example, when students contributed to WeBWorK by creating WeBWorK-JAG questions for their peers, they are exposed to the reality of creating comprehensive unit tests and to the wider quality assurance aspects of formulating questions and their solution sets. This work is described in the context of an emerging commercial market for web-based programming assistants and its unique contributions are summarized.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"28 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121314567","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 20
Implementing fast JVM interpreters using Java itself 使用Java本身实现快速JVM解释器
Pub Date : 2007-09-05 DOI: 10.1145/1294325.1294345
Michael Bebenita, A. Gal, M. Franz
Most Java Virtual Machines (JVMs) are themselves written in unsafe languages, making it unduly difficult to build trustworthy and safe JVM platforms. While some progress has been made on removing compilers from the trusted computing base (using certifying compilation), JVM interpreters continue to be built almost exclusively in C/C++. We have implemented an alternative approach, in which the JVM interpreter itself is built in Java, and runs atop a host JVM execution environment. Despite benefiting from the additional safety guarantees of the JVM runtime system, the execution overhead of our nested Java interpreter is quite acceptable in practice. Our results suggest that implementors should concentrate their efforts on optimizing just-in-time compilers rather than on interpreters. If a mixed-mode VM environment is desired, a generic JVM interpreter can subsequently be created using Java itself.
大多数Java虚拟机(JVM)本身都是用不安全的语言编写的,这使得构建可信和安全的JVM平台变得异常困难。虽然在将编译器从可信计算基础中移除(使用认证编译)方面已经取得了一些进展,但JVM解释器仍然几乎完全用C/ c++构建。我们实现了另一种方法,即JVM解释器本身是用Java构建的,并运行在主机JVM执行环境之上。尽管受益于JVM运行时系统的额外安全保证,但嵌套Java解释器的执行开销在实践中是完全可以接受的。我们的结果表明,实现者应该把精力集中在优化即时编译器而不是解释器上。如果需要混合模式VM环境,则随后可以使用Java本身创建通用JVM解释器。
{"title":"Implementing fast JVM interpreters using Java itself","authors":"Michael Bebenita, A. Gal, M. Franz","doi":"10.1145/1294325.1294345","DOIUrl":"https://doi.org/10.1145/1294325.1294345","url":null,"abstract":"Most Java Virtual Machines (JVMs) are themselves written in unsafe languages, making it unduly difficult to build trustworthy and safe JVM platforms. While some progress has been made on removing compilers from the trusted computing base (using certifying compilation), JVM interpreters continue to be built almost exclusively in C/C++. We have implemented an alternative approach, in which the JVM interpreter itself is built in Java, and runs atop a host JVM execution environment. Despite benefiting from the additional safety guarantees of the JVM runtime system, the execution overhead of our nested Java interpreter is quite acceptable in practice. Our results suggest that implementors should concentrate their efforts on optimizing just-in-time compilers rather than on interpreters. If a mixed-mode VM environment is desired, a generic JVM interpreter can subsequently be created using Java itself.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"35 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114483143","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
A software metric for coherence of class roles in Java programs Java程序中类角色一致性的软件度量
Pub Date : 2007-09-05 DOI: 10.1145/1294325.1294333
S. Mäkelä, V. Leppänen
The purpose of software metrics is to measure the quality of programs. The results can be for example used to predict maintenance costs or improve code quality. An emerging view is that if software metrics are going to be used to improve quality, they must help in finding code that should be refactored. Often refactoring or applying a design pattern is related to the role of the class to be refactored. In client-based metrics, a project gives the class a context. These metrics measure, how a class is used by other classes in the context. We present a new client-based metric LCIC (Lack of Coherence in Clients), which analyses, if the class being measured has a coherent set of roles in the program. Interfaces represent the roles of classes. If a class does not have a coherent set of roles, it should be refactored, or a new interface should be defined for the class. We have implemented a tool for measuring the metric LCIC for Java projects in the Eclipse environment. We calculated LCIC values for classes of several open source projects. We compare these results with results of other related metrics, and inspect the measured classes to find out, what kind of refactorings are needed. We also analyse the relation of different design patterns and refactorings to our metric. Our experiments reveal the usefulness of client-based metrics to improve the quality of code.
软件度量的目的是度量程序的质量。例如,结果可用于预测维护成本或提高代码质量。一种新兴的观点是,如果软件度量要用来提高质量,它们必须帮助找到应该重构的代码。重构或应用设计模式通常与要重构的类的角色相关。在基于客户端的度量中,项目为类提供了上下文。这些指标衡量一个类如何被上下文中的其他类使用。我们提出了一个新的基于客户端的度量LCIC(客户端缺乏一致性),它分析被测量的类在程序中是否具有一组一致的角色。接口代表类的角色。如果一个类没有一组一致的角色,就应该重构它,或者为这个类定义一个新的接口。我们已经实现了一个工具,用于在Eclipse环境中度量Java项目的度量LCIC。我们计算了几个开源项目类的LCIC值。我们将这些结果与其他相关指标的结果进行比较,并检查被测量的类,以找出需要什么样的重构。我们还分析了不同的设计模式和重构与我们的度量的关系。我们的实验揭示了基于客户端的度量对于提高代码质量的有用性。
{"title":"A software metric for coherence of class roles in Java programs","authors":"S. Mäkelä, V. Leppänen","doi":"10.1145/1294325.1294333","DOIUrl":"https://doi.org/10.1145/1294325.1294333","url":null,"abstract":"The purpose of software metrics is to measure the quality of programs. The results can be for example used to predict maintenance costs or improve code quality. An emerging view is that if software metrics are going to be used to improve quality, they must help in finding code that should be refactored. Often refactoring or applying a design pattern is related to the role of the class to be refactored. In client-based metrics, a project gives the class a context. These metrics measure, how a class is used by other classes in the context. We present a new client-based metric LCIC (Lack of Coherence in Clients), which analyses, if the class being measured has a coherent set of roles in the program. Interfaces represent the roles of classes. If a class does not have a coherent set of roles, it should be refactored, or a new interface should be defined for the class.\u0000 We have implemented a tool for measuring the metric LCIC for Java projects in the Eclipse environment. We calculated LCIC values for classes of several open source projects. We compare these results with results of other related metrics, and inspect the measured classes to find out, what kind of refactorings are needed. We also analyse the relation of different design patterns and refactorings to our metric. Our experiments reveal the usefulness of client-based metrics to improve the quality of code.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127895976","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 7
期刊
Principles and Practice of Programming in Java
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1