Principles and Practice of Programming in Java最新文献

筛选
英文 中文
Lazy argument passing in Java RMI Java RMI中的延迟参数传递
Principles and Practice of Programming in Java Pub Date : 2008-09-09 DOI: 10.1145/1411732.1411750
Christopher Line, K. R. Jayaram, P. Eugster
{"title":"Lazy argument passing in Java RMI","authors":"Christopher Line, K. R. Jayaram, P. Eugster","doi":"10.1145/1411732.1411750","DOIUrl":"https://doi.org/10.1145/1411732.1411750","url":null,"abstract":"Though often criticized for its inherent synchronization overhead and coupling, the remote method invocation (RMI) paradigm remains one of the most popular abstractions for building distributed applications. Many authors have suggested ways to overcome its drawbacks focusing mostly on the invoker's perspective, for example by multiplexing invocations to replicated server objects, through \"future\" return values, or even by prohibiting return values altogether. The more global perspective, and in particular the invokee side, has conversely only received little attention.\u0000 In this paper we take a fresh look at the RMI paradigm, elaborating on argument passing semantics. We identify three lazy ways of passing arguments by value, differing by the moment at which the transfer of the arguments synchronizes with the execution of the method body. We present a preliminary library implementation of our argument passing semantics in Java RMI, and illustrate their individual benefits through examples. We characterize analytically and empirically application scenarios which benefit from lazy argument passing.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"379 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123450267","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
Constraint based optimization of stationary fields 基于约束的稳态场优化
Principles and Practice of Programming in Java Pub Date : 2008-09-09 DOI: 10.1145/1411732.1411746
Ian Rogers, Jisheng Zhao, C. Kirkham, I. Watson
{"title":"Constraint based optimization of stationary fields","authors":"Ian Rogers, Jisheng Zhao, C. Kirkham, I. Watson","doi":"10.1145/1411732.1411746","DOIUrl":"https://doi.org/10.1145/1411732.1411746","url":null,"abstract":"In many scenarios a field holds a value that is constant beyond a certain point in the execution of the program. However, Java only allows it to be marked as being final in relation to the control-flow of the program. We present a language extension whereby the programmer can express that a field will have an unchanging value once it satisfies a given constraint. That is the constraint is the guarantee of finality as opposed to the particular code region. A field holding an unchanging value is said to be stationary. The resulting change of the language has similar pitfalls to keywords that express immutability in a dynamic system. However, it provides a number of advantages: ability for improved partial evaluation and specialisation in dynamic compilation, simple inspection to show thread safety and richer information to the runtime environment.\u0000 We present an implementation of our proposed language extension to Java in the Jikes Research Virtual Machine (RVM). We use class loading as a case study of where lazy initialisation occurs. In code that is frequently executed the probability of a referenced class being uninitialised is less than 1% for method accesses and for fields typically 0%. We create an optimization framework that uses this information to perform specialisation and partial evaluation. We demonstrate that on average 61.32% of accesses occur to fields in their stationary state. We demonstrate that stationary information allows optimizations achieving a best case 3.90% speedup of benchmark applications, and 1.67% speedup on average.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127321402","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
The JavaFest: a collaborative learning technique for Java programming courses JavaFest: Java编程课程的协作学习技术
Principles and Practice of Programming in Java Pub Date : 2008-09-09 DOI: 10.1145/1411732.1411734
Matthias Hauswirth, Dmitrijs Zaparanuks, A. Malekpour, Mostafa Keikha
{"title":"The JavaFest: a collaborative learning technique for Java programming courses","authors":"Matthias Hauswirth, Dmitrijs Zaparanuks, A. Malekpour, Mostafa Keikha","doi":"10.1145/1411732.1411734","DOIUrl":"https://doi.org/10.1145/1411732.1411734","url":null,"abstract":"Learning to create well-designed and robust Java programs requires, besides a good understanding of the language, a significant amount of practice. In this paper we present the JavaFest, a collaborative learning technique for teaching Java to beginning programmers. A JavaFest is a group exercise that instructors can add to their repertoire of teaching techniques. It provides an opportunity for students to practice programming in a motivating but non-threatening environment, and to learn from the experience of their peers. Moreover, a JavaFest allows the instructor to gain insight into the current standing of the students in her class.\u0000 We describe the concept of a JavaFest and present three case studies in the form of three concrete JavaFests we developed and evaluated in our own object-oriented programming course. The general idea of a JavaFest, and the three specific examples we describe and evaluate, can easily be adopted to enhance any Java programming course.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"9 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115328335","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
Aspect weaving in standard Java class libraries 标准Java类库中的方面编织
Principles and Practice of Programming in Java Pub Date : 2008-09-09 DOI: 10.1145/1411732.1411754
A. Villazón, Walter Binder, Philippe Moret
{"title":"Aspect weaving in standard Java class libraries","authors":"A. Villazón, Walter Binder, Philippe Moret","doi":"10.1145/1411732.1411754","DOIUrl":"https://doi.org/10.1145/1411732.1411754","url":null,"abstract":"Aspect-oriented programming (AOP) has been successfully applied to application code thanks to techniques such as Java bytecode instrumentation. Unfortunately, with current technology, such as AspectJ, aspects cannot be woven into standard Java class libraries. This restriction is particularly unfortunate for aspects that would benefit from a complete bytecode coverage, such as profiling or debugging aspects. In this paper we present an adaptation of the popular AspectJ weaver that is able to weave aspects also into standard Java class libraries. We evaluate our approach with existing profiling aspects, which now cover all bytecode executing in the virtual machine. In addition, we present a new aspect for memory leak detection that also benefits from our approach.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121854716","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}
引用次数: 35
A framework for command processing in Java/Swing programs based on the MVC pattern 基于MVC模式的Java/Swing程序命令处理框架
Principles and Practice of Programming in Java Pub Date : 2008-09-09 DOI: 10.1145/1411732.1411738
A. Naderlinger, J. Templ
{"title":"A framework for command processing in Java/Swing programs based on the MVC pattern","authors":"A. Naderlinger, J. Templ","doi":"10.1145/1411732.1411738","DOIUrl":"https://doi.org/10.1145/1411732.1411738","url":null,"abstract":"We present a framework for command processing in Java/Swing programs based on the model-view-controller (MVC) pattern. In addition to standard approaches our framework supports (1) centralized exception handling, (2) premature command termination, (3) pre- and postprocessing of commands, (4) undo/redo based on event objects and model listeners, and (5) generic undo/redo commands. The framework has been applied successfully in a number of graphical editors as part of a tool chain for real time programming. It proved to increase the quality of the software by eliminating local exception handlers and by confining the impact of undo/redo to a small add-on to the model part of the application.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"167 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133791857","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
Measuring the performance of interactive applications with listener latency profiling 使用侦听器延迟分析测量交互式应用程序的性能
Principles and Practice of Programming in Java Pub Date : 2008-09-09 DOI: 10.1145/1411732.1411751
M. Jovic, Matthias Hauswirth
{"title":"Measuring the performance of interactive applications with listener latency profiling","authors":"M. Jovic, Matthias Hauswirth","doi":"10.1145/1411732.1411751","DOIUrl":"https://doi.org/10.1145/1411732.1411751","url":null,"abstract":"When Java developers need to improve the performance of their applications, they usually use one of the many existing profilers for Java. These profilers generally capture a profile that represents the execution time spent in each method. The developer can thus focus her optimization efforts on the methods that consume the most time. In this paper we argue that this type of profile is insufficient for tuning interactive applications. Interactive applications respond to user events, such as mouse clicks and key presses. The perceived performance of interactive applications is directly related to the response time of the program.\u0000 In this paper we present listener latency profiling, a profiling approach with two distinctive characteristics. First, we call it latency profiling because it helps developers to find long latency operations. Second, we call it listener profiling because it abstracts away from method-level profiles to compute the latency of the various listeners. This allows a developer to reason about performance with respect to listeners, also called observers, the high level abstraction at the core of any interactive Java application.\u0000 We present our listener latency profiling approach, describe LiLa, our implementation, validate it on a set of micro-benchmarks, and evaluate it on a complex real-world interactive application.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129384148","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}
引用次数: 28
Intersection types in Java Java中的交集类型
Principles and Practice of Programming in Java Pub Date : 2008-09-09 DOI: 10.1145/1411732.1411757
Martin Plümicke
{"title":"Intersection types in Java","authors":"Martin Plümicke","doi":"10.1145/1411732.1411757","DOIUrl":"https://doi.org/10.1145/1411732.1411757","url":null,"abstract":"In the past we analyzed typeless Java programs. One of our results was, that there may be different correct typings for one method. This means that the principal types of such methods are intersection types. We presented a type-inference algorithm. For typeless Java methods the algorithm infers its principal intersection type. Unfortunately, like Java byte-code, Java does not allow intersection types.\u0000 In this paper we present an algorithm, which resolves intersection types of Java methods, such that Java programs with standard typings are generated.\u0000 In the algorithm we have to differentiate two cases of intersection types. On the one hand there are methods with intersection types, where for all types the same code is executed. On the other hand there are methods, which call in dependence to its typings different methods. These two cases have to be treated differently during type resolving.\u0000 Finally, we will see that this differentiation leads to a refined definition of Java method principal types.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"39 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-09-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126673743","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
Searching the library and asking the peers: learning to use Java APIs on demand 搜索库并询问同行:学习按需使用Java api
Principles and Practice of Programming in Java Pub Date : 2007-09-05 DOI: 10.1145/1294325.1294332
Y. Ye, Yasuhiro Yamamoto, K. Nakakoji, Yoshiyuki Nishinaka, Mitsuhiro Asada
{"title":"Searching the library and asking the peers: learning to use Java APIs on demand","authors":"Y. Ye, Yasuhiro Yamamoto, K. Nakakoji, Yoshiyuki Nishinaka, Mitsuhiro Asada","doi":"10.1145/1294325.1294332","DOIUrl":"https://doi.org/10.1145/1294325.1294332","url":null,"abstract":"The existence of large API libraries contributes significantly to the programming productivity and quality of Java programmers. The vast number of available library APIs, however, presents a learning challenge for Java programmers. Most Java programmers do not know all the APIs. Whenever their programming task requires API methods they do not yet know, they have to be able to find what they need and learn how to use them on demand. This paper describes a tool called STeP_IN_Java (a <u>S</u>ocio-<u>Te</u>chnical <u>P</u>latform for <u>I</u>n situ <u>N</u>etworking of <u>Java</u> programmers) that helps Java programmers find APIs, and learn from both examples and experts how to use them on demand. STeP_IN_Java features a sophisticated yet easy-to-use search interface that enables programmers to conduct a personalized search and to progressively refine their search by limiting search scopes. Example programs are provided and embedded to assist programmers in using APIs. Furthermore, if a programmer still has questions about a particular API method, he or she can ask peer programmers. The STeP_IN_Java system automatically routes the question to a group of experts who are chosen based on two criteria: they have high expertise on the particular API method and they have a good social relationship with the programmer who is requesting the information.","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":"129554765","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}
引用次数: 21
The potential of trace-level parallelism in Java programs Java程序中跟踪级并行性的潜力
Principles and Practice of Programming in Java Pub Date : 2007-09-05 DOI: 10.1145/1294325.1294348
Borys J. Bradel, T. Abdelrahman
{"title":"The potential of trace-level parallelism in Java programs","authors":"Borys J. Bradel, T. Abdelrahman","doi":"10.1145/1294325.1294348","DOIUrl":"https://doi.org/10.1145/1294325.1294348","url":null,"abstract":"The exploitation of parallelism among traces, i.e. hot paths of execution in programs, is a novel approach to the automatic parallelization of Java programs and it has many advantages. However, to date, the extent to which parallelism exists among traces in programs has not been made clear. The goal of this study is to measure the amount of trace-level parallelism in several Java programs. We extend the Jupiter Java Virtual Machine with a simulator that models an abstract parallel system. We use this simulator to measure trace-level parallelism. We further use it to examine the effects of the number of processors, trace window size, and communication type and cost on performance. Our results indicate that enough trace-level parallelism exists for a modest number of processors. Thus, we conclude that trace-based parallelization is a potentially viable approach to improve the performance of Java programs.","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":"130674022","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
A cross-language framework for developing AJAX applications 用于开发AJAX应用程序的跨语言框架
Principles and Practice of Programming in Java Pub Date : 2007-09-05 DOI: 10.1145/1294325.1294340
A. Puder
{"title":"A cross-language framework for developing AJAX applications","authors":"A. Puder","doi":"10.1145/1294325.1294340","DOIUrl":"https://doi.org/10.1145/1294325.1294340","url":null,"abstract":"AJAX (Asynchronous JavaScript And XML) applications have received wide-spread attention as a new way to develop highly interactive web applications. Breaking with the complete-page-reload paradigm of traditional web applications, AJAX applications rival desktop applications in their look-and-feel. AJAX places a high burden on a web developer requiring extensive JavaScript knowledge as well as other advanced client-side technologies. In this paper, we introduce a technique that allows a developer to implement an application in Java or any .NET language and then automatically cross-compile it to an AJAX-enabled web application.","PeriodicalId":169989,"journal":{"name":"Principles and Practice of Programming in Java","volume":"70 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":"130036953","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}
引用次数: 13
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学术官方微信