Optimized Aspect Execution Mechanisms Inside the Virtual

Total Page:16

File Type:pdf, Size:1020Kb

Optimized Aspect Execution Mechanisms Inside the Virtual Fachgebiet Programmierung eingebetteter Systeme Fakult¨at IV Elektrotechnik und Informatik Technische Universit¨at Berlin Optimized Aspect Execution Mechanisms inside Virtual Machines for Embedded Systems vorgelegt von Diplom-Informatikerin Christine Hundt Von der Fakult¨at IV { Elektrotechnik und Informatik der Technischen Universit¨at Berlin zur Erlangung des akademischen Grades Doktor der Ingenieurwissenschaften { Dr.-Ing. { genehmigte Dissertation Promotionsausschuss: Vorsitzender: Prof. Dr. Hans-Ulrich Heiß Technische Universit¨at Berlin Berichtende: Prof. Dr. Sabine Glesner Technische Universit¨at Berlin Berichtender: Prof. Dr. Robert Hirschfeld Hasso-Plattner-Institut, Universit¨at Potsdam Tag der wissenschaftlichen Aussprache: 4. November 2011 Berlin 2012 D 83 Abstract The rapidly growing mobile market has stimulated the demand for more and more complex custom applications for embedded mobile devices, for ex- ample, smart phones. To manage this complexity and, at the same time, to keep the time to market small, advanced software engineering methods have to be applied. Aspect-oriented programming (AOP) provides advanced modular- ization and abstraction mechanisms. The main advantages of this concept are improved maintainability, reusability, and extensibility of applications. Fur- thermore, dynamic AOP can be used to implement the dynamic adaptation of mobile device applications to changing contexts, like the location. However, the overhead introduced by the additional abstraction mechanisms limits the applicability to embedded mobile devices because they have limited resources (CPU, memory) compared to desktop PCs. To overcome this problem, we present a set of optimizations that signif- icantly reduce the overhead of common AOP mechanisms and, finally, make AOP applicable for embedded mobile devices. The foundation of our work is a thorough analysis of the overhead that is typically generated by the realization of AOP mechanisms. The key idea of our approach is a deep integration of AOP mechanisms into the virtual machine. To this end, we shift mechanisms like the registration of activated aspects to the level of the JVM. Furthermore, we optimize the execution of AOP programs by introducing caching mecha- nisms and specialized bytecode instructions that are tailored for the execu- tion of AOP mechanisms. Moreover, we analyze AOP-specific semantic code properties in order to develop optimizations that utilize these AOP-specific se- mantic information and that exploit typical AOP usage schemes. In addition to the AOP optimizations, we realize an efficient dynamic aspect deployment mechanism. We apply our optimizations to the Java-based aspect-oriented pro- gramming language ObjectTeams [HHM07] by extending the extremely small and portable JamVM [Lou] Java virtual machine. To evaluate our approach, we execute micro benchmarks, investigate the effect of our optimizations on a real-world application, and finally discuss the transferability of our optimizations to other approaches. Our evaluation shows a considerable performance gain for the aspect activation and the aspect exe- cution of ObjectTeams. In particular, we demonstrate that our optimizations improve the performance of commonly used AOP mechanisms by up to 90%. At the same time, we reduce the code size of the adapted classes, which is also important for small devices. Finally, with our case study, namely the OTPong game application, we show that our approach is capable of significantly opti- mizing the execution time of real-word applications. Our main contribution is a significant reduction of the overhead of high-level AOP constructs, which is also demonstrated by the results of our experiments. The success of the op- timizations provides evidence that advanced high-level abstraction techniques like AOP can be efficiently used in embedded mobile devices. Furthermore, our work shows that efficient dynamic aspect deployment can be supported on the level of the JVM. This substantially enhances the dynamic capabilities of ObjectTeams. Zusammenfassung Der rasant wachsende Mobilger¨atemarkt verlangt nach immer komplexeren Anwendungen fur¨ eingebettete Mobilger¨ate, wie Smartphones. Um diese Kom- plexit¨at beherrschbar zu machen und gleichzeitig die Produktzyklen m¨oglichst kurz zu halten, ist es n¨otig fortgeschrittene Softwareentwicklungsmethoden an- zuwenden. Die aspektorientierte Programmierung (AOP) stellt fortgeschritte- ne Modularisierungs- und Abstraktionsmechanismen zur Verfugung.¨ Die wich- tigsten Vorteile dieses Konzeptes sind die verbesserte Wartbarkeit, Wieder- verwendbarkeit und Erweiterbarkeit von Anwendungen. Daruber¨ hinaus ist dynamische Aspektorientierung dazu geeignet die dynamische Anpassung von mobilen Anwendungen an wechselnde Kontexte, wie z.B. den Standort, zu realisieren. Allerdings schr¨ankt der Overhead, der durch die zus¨atzlichen Ab- straktionsmechanismen entsteht, die Anwendbarkeit auf eingebettete Mobilge- r¨ate ein, da diese im Vergleich zu Desktop PCs beschr¨ankte Ressourcen (CPU, Speicher) aufweisen. Um dieses Problem zu bew¨altigen, pr¨asentieren wir eine Reihe von Opti- mierungen, welche den Overhead von typischen AOP-Mechanismen signifikant reduzieren und damit AOP fur¨ eingebettet Mobilger¨ate anwendbar machen. Die Grundlage unserer Arbeit ist eine grundliche¨ Analyse des Overheads, der typischerweise durch die Realisierung von AOP-Mechanismen entsteht. Die Kernidee unseres Ansatzes ist eine tiefe Integration der AOP-Mechanismen in die virtuelle Maschine. Zu diesem Zweck verschieben wir diese Mechanismen, wie etwa die Registrierung von aktiven Aspekten, auf die Ebene der JVM. Wei- terhin optimieren wir die Ausfuhrung¨ von AOP Programmen durch die Einfuh-¨ rung von Cache-Mechanismen, sowie spezialisierten Bytecode-Instruktionen, die auf die Ausfuhrung¨ von AOP-Mechanismen zugeschnitten sind. Daruber¨ hinaus analysieren wir AOP-spezifische semantische Code-Eigenschaften und entwickeln darauf aufbauend Optimierungen, die sich diese Eigenschaften und typische AOP Benutzungsschemata zunutze machen. Zus¨atzlich zu den AOP- Optimierungen realisieren wir einen effizienten dynamischen Aspekt-Deploy Mechanismus. Wir wenden unsere Optimierungen auf die Java-basierte as- pektorientierte Programmiersprache ObjectTeams [HHM07] an, indem wir die extrem kleine und fur¨ eingebettete Systeme portierte JamVM [Lou] erweitern. Um unseren Ansatz zu evaluieren fuhren¨ wir Mikro-Benchmarks aus und untersuchen den Effekt unserer Optimierungen auf eine echte Anwendung. Un- sere Evaluierung zeigt eine erhebliche Performanz-Steigerung fur¨ die Aspekt- Aktivierung und die Aspekt-Ausfuhrung¨ von ObjectTeams. Unsere Optimie- rungen verbessern die Performanz von h¨aufig verwendeten AOP-Konstrukten um bis zu 90%. Gleichzeitig verringern wir die Code-Gr¨oße adaptierter Klassen, was ebenfalls wichtig ist fur¨ kleine Ger¨ate. Schließlich zeigen wir mit unserer Fallstudie, der Spieleanwendung OTPong, dass unser Ansatz in der Lage ist, die Ausfuhrungszeit¨ von echten Anwendungen signifikant zu optimieren. Unser wichtigster Beitrag ist die signifikante Reduzierung des Overheads von h¨oheren AOP-Konstrukten, die wir durch unserer Experimente untermauern konnten. Der Erfolg der Optimierungen zeigt, dass fortgeschrittene h¨ohere Abstraktions- techniken wie AOP effizient auf eingebetteten Mobilger¨aten verwendet werden k¨onnen. Außerdem zeigt unserer Arbeit, wie effizientes dynamisches Aspekt- Deployment auf der Ebene der JVM umgesetzt werden kann. Dadurch konnten wir die dynamischen F¨ahigkeiten von ObjectTeams maßgeblich erweitern. Danksagung Die vorliegende Arbeit entstand w¨ahrend meiner T¨atigkeit im DFG Aktions- plan Informatik Verifikation und Optimierung bei der Ubersetzung h¨oherer Programmiersprachen, geleitet von Prof. Dr. Sabine Glesner. Bei ihr m¨och- te ich mich herzlich fur¨ die Betreuung meiner Arbeit bedanken und dafur,¨ dass sie mich immer unterstutzt¨ und ermutigt hat. Außerdem danke ich mei- nem Zweitgutachter Prof. Dr. Robert Hirschfeld fur¨ seine Unterstutzung¨ und die konstruktiven Anmerkungen von ihm und seiner Arbeitsgruppe am Hasso- Plattner-Institut Potsdam. Bei meine Kollegen bedanke ich mich herzlich fur¨ die nette Arbeitsatmo- sph¨are und den tollen Promotionsfilm. Stephan Herrmann ist maßgeblich dafur¨ verantwortlich, dass ich den Weg des wissenschaftlichen Arbeitens eingeschla- gen habe. Paula Herber und Lars Alvincz haben mir immer mit Rat und Tat und viel Fr¨ohlichkeit zur Seite gestanden. Außerdem m¨ochte ich meinen Diplo- manden Daniel St¨ohr und Julian Bischof danken, deren Arbeiten zum Erfolg dieser Arbeit beigetragen haben. Schließlich m¨ochte ich meiner Familie dafur¨ danken, dass sie immer fur¨ mich da war und mich unterstutzt¨ hat. Meinen Bruder Andreas danke ich fur¨ die Hilfe beim Cross-Kompilieren. Contents 1 Introduction 13 2 Background 17 2.1 Aspect-oriented Programming................... 17 2.1.1 AOP Mechanisms...................... 18 2.1.2 Aspect Weaving....................... 19 2.1.3 ObjectTeams........................ 21 2.1.4 Dynamic AOP....................... 26 2.2 Java Virtual Machine........................ 28 2.2.1 The JVM Architecture................... 28 2.2.2 Bytecode Interpretation.................. 31 2.2.3 Optimized Bytecode Execution.............. 32 2.2.4 Java for Embedded Systems / Small Platforms...... 38 3 Related Work 41 3.1 Optimization for Aspect-oriented Programming......... 41 3.2 Using High-level Semantic Information for Optimization.... 42 3.3 Dynamic AOP Approaches..................... 43 3.3.1 Dynamic Weaving
Recommended publications
  • WEP12 Writing TINE Servers in Java
    Proceedings of PCaPAC2005, Hayama, Japan WRITING TINE SERVERS IN JAVA Philip Duval and Josef Wilgen Deutsches Elektronen Synchrotron /MST Abstract that the TINE protocol does not deal so much with ‘puts’ The TINE Control System [1] is used to some degree in and ‘gets’ as with data ‘links’. all accelerator facilities at DESY (Hamburg and Zeuthen) One’s first inclination when offering Java in the and plays a major role in HERA. It supports a wide Control System’s portfolio is to say that we don’t need to variety of platforms, which enables engineers and worry about a Java Server API since front-end servers machine physicists as well as professional programmers will always have to access their hardware and that is best to develop and integrate front-end server software into the left to code written in C. Furthermore, if there are real- control system using the operating system and platform of time requirements, Java would not be an acceptable their choice. User applications have largely been written platform owing to Java’s garbage collection kicking in at for Windows platforms (often in Visual Basic). In the next indeterminate intervals. generation of accelerators at DESY (PETRA III and Nevertheless, Java is a powerful language and offers VUV-FEL), it is planned to write the TINE user- numerous features and a wonderful framework for applications primarily in Java. Java control applications avoiding and catching nagging program errors. Thus have indeed enjoyed widespread acceptance within the there does in fact exist a strong desire to develop control controls community. The next step is then to offer Java as system servers using Java.
    [Show full text]
  • A Post-Apocalyptic Sun.Misc.Unsafe World
    A Post-Apocalyptic sun.misc.Unsafe World http://www.superbwallpapers.com/fantasy/post-apocalyptic-tower-bridge-london-26546/ Chris Engelbert Twitter: @noctarius2k Jatumba! 2014, 2015, 2016, … Disclaimer This talk is not going to be negative! Disclaimer But certain things are highly speculative and APIs or ideas might change by tomorrow! sun.misc.Scissors http://www.underwhelmedcomic.com/wp-content/uploads/2012/03/runningdude.jpg sun.misc.Unsafe - What you (don’t) know sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE // Unsafe mechanics private static final sun.misc.Unsafe U; private static final long QBASE; private static final long QLOCK; private static final int ABASE; private static final int ASHIFT; static { try { U = sun.misc.Unsafe.getUnsafe(); Class<?> k = WorkQueue.class; Class<?> ak = ForkJoinTask[].class; example: QBASE = U.objectFieldOffset (k.getDeclaredField("base")); java.util.concurrent.ForkJoinPool QLOCK = U.objectFieldOffset (k.getDeclaredField("qlock")); ABASE = U.arrayBaseOffset(ak); int scale = U.arrayIndexScale(ak); if ((scale & (scale - 1)) != 0) throw new Error("data type scale not a power of two"); ASHIFT = 31 - Integer.numberOfLeadingZeros(scale); } catch (Exception e) { throw new Error(e); } } } sun.misc.Unsafe
    [Show full text]
  • Free Java Developer Room
    Room: AW1.121 Free Java Developer Room Saturday 2008-02-23 14:00-15:00 Welcome to the Free Java Meeting Welcome and introduction to the projects, people and themes that make Rich Sands – Mark Reinhold – Mark up the Free Java Meeting at Fosdem. ~ GNU Classpath ~ OpenJDK Wielaard – Tom Marble 15:00-16:00 Mobile Java Take your freedom to the max! Make your Free Java mobile. Christian Thalinger - Guillaume ~ CACAO Embedded ~ PhoneME ~ Midpath Legris - Ray Gans 16:00-16:40 Women in Java Technology Female programmers are rare. Female Java programmers are even more Clara Ko - Linda van der Pal rare. ~ Duchess, Ladies in Java Break 17:00-17:30 Hacking OpenJDK & Friends Hear about directions in hacking Free Java from the front lines. Roman Kennke - Andrew Hughes ~ OpenJDK ~ BrandWeg ~ IcePick 17:30-19:00 VM Rumble, Porting and Architectures Dalibor Topic - Robert Lougher - There are lots of runtimes able to execute your java byte code. But which Peter Kessler - Ian Rogers - one is the best, coolest, smartest, easiest portable or just simply the most fun? ~ Kaffe ~ JamVM ~ HotSpot ~ JikesRVM ~ CACAO ~ ikvm ~ Zero- Christian Thalinger - Jeroen Frijters assembler Port ~ Mika - Gary Benson - Chris Gray Sunday 2008-02-24 9:00-10:00 Distro Rumble So which GNU/Linux distribution integrates java packages best? Find out Petteri Raty - Tom Fitzsimmons - during this distro shootout! ~ Gentoo ~ Fedora ~ Debian ~ Ubuntu Matthias Klose 10:00-11:30 The Free Java Factory OpenJDK and IcedTea, how are they made and how do you test them? David Herron - Lillian Angel - Tom ~ OpenJDK ~ IcedTea Fitzsimmons 11:30-13:00 JIT Session: Discussion Topics Dynamically Loaded Want to hear about -- or talk about -- something the Free Java world and don't see a topic on the agenda? This time is reserved for late binding Tom Marble discussion.
    [Show full text]
  • Fedora Core, Java™ and You
    Fedora Core, Java™ and You Gary Benson Software Engineer What is Java? The word ªJavaº is used to describe three things: The Java programming language The Java virtual machine The Java platform To support Java applications Fedora needs all three. What Fedora uses: GCJ and ECJ GCJ is the core of Fedora©s Java support: GCJ includes gcj, a compiler for the Java programming language. GCJ also has a runtime and class library, collectively called libgcj. The class library is separately known as GNU Classpath. ECJ is the Eclipse Compiler for Java: GCJ©s compiler gcj is not used for ªtraditionalº Java compilation. More on that later... Why libgcj? There are many free Java Virtual machines: Cacao, IKVM, JamVM, Jikes RVM, Kaffe, libgcj, Sable VM, ... There are two main reasons Fedora uses libgcj: Availability on many platforms. Ability to use precompiled native code. GNU Classpath Free core class library for Java virtual machines and compilers. The JPackage Project A collection of some 1,600 Java software packages for Linux: Distribution-agnostic RPM packages. Both runtimes/development kits and applications. Segregation between free and non-free packages. All free packages built entirely from source. Multiple runtimes/development kits may be installed. Fedora includes: JPackage-compatible runtime and development kit packages. A whole bunch of applications. JPackage JOnAS Fedora©s Java Compilers gcj can operate in several modes: Java source (.java) to Java bytecode (.class) Java source (.java) to native machine code (.o) Java bytecode (.class, .jar) to native machine code (.o) In Fedora: ECJ compiles Java source to bytecode. gcj compiles that bytecode to native machine code.
    [Show full text]
  • Towards Architectural Programming of Embedded Systems
    Towards Architectural Programming of Embedded Systems Arne Haber, Jan O. Ringert, Bernhard Rumpe Software Engineering, RWTH Aachen University, Germany http://www.se-rwth.de/ Abstract: Integrating architectural elements with a modern programming language is essential to ensure a smooth combination of architectural design and programming. In this position statement, we motivate a combination of architectural description for distributed, asynchronously communicating systems and Java as an example for such an integration. The result is an ordinary programming language, that exhibits archi- tecture, data structure and behavior within one view. Mappings or tracing between different views is unnecessary. A prototypical implementation of a compiler demon- strates the possibilities and challenges of architectural programming. 1 Java with Architectural Elements As stated in [MT00] there are a number of languages that support design, analysis, and further development of software-system-architectures. These languages are commonly known as Architecture Description Languages (ADL) and allow a high level description of software systems of a specific domain. Using an ADL enables reasoning about specific system properties in an early development stage [GMW97]. Furthermore, there are quite often mappings from architecture to a General Purpose Language (GPL), producing code frames for the GPL. This helps ensuring the architectural consistency initially, but when the code evolves the architecture becomes implicitly polluted or when the architecture shall be evolved this needs to be done on the code level. Tracing is therefore important to keep architecture and code aligned. However, it would be much better to integrate both, architecture and code into one single artifact such that tracing is not necessary anymore.
    [Show full text]
  • Virtual Machines Due Date: 6/3 Demo Date: 6/4
    INF 212 Analysis of Programming Languages Project 8 – Virtual Machines Due date: 6/3 Demo date: 6/4 Goal: Get acquainted with a virtual machine. Similarly to the type checking homework, the concrete task in this homework is very simple, but it requires you to analyze and understand an existing Java VM implementation. The task is just a means to the end goal, and not the goal in itself. In process of achieving the goal, students with Windows machines will get the extra benefit of getting acquainted with another kind of virtual machine: an entire operating system virtual machine. For this one, you will not be looking inside, you will only install and use it. Students with Macs and Linux will not need this (and hence miss the opportunity to use it...). Description You will be using JamVM, an open source Java virtual machine (http://jamvm.sourceforge.net/). Start by downloading the latest release. In this project you will create new Opcodes for JamVM. Opcodes 248-255 are unused by JamVM and thus are the Opcodes that you will be adding additional functionality for. A testcase is provided for you (here). Since the compiler will not be aware of your new opcodes, you will need to edit your .class files manually using a binary/hex editor if you wish to create different test cases. The new opcodes will replace the IADD opcode during a standard arithmetic expression. For an expression x + y you need to replace the byte representing IADD (60 in hexadecimal) with the value of the new opcode.
    [Show full text]
  • Thesis Proposal) Overview
    YETI: Gradually Extensible Trace Interpreter Mathew Zaleski, University of Toronto [email protected] (thesis proposal) Overview ‣Introduction • Background • Efficient Interpretation • Our Approach to Mixed-Mode Execution • Results and Discussion Thesis Proposal Jan 2006 2 Why so few JIT compilers? • Complex JIT infrastructure built in “big bang”, before any generated code can run. • Rather than incrementally extend the interpreter, typical JITs is built alongside. • The code generator of current JIT compilers makes little provision to reuse the interpreter. • The method-orientation of most JITs means that cold code is compiled with hot. ‣ Interpreters should be more gradually extensible to become dynamic compilers. Thesis Proposal Jan 2006 3 Problems with current practice • Packaging of virtual instruction bodies is: • Inefficient: Interpreters slowed by branch misprediction • Non-reusable: JIT compilers must implement all virtual instructions from scratch • Method orientation of a JIT compiler forces it to compile cold code along with hot. • Code compiled cold requires complex runtime to perform late binding if it runs. • Recompiling cold code that becomes hot requires complex recompilation infrastructure. Thesis Proposal Jan 2006 4 Our Approach • Branch prediction problems of interpretation can be addressed by calling the virtual bodies. • Can speed up interpretation significantly. • Enables generated code to call the bodies. • JIT need not support all virtual instructions. • Complexity of compiling cold code can be side stepped by compiling dynamically selected regions that contain only hot code. • We describe how compiling traces allows us to compile only hot code and link on newly hot regions as they emerge. ‣ Enables gradual enhancement of interpreter Thesis Proposal Jan 2006 5 Overview of Contribution method based interpretation JIT • Callable bodies make for efficient interpretation.
    [Show full text]
  • Icedtea and Icedtea-Web
    IcedTea and IcedTea-Web Andrew Overholt Principal Software Engineer Red Hat Canada 2011-11-03 1 ● IcedTea Persistent index will always show current point ● OpenJDK vs JDK ● What? ● Who? ● Why? JavaOne Slide Template Title ● Future ● IcedTea-Web Agenda ● What? ● History ● Why? ● Features ● Future ● Questions This presentation is designed to be used with audio as a primary mode of content delivery. If you have downloaded it, see notes section for rough notes on applicable slides (draft quality). For pdf, it should be at the end of the slide deck. OpenJDK vs JDK ● IcedTea ● OpenJDK vs JDK ● Deployment tools ● What? ● Serviceability tools ● Who? ● Why? ● HotSpot Virtual machine ● Future ● Interpreter ● JIT compiler ● IcedTea-Web JDK ● What? ● Tools (javac, javadoc, etc.) ● History OpenJDK ● Why? ● Class libraries ● Features Closed ● ● Future Public API 95%+ 5%+ ● Questions + Last heard, for OpenJDK7 and JDK7 What is IcedTea? ● IcedTea ● OpenJDK vs JDK ● What? ● Who? ● Why? …... ● Future ● IcedTea-Web ● What? ● History ● Why? ● Features IcedTea ● Future ● Questions Image sources: http://www.openclipart.org/detail/22436 http://www.openclipart.org/detail/22712 Some of the users... ● IcedTea ● OpenJDK vs JDK ● What? ● Who? ● Why? ● Future ● IcedTea-Web ● What? ● History ● Why? (IcedTea-Web only) ● Features ● Future ● Questions Some of the contributors... ● IcedTea ● OpenJDK vs JDK ● What? ● Who? ● Why? ● Future ● IcedTea-Web ● What? ● History ● Why? (IcedTea-Web only) ● Features ● Future (Indirectly through OpenJDK) ● Questions All logos are copyright by their respective owners Why was IcedTea created? ● IcedTea ● OpenJDK vs JDK ● What? ● Who? ● Why? ● Future ● IcedTea-Web Build ● What? ● History ● Why? ● Features (For the first release...) ● Future ● Questions Image sources: http://www.openclipart.org/detail/30223 To fix the build..
    [Show full text]
  • GNU Classpath
    GNU Classpath Core Classes for a Diversity of Java Virtual Machines February 2004 ■ Sascha Brawer [email protected] http://www.dandelis.ch/people/brawer/ ■ Mark Wielaard [email protected] http://www.klomp.org/mark/ Overview ■ Overview – Motivation – Anatomy of a Java-like system – Documentation, Quality assurance, Releases ■ Demo ■ Details – Current state – VMs using GNU Classpath ■ How you can help 2 Motivation ■ Currently, most free software is written in C The Good The Bad The Ugly Close to hardware Easy to make bugs Libraries not Fast execution, even Lacks “modern” well integrated with bad compilers language concepts Difficult to learn Large code base, (“modern” = 1980’ies) many libraries Hard to write Ubiquitous portable code 3 Motivation ■ Java is a good foundation for many projects – Type-safety ● Avoids many typical bugs, crashes, security problems ● More opportunities for optimizing compilers – Modular, object-oriented, concurrent, dynamic – Easier to write structured, portable code – Very rich library, reasonably well designed (mostly) – Large developer base (“COBOL of the 1990’ies”) ● There exist lots of other good (even better?) languages: Oberon, Eiffel, O’Caml, Haskell, Erlang, TOM, Cedar, ... ● But: They have not many free applications/libraries 4 Motivation ■ But: Java does not solve every problem – Over-hyped as a solution to everything – Bad reputation for wasting resources (CPU, RAM) ● It is easy to write inefficient programs ● Early implementations were very slow ● Type-safety and memory management have their cost – Often over-estimated: Array bounds checking (→ no buffer overflows) costs ~2% execution time, avoids ~50% security-related bugs – Syntax similar to C++ → not very easy to learn 5 Motivation ■ Java is a compromise Why GNU Will Be – Not necessarily ideal, Compatible with UNIX but reasonable Unix is not my ideal system, but it is not too bad.
    [Show full text]
  • By Mathew Zaleski a Thesis Submitted in Conformity with the Requirements
    YETI: A GRADUALLYEXTENSIBLE TRACE INTERPRETER by Mathew Zaleski A thesis submitted in conformity with the requirements for the degree of Doctor of Philosophy Graduate Department of Computer Science University of Toronto Copyright c 2007 by Mathew Zaleski ii Abstract YETI: a graduallY Extensible Trace Interpreter Mathew Zaleski Doctor of Philosophy Graduate Department of Computer Science University of Toronto 2007 The implementation of new programming languages benefits from interpretation because it is simple, flexible and portable. The only downside is speed of execution, as there remains a large performance gap between even efficient interpreters and systems that include a just-in- time (JIT) compiler. Augmenting an interpreter with a JIT, however, is not a small task. Today, Java JITs are typically method-based. To compile whole methods, the JIT must re-implement much functionality already provided by the interpreter, leading to a “big bang” development effort before the JIT can be deployed. Adding a JIT to an interpreter would be easier if we could more gradually shift from dispatching virtual instructions bodies implemented for the interpreter to running instructions compiled into native code by the JIT. We show that virtual instructions implemented as lightweight callable routines can form the basis for a very efficient interpreter. Our new technique, interpreted traces, identifies hot paths, or traces, as a virtual program is interpreted. By exploiting the way traces predict branch desti- nations our technique markedly reduces branch mispredictions caused by dispatch. Interpreted traces are a high-performance technique, running about 25% faster than direct threading. We show that interpreted traces are a good starting point for a trace-based JIT.
    [Show full text]
  • The Openjdk Project? How Is It Run? How Can I Contribute? Where Now and Next?
    TheThe OpenJDKOpenJDK ProjectProject PastPast AndAnd PresentPresent Andrew Dinn Red Hat Open Source Java Team March 2014 1 Andrew Dinn AgendaAgenda What Is the OpenJDK Project? How Is It Run? How Can I Contribute? Where Now and Next? 2 Andrew Dinn AgendaAgenda What Is the OpenJDK Project? How Is It Run? How Can I Contribute? Where Now and Next? 3 Andrew Dinn What Is The OpenJDK Project? ● The Open Source Java project ● Started by Sun in 2006 ● Released Hotspot JVM and Class Library (JDK) ● under GPL ● with Classpath Exception ● Still basis of Sun/Oracle proprietary Java ● Other contributors include ● Red Hat, SAP, IBM ● http://openjdk.java.net 4 Andrew Dinn What Is The OpenJDK Project? (2) ● Distributes mainline OpenJDK releases ● JDK9 (dev) ● JDK8, JDK7 (update) ● JDK6 (Oracle eol – security patches only) ● Produces many OpenJDK versions/variants ● ports ● operating system – Linux/Windows/AIX/Solaris/OSX/BSD ● cpu – x86_32/x86_64/AArch64/ppc/SPARC/zero ● R&D variants ● Lambda, DaVinci, Jigsaw, Graal, Sumatra 5 Andrew Dinn What Else Is OpenJDK? ● The Reference Implementation of Java SE ● Strictly only since JDK7 ● Java SE based on Java Language Spec ● available online or as a printed book ● Each JDK defined by JCP using JSRs ● R&D projects pave the way for new JSRs ● Conformance ensured by JCK ● Every JSR required to provide a TCK ● JCK freely available for GPL derived works ● But not to other Free java projects 6 Andrew Dinn What is IcedTea? Original code base included non-free code ● provided as binary 'plugs' ● Red Hat IcedTea replaced plugs with free code ● with help from Sun/Oracle and others ● Free OpenJDK6 in June 2008 ● Free OpenJDK7 in April 2009 ● Most widely distributed Free Java runtime ● Initially patch-based ● Download OpenJDK as release bundles ● patch src + make tree then build 7 Andrew Dinn What Else is IcedTea? OpenJDK7+ code is now fully free ● IcedTea src/make tree changes upstreamed ● Red Hat now build OpenJDK from cloned repositories ● pull down upstream changes ● still maintain variant code base to support .
    [Show full text]
  • Guideline Document and Peripheral Input/Output Libraries for Developments
    Keeping Emulation Environments Portable FP7-ICT-231954 Guideline document and peripheral input/output libraries for developments Deliverable number D 5.1 Nature Other Dissemination level PU Delivery date Due: M8 (September 2009) Actual: M8 (September 2009) Status Final Workpackage number WP5 Lead beneficiary UPHEC Author(s) Antonio Ciuffreda, UPHEC David Anderson, UPHEC Janet Delve, UPHEC Getaneh Agegn Alemu, UPHEC Dan Pinchbeck, UPHEC Bram Lohman,TSSP David Michel, TSSP Bart Kiers, KB Vincent Joguin, JOG D 5.1 Guideline document and peripheral input/output libraries for developments Document history Revisions Version Date Author Changes 0.1 3 September 2009 Bram Lohman Sections 3.2 and 3.3 0.2 5 September 2009 Vincent Joguin Section 3.3 0.3 11 September 2009 David Michel Sections 1.2, 2.1, 2.2, 2.3, 3.1.1, 3.1.2, 3.1.4, 3.2, 3.3, 4.2.1 and 4.2.7 0.4 15 September 2009 Vincent Joguin Executive Summary, Abbreviations, Sections 3.1.1 and 3.1.4 0.5 15 September 2009 David Anderson Executive Summary, Abbreviations, Sections 1, 2, 3 and 4 Reviews Date Name Result 23/09/2009 Jean Marc Saffroy Approved with changes 29/09/2009 Jeffrey van der Hoeven Approved with changes Signature/Approval Approved by (signature) Date Accepted by at European Commission (signature) Date KEEP_WP5_D5.1_Guideline-Document-and-Peripheral-Input-Output-Libraries-for-Developments_v1.0.doc 2/23 D 5.1 Guideline document and peripheral input/output libraries for developments Executive Summary This report presents the initial integration strategy of the KEEP Emulation Access Platform (EAP) components, with a focus on the methodologies used to integrate the Core Emulation Framework (CEF) with the Olonys Virtual Machine (VM), the Front-end Emulation Framework (FEF) and external web services.
    [Show full text]