Michael Haupt
Oracle Corporation
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Michael Haupt.
aspect-oriented software development | 2004
Christoph Bockisch; Michael Haupt; Mira Mezini; Klaus Ostermann
A widespread implementation approach for the join point mechanism of aspect-oriented languages is to instrument areas in code that match the static part of pointcut designators, inserting dynamic checks for that part of matching that depends on run-time conditions, if needed. For performance reasons, such dynamic checks should be avoided whenever possible. One way to do so is to postpone weaving of advice calls until run-time, when conditions determining the emergence of join points hold. This calls for fluid code---code that adapts itself to the join point emergence at run-time, and suggests that AOP concepts should be integrated into the execution model underlying a VM. In this paper, we present first steps toward such an integration in Steamloom, an extension of IBMs Jikes Research Virtual Machine. Steamloom is fairly restricted, but our initial experimental results indicate that aspect-aware VMs and fluid code are promising w.r.t performance. While the focus in this paper is on performance, there are other advantages of aspect-aware VMs to be investigated in the future.
International Workshop on Context-Oriented Programming | 2009
Malte Appeltauer; Robert Hirschfeld; Michael Haupt; Jens Lincke; Michael Perscheid
Context-oriented programming (COP) extensions have been implemented for several languages. Each concrete language design and implementation comes with different variations of the features of the COP paradigm. In this paper, we provide a comparison of eleven COP implementations, discuss their designs, and evaluate their performance.
high performance embedded architectures and compilers | 2013
Christian Wimmer; Michael Haupt; Michael L. Van De Vanter; Mick Jordan; Laurent Daynes; Douglas Simon
A highly productive platform accelerates the production of research results. The design of a Virtual Machine (VM) written in the Java#8482; programming language can be simplified through exploitation of interfaces, type and memory safety, automated memory management (garbage collection), exception handling, and reflection. Moreover, modern Java IDEs offer time-saving features such as refactoring, auto-completion, and code navigation. Finally, Java annotations enable compiler extensions for low-level “systems programming” while retaining IDE compatibility. These techniques collectively make complex system software more “approachable” than has been typical in the past. The Maxine VM, a metacircular Java VM implementation, has aggressively used these features since its inception. A co-designed companion tool, the Maxine Inspector, offers integrated debugging and visualization of all aspects of the VMs runtime state. The Inspectors implementation exploits advanced Java language features, embodies intimate knowledge of the VMs design, and even reuses a significant amount of VM code directly. These characteristics make Maxine a highly approachable VM research platform and a productive basis for research and teaching.
Soft Computing | 2010
Malte Appeltauer; Robert Hirschfeld; Hidehiko Masuhara; Michael Haupt; Kazunori Kawauchi
Context-oriented programming (COP) introduces dedicated abstractions for the modularization and dynamic composition of crosscutting context-specific functionality. While existing COP languages offer constructs for control-flow specific composition, they do not yet consider the explicit representation of event-specific context-dependent behavior, for which we observe two distinguishing properties: First, context can affect several control flows. Second, events can establish new contexts asynchronously. In this paper, we propose new language constructs for event-specific composition and explicit context representation and introduce their implementation in JCop, our COP extension to Java.
Generative and Transformational Techniques in Software Engineering II | 2007
Robert Hirschfeld; Pascal Costanza; Michael Haupt
Context-oriented Programming, or COP, provides programmers with dedicated abstractions and mechanisms to concisely represent behavioral variations that depend on execution context. By treating context explicitly, and by directly supporting dynamic composition, COP allows programmers to better express software entities that adapt their behavior late-bound at run-time. Our paper illustrates COP constructs, their application, and their implementation by developing a sample scenario, using ContextS in the Squeak/Smalltalk programming environment.
conference on object-oriented programming systems, languages, and applications | 2006
Christoph Bockisch; Sebastian Kanthak; Michael Haupt; Matthew Arnold; Mira Mezini
Aspect-oriented programming (AOP) is increasingly gaining in popularity. However, the focus of aspect-oriented language research has been mostly on language design issues; efficient implementation techniques have been less popular. As a result, the performance of certain AOP constructs is still poor. This is in particular true for constructs that rely on dynamic properties of the execution (e.g., the cflow construct).In this paper, we present efficient implementation techniques for cflow that exploit direct access to internal structures of the virtual machine running an application, such as the call stack, as well as the integration of these techniques into the just-in-time compiler code generation process.Our results show that AOP has the potential to make programs that need to define control flow-dependent behavior not only more modular but also more efficient. By making means for control flow-dependent behavior part of the language, AOP opens the possibility of applying sophisticated compiler optimizations that are out of reach for application programmers.
virtual execution environments | 2005
Michael Haupt; Mira Mezini; Christoph Bockisch; Tom Dinkelaker; Michael Eichberg; Michael Krebs
Language mechanisms deserve language implementation effort. While this maxim has led to sophisticated support for language features specific to object-oriented, functional and logic programming languages, aspect-oriented programming languages are still mostly implemented using postprocessors. The Steamloom virtual machine, based on IBMs Jikes RVM, provides support for aspect-oriented programming at virtual machine level. A bytecode framework called BAT was integrated with the Jikes RVM to replace its bytecode management logic. While preserving the functionality needed by the VM, BAT also allows for querying application code for join point shadows, avoiding redundancy in bytecode representation. Performance measurements show that an AOP-enabled virtual machine like Steamloom does not inflict unnecessary performance penalties on a running application; when it comes to executing AOP-related operations, there even are significant performance gains compared to other approaches.
Lecture Notes in Computer Science | 2004
Michael Haupt; Mira Mezini
The benefits of aspect-oriented programming (AOP) with respect to software design are getting more and more accepted, and measurements have shown that AOP does not necessarily introduce severe performance penalties. A benchmark suite for measuring the performance of AspectJ software is being developed. However, general benchmarks are missing for the emerging field of dynamic AOP, even though major J2EE application server vendors begin to employ dynamic aspects in their systems. Instead, work on dynamic AOP frequently comprises varying measurements. To be eventually able to classify such systems along their performance qualities, it is important to develop a benchmark suite for dynamic AOP. In this paper, we present a first building block for such a benchmark suite in the form of micro-measurements. We also present and discuss results gained by running the measurements in several dynamic AOP systems. A discussion of requirements for dynamic AOP benchmarks finishes the paper.
european conference on object oriented programming | 2007
Michael Haupt; Hans Schippers
Aspect-oriented programming languages usually are extensions of object-oriented ones, and their compilation target is usually the (virtual) machine model of the language they extend. While that model elegantly supports core object-oriented language mechanisms such as virtual method dispatch, it provides no direct support for core aspectoriented language mechanisms such as advice application. Hence, current implementations of aspect-oriented languages bring about insufficient and inelegant solutions. This paper introduces a lightweight, objectbased machine model for aspect-oriented languages based on objectoriented ones. It is centered around delegation and relies on a very dynamic notion of join points as loci of late-bound dispatch of functionality. The model is shown to naturally support an important number of aspect-oriented language mechanisms. Additionally, a formal semantics is presented as an extension to the object-based δ calculus.
generative programming and component engineering | 2003
Mariano Cilia; Michael Haupt; Mira Mezini; Alejandro P. Buchmann
Reactive behavior is rapidly becoming a key feature of modern software systems in such diverse areas as ubiquitous computing, autonomic systems, and event-based supply chain management. In this paper we analyze the convergence of techniques from aspect oriented programming, active databases and asynchronous notification systems to form reactive middleware. We identify the common core of abstractions and explain both commonalities and differences to start a dialogue across community boundaries. We present existing options for implementation of reactive software and analyze their run-time semantics. We do not advocate a particular approach but concentrate on identifying how the various disciplines can benefit from each other. We believe that AOP can solve the impedance mismatch found in reactive systems that are implemented through inherently static languages, while AOP can benefit from the active database communitys experience with event detection/composition and fault tolerance in large scale systems. The result could be a solid foundation for the realization of reactive middleware services.