15 papers · ranked by Valyu relevance
Julien Ponge, Frédéric Le Mouël
Modifier les portions fonctionnelles et non-fonctionnelles des applications au cours de leur exécution est utile et parfois critique tant lors des phases de développement que de suivi en production. JooFlux est un agent JVM qui permet à la fois de remplacer dynamiquement des implémentations de méthodes que d'appliquer…
Davide Pizzolotto, Mariano Ceccato
—Code obfuscation is a popular approach to turn program comprehension and analysis harder, with the aim of mitigating threats related to malicious reverse engineering and code tampering. However, programming languages that compile to high level bytecode (e.g., Java) can be obfuscated only to a limited extent. In fact…
Romain Brenguier, Lucas C. Cordeiro, Daniel Kroening, Peter Schrammel
'Peter Schrammel'] Abstract. JBMC is an open-source SAT- and SMT-based bounded model checking tool for verifying Java bytecode. JBMC relies on an operational model of the Java libraries, which conservatively approximates their semantics, to verify assertion violations, array out-of-bounds, unintended arithmetic…
Tony Clark
The Java programming language oers a number of features including: portability; graphics; networking. Java implements the ob ject-oriented execution model in terms of classes, ob jects with state, message passing and inclusion polymorphism. This work aims to provide a mixed paradigm environment which oers the…
Lucas C. Cordeiro, Daniel Kroening, Peter Schrammel
Empirical evaluation of verification tools by benchmarking is a common method in software verification research. The Competition on Software Verification (SV-COMP) aims at standardization and reproducibility of benchmarking within the software verification community on an annual basis, through comparative evaluation of…
John MacCormick
This document is intended as a stand-alone textbook chapter to be used for introducing some functional programming concepts into a course in which the primary teaching language is Java. For details of the approach, please see the paper "Functional programming, in the data structures course, in Java" by J. MacCormick…
Mingyu Wu, Ziming Zhao, Haoyu Li, Heting Li + 3 more
'Binyu Zang' 'Haibing Guan'] Fast, byte-addressable non-volatile memory (NVM) embraces both near-DRAM latency and disk-like persistence, which has generated considerable interests to revolutionize system software stack and programming models. However, it is less understood how NVM can be combined with managed runtime…
Abel Garcia, Cosimo Laneve
This paper presents a technique for deadlock detection of Java programs. The technique uses typing rules for extracting infinitestate abstract models of the dependencies among the components of the Java intermediate language – the Java bytecode. Models are subsequently analysed by means of an extension of a solver that…
Jiawen Xiong, Yong Shi, Boyuan Chen, Filipe R. Cogo + 1 more
'Zhen Ming Jiang'] Build verifiability refers to the property that the build of a software system can be verified by independent third parties and it is crucial for the trustworthiness of a software system. Various efforts towards build verifiability have been made to C/C++-based systems, yet the techniques for…
Eduardo R. B. Marques
We present a novel methodology for deriving finegrained patches of Java software. We consider an abstract-syntax tree (AST) representation of Java classes compiled to the Java Virtual Machine (JVM) format, and a difference analysis over the AST representation to derive patches. The AST representation defines an…
George Fourtounis, Yannis Smaragdakis
Java 7 introduced programmable dynamic linking in the form of the invokedynamic framework. Static analysis of code containing programmable dynamic linking has often been cited as a significant source of unsoundness in the analysis of Java programs. For example, Java lambdas, introduced in Java 8, are a very popular…
Mateusz Ujma, Nastaran Shafiei
—One of the main challenges when verifying multithreaded Java applications is the state space explosion problem. Due to thread interleavings, the number of states that the model checker has to verify can grow rapidly and impede the feasibility of verification. In the Java language, the source of thread interleavings…
Jens Dietrich, Kamil Ježek, Přemek Brada
Real-world programs are neither monolithic nor static – they are constructed using platform and third party libraries, and both programs and libraries continuously evolve in response to change pressure. In case of the Java language, rules defined in the Java Language and Java Virtual Machine Specifications define when…
Efim Grinkrug
This paper presents an approach to dynamic component composition that facilitates creating new composed components using existing ones at runtime and without any code generation. The dynamic abilities are supported by extended type notion and implementation based on additional superstructure provided with its Java API…
Victor Sadikov, Walter Pidkameny
Most Java applications, including web based ones, follow the 3 tier architecture. Although Java provides standard tools for tierto-tier interfaces, the separation of the tiers is usually not perfect. E.g. the database interface, JDBC, assumes that SQL statements are issued from the application server. Similarly, in web…