Modularisierung Virtueller Maschinen Implementierung Und Evaluierung Einer Architekturbeschreibungssprache

Total Page:16

File Type:pdf, Size:1020Kb

Modularisierung Virtueller Maschinen Implementierung Und Evaluierung Einer Architekturbeschreibungssprache Fachgebiet Software‐Architekturen Hasso‐Plattner‐Institut Universität Potsdam Masterarbeit Modularisierung virtueller Maschinen Implementierung und Evaluierung einer Architekturbeschreibungssprache Stefan Marr 30.09.2008 Betreuung Dr. Michael Haupt Prof. Dr. Robert Hirschfeld i DANKSAGUNG Ich möchte mich bei allen bedanken, die zum Gelingen dieser Arbeit beigetragen haben. Ganz besonders möchte ich mich bei Dr. Michael Haupt und Prof. Dr. Robert Hirschfeld für ihre Betreuung und ihre Unterstützung beda nken, die mir sehr dabei geholfen hat, dieser Arbeit zu einem erfolgreichen Abschluss zu bringen. Darüber hinaus möchte ich mich bei den Studenten bedanken, die an den Vor‐ lesungen Virtuelle Maschinen in den Jahren 2007 und 2008 teilgenommen und mir ihre Erweiterungen der CSOM‐VM für diese Arbeit zur Verfügung gestellt und somit die technische Grundlage für meine Untersuchungen gelegt haben. Bei Michael Perscheid bedanke ich mich sehr für die Betreuung der Kontrollgruppe des Experiments. Mein Dank geht auch an Arne Bergmann, Juri Engel, Frank Feinbube, Gregor Gabrysiak, Jan Klimke, Murat Knecht, Thomas Kowark, Daniel Richter, Michael Seegers und Robert Wierschke für ihre Mitwirkung als Probanden am Experiment. Abschließende möchte ich mich bei Tobias Pape und Tobias Vogel für das Korrek‐ turlesen dieser Arbeit und ihre zahlreichen Anregungen und Verbesserungsvorschläge bedanken. ii iii ABSTRACT Today, high‐level language virtual machines are custom‐made special purpose systems optimized for specific domains like embedded devices. Their implementation suffers from high complexity, strongly intertwined subsystems and little maintainability. This is caused by insufficient modularization techniques failing to represent the system ar‐ chitecture in the code. To overcome this situation, the Virtual Machine Architecture Definition Language (VMADL) has been proposed. In this work, the language features of VMADL are investigated and a VMADL compiler is implemented to conduct a case study on an existing Smalltalk VM written in C named CSOM. The aim of this case study is to test the language on CSOM and to modularize it in a way that it is possible to build a product family of VMs out of it, to be able to benefit from a product‐line approach for customizing VMs. In a first step, CSOM is reverse en‐ gineered and several feature implementations are analyzed for their specific require‐ ments on modularization. Based on this examination, a CSOM specific feature‐oriented class definition language is added to VMADL to allow a completely modularized imple‐ mentation of all analyzed features. Afterwards, the case study is evaluated using several metrics to prove that the code overhead caused by VMADL is minimal and necessary for the architecture and modu‐ larization. Furthermore, it is shown that there is no negative impact on the runtime performance of the system. To prove the positive influence of VMADL on architectural comprehension and maintainability, an experiment with students is designed and con‐ ducted. Eventually, this work demonstrates how VMADL can be used to explicitly ex‐ press the architecture of a VM in the code, improve modularization, and add the neces‐ sary variability to build a VM product family. iv v ZUSAMMENFASSUNG Virtuelle Maschinen für Hochsprachen werden meist als Spezialanfertigungen für einen bestimmten Zweck entwickelt. Sie sind jeweils für genau ein Anwendungsgebiet z. B. den Einsatz im Bereich eingebetteter Systeme optimiert. Ihre Implementierungen sind aufgrund der hohen Komplexität und engen Verknüpfungen der einzelnen Systemteile nur unzureichend modularisiert. Daher ist die Architektur solcher Systeme nur schlecht erkennbar und der Wartungsaufwand für sie entsprechend stark erhöht. Um statt einzelnen Spezialanfertigungen im Bereich der virtuellen Maschinen auf Techniken für die Entwicklung von Produktfamilien zurückgreifen zu können, wurde die Virtual Machine Architecture Definition Language (VMADL) vorgeschlagen. In dieser Arbeit werden ihre Sprachmittel untersucht, ein Compiler für die Verwendung von VMADL in Verbindung mit C implementiert und die Sprache in einer Fallstudie auf eine CSOM ge‐ nannte, bereits vorhandene Smalltalk‐VM angewandt. Das Ziel der Fallstudie ist es, die Sprachmittel von VMADL zu testen und CSOM so zu modularisieren, dass es möglich ist, eine Produktfamilie von VMs zu entwickeln. Dazu wird im ersten Schritt ein Reverse‐Engineering für CSOM durchgeführt und ver‐ schiedene Erweiterungen auf ihre jeweils spezifischen Anforderungen an Modularisierungsmechanismen untersucht. Daraus ergibt sich der Bedarf für einen featureorientierten Ansatz, der mit der für CSOM entworfenen Klassenbeschreibungs‐ sprache ClassDL ebenfalls vorgestellt wird. Zum Abschluss werden die aus den einzel‐ nen Erweiterungen extrahierten Features und ihre Modularisierung mit VMADL be‐ trachtet. Zur Evaluierung der Fallstudie werden verschieden Metriken genutzt, um zu zeigen, dass der zusätzliche Quelltext durch VMADL minimal ist und allein durch die für das Architekturverständnis und die Modularität benötigten Konstrukte entsteht. Die Untersuchungen zeigen zudem, dass kein negativer Einfluss auf die Performance vor‐ handen ist. Zusätzlich wird ein Experiment entworfen und durchgeführt, das zeigen soll, ob Probanden, bei Verwendung von VMADL das gestellte Problem schneller lösen können und dabei die bestehende Architektur weniger beeinflussen, als dies ohne VMADL der Fall wäre. Letztendlich zeigt diese Arbeit, dass mit VMADL die Architektur einer virtuellen Maschine durch höhere Modularität verbessert und durch die zusätz‐ liche Flexibilität als Produktfamilie gestaltet werden kann. vi vii ERKLÄRUNG Hiermit erkläre ich, dass ich zum Verfassen dieser Arbeit keine anderen Quellen und Hilfsmittel als die angegebenen verwendet habe. Potsdam, den 22.09.2008 Stefan Marr viii ix INHALTSVERZEICHNIS Danksagung ........................................................................................................................................................ i Abstract .............................................................................................................................................................. iii Zusammenfassung .......................................................................................................................................... v Inhaltsverzeichnis .......................................................................................................................................... ix Abbildungsverzeichnis ........................................................................................................................... xii Quelltextverzeichnis ............................................................................................................................... xii Tabellenverzeichnis ................................................................................................................................ xii 1 Einleitung .................................................................................................................................................. 1 1.1 Zielsetzung der Arbeit ............................................................................................................... 1 1.2 Grundlage dieser Arbeit ............................................................................................................ 1 1.3 Beitrag dieser Arbeit .................................................................................................................. 2 1.4 Struktur der Arbeit ..................................................................................................................... 2 2 Implementierung virtueller Maschinen ....................................................................................... 5 2.1 Abstraktionsgewinn durch virtuelle Maschinen ............................................................ 5 2.2 Kom plexität in virtuellen Maschinen .................................................................................. 6 2.2.1 Anforderungen an virtuelle Maschinen .................................................................... 6 2.2.2 Spezialanfertigungen, optimiert für einzelne Einsatzgebiete.......................... 6 2.2.3 Implementierungsstrategien......................................................................................... 7 2.3 Arch itektur virtueller Maschinen ......................................................................................... 8 2.3.1 Grundbestandteile ............................................................................................................. 8 2.3.2 Modulabhängigkeiten und Interaktionen ............................................................. 10 2.3.3 Auswirkungen auf die Modularisierung ................................................................ 12 2.4 Architekturbeschreibungssprachen ................................................................................. 14 3 VMA DL .................................................................................................................................................... 17 3.1 Einführung ................................................................................................................................... 17 3.2 Sprachumfang ............................................................................................................................ 18 3.3 Testlauf für VMADL mit C und Aspicere2 ......................................................................
Recommended publications
  • Toward Harnessing High-Level Language Virtual Machines for Further Speeding up Weak Mutation Testing
    2012 IEEE Fifth International Conference on Software Testing, Verification and Validation Toward Harnessing High-level Language Virtual Machines for Further Speeding up Weak Mutation Testing Vinicius H. S. Durelli Jeff Offutt Marcio E. Delamaro Computer Systems Department Software Engineering Computer Systems Department Universidade de Sao˜ Paulo George Mason University Universidade de Sao˜ Paulo Sao˜ Carlos, SP, Brazil Fairfax, VA, USA Sao˜ Carlos, SP, Brazil [email protected] [email protected] [email protected] Abstract—High-level language virtual machines (HLL VMs) have tried to exploit the control that HLL VMs exert over run- are now widely used to implement high-level programming ning programs to facilitate and speedup software engineering languages. To a certain extent, their widespread adoption is due activities. Thus, this research suggests that software testing to the software engineering benefits provided by these managed execution environments, for example, garbage collection (GC) activities can benefit from HLL VMs support. and cross-platform portability. Although HLL VMs are widely Test tools are usually built on top of HLL VMs. However, used, most research has concentrated on high-end optimizations they often end up tampering with the emergent computation. such as dynamic compilation and advanced GC techniques. Few Using features within the HLL VMs can avoid such problems. efforts have focused on introducing features that automate or fa- Moreover, embedding testing tools within HLL VMs can cilitate certain software engineering activities, including software testing. This paper suggests that HLL VMs provide a reasonable significantly speedup computationally expensive techniques basis for building an integrated software testing environment. As such as mutation testing [6].
    [Show full text]
  • Návrh Zásobníkového Procesoru Pro Vestavěné Systémy a Implementace Podpůrných Nástrojů
    České vysoké učení technické v Praze Fakulta elektrotechnická Katedra řídicí techniky Návrh zásobníkového procesoru pro vestavěné systémy a implementace podpůrných nástrojů DIPLOMOVÁ PRÁCE Vypracoval: Jan Procházka Vedoucí práce: Ing. Pavel Píša PhD. Rok: 2012 zadani Prohlášení Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil jsem pouze podklady (literaturu, projekty, SW atd.) uvedené v přiloženém seznamu. V Praze dne .................... .….............................. Jan Procházka Poděkování Na tomto místě bych chtěl poděkovat Ing. Pavlu Píšovi Ph.D. za vedení mé práce, za poskytnutí podkladů k vypracování, a za cenné rady. Také bych chtěl poděkovat rodině za podporu v době psaní této práce. Jan Procházka Abstrakt Obsahem této práce je v teoretické části analýza virtuálních strojů založených jak na registrové, tak na zásobníkové technologii. Hlavním cílem bude navrhnout interpret typu Forth a zásobníkovou mikroprocesorovou architekturu vhodnou pro vestavěné aplikace řídicích systémů jako řízení, například číslicových systémů, s požadavkem na jednoduchost nejen celé architektury, ale i diagnostiky systému. Následně bude vytvořen interpret portovatelný na cizí platformy. Nakonec bude provedena diskuse aplikace synchronní a asynchronní architektury při návrhu mikroprocesoru. Abstract Content of this thesis is, in the first, theoretical part, virtual machine analysis based on register as well as stack technology. Main goal will be to design Forth style interpreter and stack microprocessor architecture which would
    [Show full text]
  • EINLADUNG Zum Gastvortrag Am Freitag, 26
    Fachbereich Computerwissenschaften EINLADUNG zum Gastvortrag am Freitag, 26. Nov. 2010, 15:15 Uhr, T01 Institutsgebäude Jakob-Haringer-Str. 2, Itzling von Doug Simon Sun Microsystems Laboratories zum Thema: “What a meta-circular JVM buys you - and what not!” Abstract: Since the open source release of the Maxine VM, it has progressed to the point where it can now run application servers such as Glassfish and WebLogic. With the recent addition of a new compiler that leverages the mature design behind the HotSpot client compiler (aka C1), the VM is on track to deliver performance on par with the HotSpot client compiler and better. At the same time, its adoption by VM researchers and enthusiasts is increasing. That is, we believe the productivity advantages of system level programming in Java are being realized. This talk will highlight and demonstrate the advantages of both the Maxine architecture and of meta-circular JVM development in general. Bio: Doug Simon is a Principle Member of Technical Staff at Oracle working in Sun Labs and is currently leading the Maxine project, an open source Virtual Machine for the JavaTM platform written in Java. Prior to Maxine, Doug co-developed Squawk, a CLDC compliant JVM implemented also in Java. His first project at the labs was investigating secure, fine-grained dynamic provisioning of applications on small devices. Once again, this work was in the context of a VM, this time a modified version of the KVM, which was the last non-Java-in-Java VM Doug hacked on! Doug obtained a Bachelors in Information Technology from the University of Queensland in 1997, graduating with first class honors.
    [Show full text]
  • Java Virtual Machines
    ch01.qxd 12/5/2001 9:16 AM Page xxiv The Basics of J2ME Topics in this Chapter • Java Editions • Why J2ME? • Configurations • Profiles • Java Virtual Machines • Big Picture View of the Architecture • Compatibility between Java Editions • Putting all the Pieces Together ch01.qxd 12/5/2001 9:16 AM Page 1 1 ChapterChapter t all started with one version of Java—now known as Java 2 Standard Edi- tion (J2SE)—and the tagline “Write Once, Run Anywhere ™.” The idea Iwas to develop a language in which you would write your code once, and then it would run on any platform supporting a Java Virtual Machine. Since its launch in 1995, the landscape has changed significantly. Java has extended its reach far beyond desktop machines. Two years after the intro- duction of Java, a new edition was released, Java 2 Enterprise Edition, pro- viding support for large-scale, enterprise-wide applications. The most recent addition to the family is the Micro Edition, targeting “information appli- ances,” ranging from Internet-enabled TV set-top boxes to cellular phones. Java Editions Let’s begin with a quick summary of the Java platforms currently available: • Standard Edition (J2SE): Designed to run on desktop and workstations computers. 1 ch01.qxd 12/5/2001 9:16 AM Page 2 2 Chapter 1 The Basics of J2ME • Enterprise Edition (J2EE): With built-in support for Servlets, JSP, and XML, this edition is aimed at server-based applications. • Micro Edition (J2ME): Designed for devices with limited memory, display and processing power. Note In December of 1998, Sun introduced the name “Java 2” (J2) to coincide with the release of Java 1.2.This new naming convention applies to all edi- tions of Java, Standard Edition (J2SE), Enterprise Edition (J2EE), and Micro Edition (J2ME).
    [Show full text]
  • Sun SPOTにおけるSSRMIの実装
    Vol.2010-SE-167 No.18 情報処理学会研究報告 2010/3/18 IPSJ SIG Technical Report 可能で,各デバイスを使用して無線によるネットワークを構築することができる. Sun SPOT には標準で温度,照度,加速といった種類のセ Sun SPOT における SSRMI の実装 ンサが用意されている.他にも汎用の IO ピンやアナログの入 力ピンなどが用意されているため,ユーザによるセンサの追 1 1 加などにも対応し,センサ類だけでなくモーターの制御やそ 大 宮 佑 介† 杉山安洋† の他,高度な制御に用いることも可能である.これらを無線 無線センサネットワークを容易に構築する事の出来るデバイスとして Sun SPOT ネットワークを利用して活用することが可能で,様々な分野 がある.Sun SPOT を使用すれば Java 言語を用いて容易にプログラムを作成し動作 に応用が期待されている. させる事が可能である.しかし,Sun SPOT ではネットワーク上に存在するリモー 一般的にネットワークを使用したプログラムは複雑になる トオブジェクトのメソッドを呼び出す技術が実装されていない.そこで,本研究では Sun SPOT 向けのリモートメソッド呼び出しフレームワークとして SSRMI を提案 ことが多く,開発者にとって大きな負担となる場合が多い. し,そのアーキテクチャと実装方法について述べる. Java SE(Standard Edition) ではネットワークを通してのメ ソッド呼び出しを容易に実現することができる技術の一つで Implementation of SSRMI on Sun SPOT ある RMI(Remote Method Invocation)2) と呼ばれる技術が 用意されている. 図 1 1 1 SunSPOT し か し ,Sun SPOT ではモバイル機器向けの Java Yusuke Ohmiya† and Yasuhiro Sugiyama† Fig. 1 SunSPOT MIDP2.03)(Mobile Information Device Profile 2.0) を採用 Sun SPOT is a device designed to build wireless sensor networks. Sun SPOT しておりネットワークを通してのメソッド呼び出しが実装さ includes a Java virtual machine to allow programs written in Java to run on it. れていない.本稿では, 向けの として を提案 However, the current Sun SPOT technology does not allow remote method calls Sun SPOT RMI SSRMI(Sun SPOT RMI) over networks. We propose a remote method invocation framework SSRMI for し,そのアーキテクチャと実装について述べる. Sun SPOT. This paper will show its architecture and implementation. 本稿の構成は以下の通りである.まず,2節で RMI の概要と,RMI を Sun SPOT へ実 装する場合の問題点について述べる.3節で SSRMI の概要,4節で実装,5節でその使用 方法を述べる.6節で SSRMI の評価と 7 節で関連技術について述べる. 1. は じ
    [Show full text]
  • Title of the Work
    Masters Thesis Performance Analysis and Improvement of GuestVM for running OSGi-based MacroComponents by Jianyuan Li Due date 22. August 2010 Advisors: Jan Simon Rellermeyer Adrian Sch¨upbach Prof. Gustavo Alonso ETH Zurich, Systems Group Department of Computer Science 8092 Zurich, Switzerland ii Abstract MacroComponents defined as software components that run in isolated environ- ments but without the full foundations of the traditional software stack is an alternative, lightweight and composable approach to virtualization. GuestVM, which is a bare-metal, meta-circular Java Virtual Machine, is the core of the MacroComponents in this work. It sits directly between Xen hypervisor and OSGi applications to play a role as an operating system as well as a JVM. GuestVM has the potential for good performance because of its minimal, all- Java software stack and the elimination of traditional operating system layer. Nevertheless, GuestVM performs very poor in reality according to the previous work. The main aim of this work is to analyze and figure out the performance bottlenecks and remove them to improve GuestVM's performance, and thus make it a possible solution for MacroComponents in practice. Through the evaluations, GuestVM does not add overhead to Maxine in terms of memory access, and the performance is comparable to HotSpot JVM without considering the optimization of HotSpot JVM's working memory. By optimiz- ing code, giving sufficient file system buffer cache and implementing a prefetch- ing mechanism, the I/O performance of GuestVM on average can be improved to only 50% slower than HotSpot JVM (even outperforms HotSpot JVM in many cases), and 4 times faster than Maxine.
    [Show full text]
  • Androidmanifest.Xml
    CYAN YELLOW SPOT MATTE MAGENTA BLACK PANTONE 123 C ® Companion BOOKS FOR PROFESSIONALS BY PROFESSIONALS eBook Available ndroid, Google’s open-source platform for mobile development, has Pro Athe momentum to become the leading mobile platform. Pro Android 2 Covers Google’s Android 2 Platform including advanced shows you how to build real-world mobile apps using Google’s Android SDK. Android is easy to learn yet comprehensive, and is rich in functionality. topics such as OpenGL, Widgets, Text to Speech, The absence of licensing fees for Android OS has borne fruit already with many Multi-Touch, and Titanium Mobile distinct device manufacturers and a multiplicity of models and carriers. Indi- vidual developers have a great opportunity to publish mobile applications on 2 Android the Android Market; in only five months’ time the number of applications has doubled, with over 20,000 available today. And the widespread use of Android has increased demand for corporate developers as companies are looking for a mobile presence. You can be part of this. With real-world source code in hand, Pro Android 2 covers mobile application development for the Android platform from basic concepts such as Android Resources, Intents, and Content Providers to OpenGL, Text to Speech, Multi- touch, Home Screen Widgets, and Titanium Mobile. We teach you how to build Android applications by taking you through Android APIs, from basic to ad- vanced, one step at a time. Android makes mobile programming far more accessible than any other mobile platforms available today. At no cost to you, you can download the Eclipse IDE and the Android SDK, and you will have everything you need to start writing great applications for Android mobile devices.
    [Show full text]
  • Program Transformation with Reflection and Aspect-Oriented
    Program Transformation with Reflection and Aspect-Oriented Programming Shigeru Chiba Dept. of Mathematical and Computing Sciences Tokyo Institute of Technology, Japan Abstract. A meta-programming technique known as reflection can be regarded as a sophisticated programming interface for program trans- formation. It allows software developers to implement various useful program transformation without serious efforts. Although the range of program transformation enabled by reflection is quite restricted, it cov- ers a large number of interesting applications. In particular, several non-functional concerns found in web-application software, such as dis- tribution and persistence, can be implemented with program transforma- tion by reflection. Furthermore, a recently emerging technology known as aspect-oriented programming (AOP) provides better and easier pro- gramming interface than program transformation does. One of the roots of AOP is reflection and thus this technology can be regarded as an ad- vanced version of reflection. In this tutorial, we will discuss basic concepts of reflection, such as compile-time reflection and runtime reflection, and its implementation techniques. The tutorial will also cover connection between reflection and aspect-oriented programming. 1 Introduction One of significant techniques of modern software development is to use an appli- cation framework, which is a component library that provides basic functionality for some particular application domain. If software developers use such an ap- plication framework, they can build their applications by implementing only the components intrinsic to the applications. However, this approach brings hid- den costs; the developers must follow the protocol of the application framework when they implement the components intrinsic to their applications. Learning this framework protocol is often a serious burden of software developers.
    [Show full text]
  • Dynamic Code Evolution for Java
    JOHANNES KEPLER UNIVERSITAT¨ LINZ JKU Technisch-Naturwissenschaftliche Fakult¨at Dynamic Code Evolution for Java DISSERTATION zur Erlangung des akademischen Grades Doktor im Doktoratsstudium der Technischen Wissenschaften Eingereicht von: Dipl.-Ing. Thomas W¨urthinger Angefertigt am: Institut f¨ur Systemsoftware Beurteilung: Univ.-Prof. Dipl.-Ing. Dr. Dr.h.c. Hanspeter M¨ossenb¨ock (Betreuung) Univ.-Prof. Dipl.-Ing. Dr. Michael Franz Linz, M¨arz 2011 Oracle, Java, HotSpot, and all Java-based trademarks are trademarks or registered trademarks of Oracle in the United States and other countries. All other product names mentioned herein are trademarks or registered trademarks of their respective owners. Abstract Dynamic code evolution allows changes to the behavior of a running program. The pro- gram is temporarily suspended, the programmer changes its code, and then the execution continues with the new version of the program. The code of a Java program consists of the definitions of Java classes. This thesis describes a novel algorithm for performing unlimited dynamic class redefi- nitions in a Java virtual machine. The supported changes include adding and removing fields and methods as well as changes to the class hierarchy. Updates can be performed at any point in time and old versions of currently active methods will continue running. Type safety violations of a change are detected and cause the redefinition to fail grace- fully. Additionally, an algorithm for calling deleted methods and accessing deleted static fields improves the behavior in case of inconsistencies between running code and new class definitions. The thesis also presents a programming model for safe dynamic updates and discusses useful update limitations that allow a programmer to reason about the semantic correctness of an update.
    [Show full text]
  • Mercury: Properties and Design of a Remote Debugging Solution Using Reflection
    JOURNAL OF OBJECT TECHNOLOGY Published by AITO — Association Internationale pour les Technologies Objets http://www.jot.fm/ Mercury: Properties and Design of a Remote Debugging Solution using Reflection Nick Papouliasa Noury Bouraqadib Luc Fabresseb Stéphane Ducassea Marcus Denkera a. RMoD, Inria Lille Nord Europe, France http://rmod.lille.inria.fr b. Mines Telecom Institute, Mines Douai http://car.mines-douai.fr/ Abstract Remote debugging facilities are a technical necessity for devices that lack appropriate input/output interfaces (display, keyboard, mouse) for program- ming (e.g., smartphones, mobile robots) or are simply unreachable for local development (e.g., cloud-servers). Yet remote debugging solutions can prove awkward to use due to re-deployments. Empirical studies show us that on aver- age 10.5 minutes per coding hour (over five 40-hour work weeks per year) are spent for re-deploying applications (including re-deployments during debugging). Moreover current solutions lack facilities that would otherwise be available in a local setting because it is difficult to reproduce them remotely. Our work identifies three desirable properties that a remote debugging solution should exhibit, namely: run-time evolution, semantic instrumentation and adaptable distribution. Given these properties we propose and validate Mercury, a remote debugging model based on reflection. Mercury supports run-time evolution through a causally connected remote meta-level, semantic instrumentation through the reification of the underlying execution environment and adaptable distribution through a modular architecture of the debugging middleware. Keywords Remote Debugging, Reflection, Mirrors, Run-Time Evolution, Se- mantic Instrumentation, Adaptable Distribution, Agile Development 1 Introduction More and more of our computing devices cannot support an IDE (such as our smartphones or tablets) because they lack input/output interfaces (keyboard, mouse or screen) for development (e.g., robots) or are simply locally unreachable (e.g., cloud-servers).
    [Show full text]
  • Writing R Extensions
    Writing R Extensions Version 4.1.1 Patched (2021-09-22) R Core Team This manual is for R, version 4.1.1 Patched (2021-09-22). Copyright c 1999{2021 R Core Team Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into an- other language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the R Core Team. i Table of Contents Acknowledgements ::::::::::::::::::::::::::::::::::::::::::::::::: 1 1 Creating R packages ::::::::::::::::::::::::::::::::::::::::::: 2 1.1 Package structure :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 3 1.1.1 The DESCRIPTION file ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 4 1.1.2 Licensing ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 8 1.1.3 Package Dependencies::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 9 1.1.3.1 Suggested packages:::::::::::::::::::::::::::::::::::::::::::::::::::::: 12 1.1.4 The INDEX file ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 13 1.1.5 Package subdirectories :::::::::::::::::::::::::::::::::::::::::::::::::::::::
    [Show full text]
  • Openjdk & What It Means for the Java Developer
    OpenJDK & What it means for the Java Developer Dalibor Topić Java F/OSS Ambassador Sun Microsystems http://twitter.com/robilad [email protected] Java 2 Programming Language 3 Virtual Machine 4 Cross- platform Programming Environment 5 Community Of Communities 6 Pretty successful 7 ~1B LOC of Open Source Code written in it (acc. to ohloh.net) 8 That's just the visible space 9 What else happened in the last 10 years? 10 Open Source 11 From fringe to mainstream 12 Open Innovation across organizational boundaries 13 Remember shipping containers? 14 Changed the world 15 Radically reduced transaction costs 16 For material goods 17 Standardized measures 18 Optimization opportunities 19 Open Source does the same 20 For software components 21 Standardized Legal Containers 22 Permeable development 23 Lowered barrier to participation 24 Collaborative User Innovation 25 What else happened? 26 Linux 27 From fringe to mainstream 28 Cloud, Cluster, Server, Netbook, TV, Phone, ... 29 Anyone can create a Linux- based software platform 30 shipping yard, fleet & port in one 31 Organic growth 32 Cambrian explosion of Linux distros 33 Selective Pressure On Development Tools on Linux Strongly Favors Open Source 34 Manifests itself around: availability, integration, ease of use 35 Example: sudo aptitude install openjdk-6-jdk vs. many minutes of manual work 36 Example: sudo aptitude build-dep openjdk-6 vs. many hours of manual work 37 Open Source + Java + Linux 38 39 OpenJDK 7 40 JDK 7 41 Open Source 42 GPL v2 43 Classpath Exception 44 2006: From closed to open 45 First Step: Get the code out 46 Putting the effort in perspective 47 Mozilla 1.2M SLOCs 48 Eclipse 2.2M SLOCs 49 OpenJDK 3.5M SLOCs 50 Done within one year 51 Managing expectations 52 Pessimist extremists: Java will be forked to death! 53 Well, no.
    [Show full text]