The garbage collector (GC) is a critical component of any managed runtime environment (MRE), such as the java virtual machine. While the main goal of the GC is to simplify and automate memory management, it may have a...
详细信息
The term 'gamification' refers to the use of game elements in non-game environments like education, business, sales and marketing. The method of 'gamifying' has been applied in many different contexts ...
详细信息
The use of formal contracts has long been advocated as an approach to develop programs that are provably correct. However, the reality is that adoption of contracts has been slow in practice. Despite this, the adoptio...
详细信息
ISBN:
(纸本)9783959770354
The use of formal contracts has long been advocated as an approach to develop programs that are provably correct. However, the reality is that adoption of contracts has been slow in practice. Despite this, the adoption of lightweight contracts - typically utilising runtime checking - has progressed. In the case of java, built-in features of the language (e.g. assertions and exceptions) can be used for this. Furthermore, a number of libraries which facilitate contract checking have arisen. In this paper, we catalogue 25 techniques and tools for lightweight contract checking in java, and present the results of an empirical study looking at a dataset extracted from the 200 most popular projects found on Maven Central, constituting roughly 351,034 KLOC. We examine (1) the extent to which contracts are used and (2) what kind of contracts are used. We then investigate how contracts are used to safeguard code, and study problems in the context of two types of substitutability that can be guarded by contracts: (3) unsafe evolution of APIs that may break client programs and (4) violations of Liskov's Substitution Principle (LSP) when methods are overridden. We find that: (1) a wide range of techniques and constructs are used to represent contracts, and often the same program uses different techniques at the same time;(2) overall, contracts are used less than expected, with significant differences between programs;(3) projects that use contracts continue to do so, and expand the use of contracts as they grow and evolve;and, (4) there are cases where the use of contracts points to unsafe subtyping (violations of Liskov Substitution Principle) and unsafe evolution.
Dynamic software updating (DSU) is an extremely useful feature to be used during software evolution. It can be used to reduce down-Time costs, for security enhancements, profiling and testing new functionalities. Ther...
详细信息
Nowadays, due to the frequent technological innovationand market changes, software libraries are evolving veryquickly. To make sure that existing client software applicationsare not broken after a library update, back...
详细信息
java is one of the languages that are popular for high abstraction and automatic memory management. As in other object-oriented languages, java's objects can easily represent a domain model of an application. Whil...
详细信息
This paper presents a system for constraint programming in java using translation of JVM bytecode into SMT. This allows the constraints to be written in normal java, to being interoperable with the rest of the program...
详细信息
Automatic building of software projects providesa desirable foundation to support a large variety of softwareengineering research tasks based on open software repositories. In this paper, we propose the first techniqu...
详细信息
Top-k queries over data streams is a well studied problem. There exists numerous systems allowing to process continuous queries over sliding windows. At the opposite, non- append only streams call for ad-hoc solutions...
详细信息
This editorial describes a special issue of papers from the 2014 workshop on java Technologies for Real-Time and Embedded Systems.[1] There are four papers in this special issue. The first paper [2] presents HVMTP, a ...
详细信息
This editorial describes a special issue of papers from the 2014 workshop on java Technologies for Real-Time and Embedded Systems.[1] There are four papers in this special issue. The first paper [2] presents HVMTP, a time predictable and portable java virtual machine (JVM) implementation with applications in resource-constrained, hard real-time embedded systems, which implements all levels of the safety-critical java (SCJ) specification. Time predictability is achieved by a combination of time-predictable algorithms, exploiting the programming model of the SCJ profile and harnessing the static knowledge of the hosted SCJ system. This paper presents HVMTP in terms of its design and capabilities and demonstrates how a complete timing model of the JVM represented as a network of timed automata can be obtained using the tool TETASARTSJVM. The timing model readily integrates with the rest of the TETASARTS toolset for temporal verification of SCJ systems. A complete timing scheme in terms of safe worst-case execution times and best-case execution times of the java bytecodes is derived from the model. The paper takes a first look at how to support the new java 8 language feature of Lambda expressions in an SCJ context – looking in particular at how the bytecode, used for invoking java 8 closures, can be implemented in a time-predictable way and integrated into HVMTP.
暂无评论