Principles and Practice of Programming in Java最新文献

筛选
英文 中文
Local redundant polymorphism query elimination 本地冗余多态性查询消除
Principles and Practice of Programming in Java Pub Date : 2010-09-15 DOI: 10.1145/1852761.1852773
Rhodes H. F. Brown, R. Horspool
{"title":"Local redundant polymorphism query elimination","authors":"Rhodes H. F. Brown, R. Horspool","doi":"10.1145/1852761.1852773","DOIUrl":"https://doi.org/10.1145/1852761.1852773","url":null,"abstract":"Dynamic polymorphism is a powerful yet costly feature of object-oriented programming languages. To improve performance, several techniques have been developed to simplify or remove polymorphism operations when they are not needed. However, these techniques have little effect on sites that are actively polymorphic.\u0000 In this paper we present an alternate approach to the optimization of operations such as virtual dispatches and type tests. Rather than attempt to eliminate the polymorphism mechanism, we identify situations where resolved type and method information can be shared across multiple polymorphism operations. In short, we perform a partial redundancy elimination transform over the loads and tests that constitute polymorphism queries.\u0000 We describe the realization of our technique in the Jikes RVM and present its effects on the DACAPO and SPECJVM98 benchmarks. Rigorous measurements show a mean improvement, including several statistically significant results, over a configuration with no dispatch optimization and over one that employs guarded inlining. We underscore the potential of our approach by demonstrating speedups of up to 14% on a highly polymorphic benchmark.\u0000 Our results show the approach is both successful and complementary to techniques that focus on degenerate polymorphism.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"18 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124753255","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
Tool demonstration: a toolkit for architecture-centric software development 工具演示:用于以体系结构为中心的软件开发的工具包
Principles and Practice of Programming in Java Pub Date : 2010-09-15 DOI: 10.1145/1852761.1852784
Georg Buchgeher, R. Weinreich
{"title":"Tool demonstration: a toolkit for architecture-centric software development","authors":"Georg Buchgeher, R. Weinreich","doi":"10.1145/1852761.1852784","DOIUrl":"https://doi.org/10.1145/1852761.1852784","url":null,"abstract":"Current software development environments lack support for architecture-related activities like architecture design, analysis, and architecture knowledge management. We present a toolkit supporting architecture-centric development. The toolkit is an extension of the Eclipse IDE and supports architecture-related activities during the whole software life cycle, from analysis to design, implementation, and maintenance. It provides multiple views for capturing architectural knowledge, and for architecture modeling and visualization. Incremental development and consistency between architecture and system implementation are supported through continuous forward and reverse engineering. Capturing architectural knowledge supports tracing from requirements to architecture and implementation.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"122 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123449210","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
Visualization of software architecture graphs of Java systems: managing propagated low level dependencies Java系统软件架构图的可视化:管理传播的低级依赖关系
Principles and Practice of Programming in Java Pub Date : 2010-09-15 DOI: 10.1145/1852761.1852783
L. Schrettner, Lajos Jeno Fülöp, R. Ferenc, T. Gyimóthy
{"title":"Visualization of software architecture graphs of Java systems: managing propagated low level dependencies","authors":"L. Schrettner, Lajos Jeno Fülöp, R. Ferenc, T. Gyimóthy","doi":"10.1145/1852761.1852783","DOIUrl":"https://doi.org/10.1145/1852761.1852783","url":null,"abstract":"The availability of up-to-date documentation of the architecture is crucial for software maintenance tasks, but it is often missing or differs from the implemented architecture. An increasingly popular and feasible way to get a clear picture of the architecture is to reconstruct it from the source code. The result of the reconstruction procedure is a graph with special, architecture-specific properties. Nowadays software systems are typically very large, so the reconstructed architecture contains a lot of details and is really difficult to interpret. It is important therefore to have efficient methods that help in understanding and managing the architecture graph. The purpose of these methods is to try to present the information so that it is comprehensible to the users. Two important methods are selective subtree collapsion and lifting low level dependencies of the system into higher, visible levels. These enable an architect to investigate the dependencies of system components at higher levels, without the need to deal with an enormous quantity of low-level details.\u0000 In this paper, first we overview the concepts related to lifting and present a conceptual framework that combines subtree collapsion with lifting to enable users to interactively explore and manipulate a software architecture graph. Then we define a set of algorithms that can be used to efficiently propagate dependency edges of a graph to higher levels. We also describe how the results can be integrated into SourceInventory, a software quality monitoring and visualization framework.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130688318","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}
引用次数: 6
Efficient coroutines for the Java platform Java平台的高效协同程序
Principles and Practice of Programming in Java Pub Date : 2010-09-15 DOI: 10.1145/1852761.1852765
Lukas Stadler, Thomas Würthinger, Christian Wimmer
{"title":"Efficient coroutines for the Java platform","authors":"Lukas Stadler, Thomas Würthinger, Christian Wimmer","doi":"10.1145/1852761.1852765","DOIUrl":"https://doi.org/10.1145/1852761.1852765","url":null,"abstract":"Coroutines are non-preemptive lightweight processes. Their advantage over threads is that they do not have to be synchronized because they pass control to each other explicitly and deterministically. Coroutines are therefore an elegant and efficient implementation construct for numerous algorithmic problems.\u0000 Many mainstream languages and runtime environments, however, do not provide a coroutine implementation. Even if they do, these implementations often have less than optimal performance characteristics because of the tradeoff between run time and memory efficiency.\u0000 As more and more languages are implemented on top of the Java virtual machine (JVM), many of which provide coroutinelike language features, the need for a coroutine implementation has emerged. We present an implementation of coroutines in the JVM that efficiently handles a large range of workloads. It imposes no overhead for applications that do not use coroutines and performs well for applications that do.\u0000 For evaluation purposes, we use our coroutines to implement JRuby fibers, which leads to a significant speedup of certain JRuby programs. We also present general benchmarks that show the performance of our approach and outline its run-time and memory characteristics.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"20 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114299317","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
Tool demonstration: effective runtime exploration of the inter-procedural control flow in Java applications 工具演示:Java应用程序中过程间控制流的有效运行时探索
Principles and Practice of Programming in Java Pub Date : 2010-09-15 DOI: 10.1145/1852761.1852785
Philippe Moret, Walter Binder, A. Heydarnoori, Danilo Ansaloni
{"title":"Tool demonstration: effective runtime exploration of the inter-procedural control flow in Java applications","authors":"Philippe Moret, Walter Binder, A. Heydarnoori, Danilo Ansaloni","doi":"10.1145/1852761.1852785","DOIUrl":"https://doi.org/10.1145/1852761.1852785","url":null,"abstract":"Statically exploring the inter-procedural control flow of object-oriented applications is often difficult because of the use of abstraction, polymorphism, and dynamic binding. To ease this problem, in this tool demonstration, we present a new profiler that dynamically explores the inter-procedural control flow of Java applications while they are executing. Our profiler visualizes the complete Calling Context Tree (CCT) with various dynamic metrics, such as method invocations, executed bytecodes, or allocated objects, and enables efficient navigation in large CCTs comprising up to several millions of nodes. We show that our tool can render data quite fast with response times in the range of 14--204ms upon user interactions. Thanks to a carefully tuned incremental data representation, the profiling data produced by a running application can be updated several times per second on a standard laptop. The visualization can also show recently active parts of the application. The collection of profiling data uses an aspect-based dynamic program analysis technique that simplifies extension and customization of the tool.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"51 12","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132070467","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 prototypical Java-like language with records and traits 一种带有记录和特征的原型类java语言
Principles and Practice of Programming in Java Pub Date : 2010-09-15 DOI: 10.1145/1852761.1852780
Lorenzo Bettini, Ferruccio Damiani, Ina Schaefer, Fabio Strocco
{"title":"A prototypical Java-like language with records and traits","authors":"Lorenzo Bettini, Ferruccio Damiani, Ina Schaefer, Fabio Strocco","doi":"10.1145/1852761.1852780","DOIUrl":"https://doi.org/10.1145/1852761.1852780","url":null,"abstract":"Traits have been designed as units of fine-grained behavior reuse in the object-oriented paradigm. In this paper, we present the language Sugared Welterweight Record-Trait Java (SWRTJ), a Java dialect with records and traits. Records have been devised to complement traits for fine-grained state reuse. Records and traits can be composed by explicit linguistic operations, allowing code manipulations to achieve fine-grained code reuse. Classes are assembled from (composite) records and traits and instantiated to generate objects. We present the prototypical implementation of SWRTJ using Xtext, an Eclipse framework for the development of programming languages as well as other domain-specific languages. Our implementation comprises an Eclipse-based editor for SWRTJ with typical IDE functionalities, and a stand-alone compiler, which translates SWRTJ programs into standard Java programs.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130217414","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}
引用次数: 11
Optimizing invokedynamic 优化invokedynamic
Principles and Practice of Programming in Java Pub Date : 2010-09-15 DOI: 10.1145/1852761.1852763
Christian Thalinger, J. Rose
{"title":"Optimizing invokedynamic","authors":"Christian Thalinger, J. Rose","doi":"10.1145/1852761.1852763","DOIUrl":"https://doi.org/10.1145/1852761.1852763","url":null,"abstract":"In order to support the needs of non-Java languages, the JSR 292 Expert Group has designed a new bytecode \"invokedynamic\" which allows JVM bytecodes to contain call sites with pluggable, user-defined behavior. The bytecode is accompanied by a new data type called a \"method handle\" that reifies the pluggable behavior, in the form of a functional value. The authors have been building the JSR 292 Reference Implementation on top of Oracle's HotSpot JVM. This paper describes their implementation tactics. Interesting subtopics include connecting the novel features of JSR 292 to classic HotSpot optimizations, creating new code optimization techniques for HotSpot in support of JSR 292, using Java (along with HotSpot's customary C++) as an implementation language for method handles, using internally-generated bytecodes as an intermediate language for \"freezing\" dynamic call sites before optimization, and designing specialized \"adapter\" calling sequences which match callers and callees of differing type descriptors.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129382955","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}
引用次数: 24
Headroom-based pretenuring: dynamically pretenuring objects that live "long enough" 基于headroom的假装:动态地假装存在“足够长”的对象
Principles and Practice of Programming in Java Pub Date : 2010-09-15 DOI: 10.1145/1852761.1852767
Andreas Sewe, Dingwen Yuan, Jan Sinschek, M. Mezini
{"title":"Headroom-based pretenuring: dynamically pretenuring objects that live \"long enough\"","authors":"Andreas Sewe, Dingwen Yuan, Jan Sinschek, M. Mezini","doi":"10.1145/1852761.1852767","DOIUrl":"https://doi.org/10.1145/1852761.1852767","url":null,"abstract":"Many modern garbage collectors are generational, operating under the assumption that \"most objects die young.\" Such collectors allocate all objects in a frequently collected nursery and tenure only surviving objects to a less-frequently collected, older generation. But these survivors induce copying costs upon tenuring. To avoid these costs, pretenuring schemes construct classifiers to predict whether an object will be long-lived or short-lived; accordingly, it is tenured or not immediately upon allocation. Up to now, however, these predictions did not account for one important fact: the proximity of the next collection. In contrast, headroom-based pretenuring does take this into account; thus, it can dynamically pretenure objects whenever they live \"long enough.\"\u0000 We devised two ways to estimate an object's lifetime from garbage collection traces. This led to two headroom-based pre-tenuring schemes, which we implemented on top of Jikes RVM and MMTk. Our experiments show that the dynamic, headroom-based pretenuring schemes outperform static schemes in terms of collector performance, albeit at the cost of increased mutator overhead.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"17 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125403827","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
Exploiting memory usage patterns to improve garbage collections in Java 利用内存使用模式改进Java中的垃圾收集
Principles and Practice of Programming in Java Pub Date : 2010-09-15 DOI: 10.1145/1852761.1852768
Liangliang Tong, F. Lau
{"title":"Exploiting memory usage patterns to improve garbage collections in Java","authors":"Liangliang Tong, F. Lau","doi":"10.1145/1852761.1852768","DOIUrl":"https://doi.org/10.1145/1852761.1852768","url":null,"abstract":"Copying-based garbage collectors are currently widely employed in JVM systems, as they provide not only cheap allocations but also fast collections. Comparing to their compacting-based counterparts, copying-based collectors trade space for time: they conservatively reserve half of the available heap for the purpose of copying live objects. It is a common belief, however, that objects' survival rates are generally too low to make full use of the reserved memory. We find through experiments that the total live object sizes of Java programs are generally small and remain relatively stable over many collections, which provides a perfect opportunity for optimization. We analyze this phenomenon and propose a \"skew-space\" collector that would reserve spaces of dynamically adjusted sizes coming from online predictions. The proposed collector has been realized using MMTk in the JikesRVM, and has shown promising improvements in the total execution time for the SPECjvm98 and DaCapo benchmarks.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124452355","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 programming model for adaptable Java applications 可适应Java应用程序的编程模型
Principles and Practice of Programming in Java Pub Date : 2010-09-15 DOI: 10.1145/1852761.1852779
M. Autili, P. Benedetto, P. Inverardi
{"title":"A programming model for adaptable Java applications","authors":"M. Autili, P. Benedetto, P. Inverardi","doi":"10.1145/1852761.1852779","DOIUrl":"https://doi.org/10.1145/1852761.1852779","url":null,"abstract":"Adaptable applications are becoming the main drivers of the pervasive computing paradigm. The development and the context-aware execution of such applications on mobile devices, often characterized by their heterogeneity and limitedness, is a big challenge and it is far to be solved. The main difficulty is to provide (i) an easy-to-use and powerful programming technique for developers to actually code adaptable applications, and (ii) a context-aware run-time support to properly handle contextual situations. This paper presents a programming model that provides developers with a set of agile and user-friendly extensions to Java for easily specifying generic code in a flexible and declarative way. The generic code specifies both the invariant semantics and the degree of variability of the application. Variability is expressed in terms of adaptable classes that declare adaptable methods, and alternative classes that define them. Then, an ad-hoc preprocessor resolves variability by generating standard Java methods within standard Java classes that, opportunely combined with the core code, make-up different application alternatives, i.e., standard Java applications that represent different ways of implementing an adaptable application specification. The programming model and the generic code preprocessor have been fully implemented in and for Java as Eclipse plugins. They are part of Chameleon, a framework that provides both an integrated development environment and a proper context-aware run-time support to adaptable Java applications for limited devices.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2010-09-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121545589","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
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
相关产品
×
本文献相关产品
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信