A Mechanism for Runtime Evolution of Objects

Size: px
Start display at page:

Download "A Mechanism for Runtime Evolution of Objects"

Transcription

1 A Mechanism for Runtime Evolution of Objects Yasuhiro Sugiyama Department of Computer Science Nihon University Koriyama, Japan 1. Runtime Version Management of Objects for Software Evolution Recent computer programs written in object-oriented programming languages, like C++ and Java, are composed of many objects. I am currently working on a mechanism that allows objects in programs to evolve during the execution. I allow objects to get new functionality during the execution. Bugs in objects may be fixed while the program is running. New objects may be added to running programs. My approach is based on the version management of objects. I allow objects to have multiple versions. Versions of objects to be used in a program can be selected and changed while the program is running. Objects may be replaced with new versions that have new functionality. Objects with bugs may be replaced by new versions of the objects that fix the bugs during the execution. New objects may be added to existing programs during the execution. In [2], I introduced the indirect dynamic linking mechanism that allows versions of library functions to be replaced at runtime. I extended the indirect dynamic linking mechanism to objects so that versions of objects can be replaced during the execution. This paper will give a brief overview of my approach for runtime version management of objects for software evolution. This paper is organized as follows. In the next section, I will briefly describe the notion of versions of objects. Three types of versions: variations, revisions, and mirrors will be introduced. In the third section, I will describe the mechanism for the runtime evolution of these three types of versions. I implemented my version management mechanism for Java objects. Final section will conclude this paper with some discussions to be considered in the future. 2. Versions of Objects It is a common practice [1] to categorize versions of computer programs as variations and revisions. For instance, Linux, a popular operating system in these days, has many versions. RedHat Linux, TurboLinux, and LinuxPPC are variations of Linux. On the other hand, RedHat Linux 2.1 and RedHat Linux 2.2 are revisions of RedHat Linux. 1

2 I conceive three types of versions of objects: revisions, variations, and mirrors. In all the three cases, I will assume that versions are immutable, that is, modification of an existing version implies the creation of a new version Revisions of Objects A revision of an object is an object that is created to replace the original object. Versions to be created for bug fixes and/or functional enhancements are typical examples of revisions. Revisions are not supposed to be used simultaneously with the original object. Revisions of an object form a sequence of versions in which each version in the sequence is supposed to supercede its predecessor versions. Typically, the latest revision is most significant and appropriate for use. But, sometimes, the latest revision may introduce a new bug. In these cases, older revisions may be used instead. Revisions may be created preserving and inheriting the internal state of their predecessor versions. It is quite common that a new revision is introduced during the execution of the original object due to bugs found in the original object. It is necessary to replace the buggy original version with the new revision that fixes the bug without loosing the internal state of the original object. External interface of revisions may evolve. New methods may be introduced in a new revision. Methods in a revision may be revised in a successor revision. Please note, although external interface of revisions may evolve, objects that call the revised objects also need to be revised at the same time so that they can invoke the newly introduced methods Variations of Objects A variation of an object is an object that is created as an alternative of the original object. Two or more variations of a single object may exist simultaneously. All the variations and the original object can be used interchangeably. Two or more implementations of a single class for different operating systems are typical examples of variations. An object may have two or more immediate revisions. In this case, all the revisions that are immediate successors of a single object are variations. All the variations of an object share a common external interface, while they may have different internal implementation. Some of them may have different functionality, while others may have different implementations of the same functionality. Unlike revisions, variations do not depend on the original object and/or other variations each other. Variations are not required to preserve the internal state of other variations. All the variations of a single object are independent entities Mirrors of Objects Objects may be accidentally destroyed during the execution due to hardware and/or software problems. In these cases, if copies of the objects exist, the current state of the 2

3 crashed objects may be easily recovered and the objects might be able to resume the execution. Particularly, if copies exist on two or more machines, the entire program may keep running even if one of the machines crashes. Mirrors are versions to be created for a backup purpose. A mirror of an object is simply a copy of the original object. Objects may have any number of mirrors. All mirrors of a single object keep the same internal state, and are updated simultaneously. 3. Runtime Version Management of Java Objects 3.1. Revision Management When a new revision is introduced during the execution of the original object due to bugs found in the original object, it is necessary to replace the buggy original version with the new revision that fixes the bug without stopping the execution of the entire program. I introduce the revision management mechanism using proxy objects [3]. Each object has its own proxy object. An object and its revisions share a single proxy object. User programs, that use objects with revisions, are bound to these proxies, but not to the objects themselves. The proxies take care of forwarding and/or redirecting requests from user programs to the objects. Upon receipt of requests from the user programs, the proxies select an appropriate revision, and forward the requests to the selected revision. Revisions can be selected at the loading time as well as at the execution time. A new revision may be created preserving the internal state of its predecessor version. I use derivation [4] that allows incremental refinement of objects without loosing the internal state of objects. Derivation allows us to avoid migration and some other expensive conversion tasks from older revisions to newer revisions. In order to define a new revision of an object, one must define a class of the revision, which is a derived class of the class of the original object. Please note that, although the C++ community often uses the words derived classes and sub-classes interchangeably, derived classes and sub-classes are different concepts here. I extended the syntax of Java so that derivation can be defined in Java programs, although I do not have space here to discuss the new notation. I developed a preprocessor to translate Java programs with derivation into regular Java notation. I also developed the proxy generator for Java that reads the source code of a regular Java class and generates a class of the proxy objects for the instances of the class. This revision management mechanism works for Java applications as well as Java Applets. When one tries to download an Applet with multiple revisions into a Web browser, the Web browser will download the byte code of its proxy class, instead of the byte code of the Applet itself, from the Web server. The Web browser will instantiate the proxy object, and thereafter the proxy object will take care of downloading the byte code of the necessary revisions from the Web server during the execution. 3

4 3.2. Variation Management Like revisions, in order to define a new variation, one must define a class of the variation. I use simple naming convention to distinguish classes of variations. I enhanced the class loader of the Java Virtual Machine (JVM) so that one of the variations can be selected and loaded at the loading time of the class. One may consider that variations are Java classes that implement a single Java interface. However, I do not put this restriction at this moment. Any classes with the same external interface can be variations. Variations to be used in a program may be changed during the execution. I use proxy objects to take care of dynamic replacement of variations, like replacement of revisions. This mechanism allows one to use variations as hot-swappable plug-ins for Java programs. However, when a variation is switched to another variation, the context of the old variation may be completely lost, and the context of the new variation will be used thereafter. My mechanism leaves the implementation details of each variation completely for the developer of the variation. For instance, a variation may be designed so that, even after the variation is switched to another variation, one may return to the original variation and resume its execution. Another variation may be designed to terminate the execution when it switches to another variation. I also enhanced the Web server Apache so that Java Applets can have multiple variations. When a Web browser downloads a class, it sends a request to an appropriate Web server. The Web server will select an appropriate variation, and will send the byte code of the selected variation to the browser Mirror Management I use proxy objects to maintain mirrors. When a user program instantiates a class with mirroring capability, a proxy object is created first, and is bound to the user program. The proxy object generates an appropriate number of instances of the class, and will maintain them as mirrors. When the proxy receives a request to update the object, the proxy forwards the request to all the mirrors, so that all the mirrors can keep the same state. Proxy objects are capable of laying out mirrors depending on the configuration of machines that run the program. All the mirrors may be created on a single machine in some cases, while mirrors may be distributed to machines that are connected by a network in some other cases. In the latter case, I use Java RMI to implement method invocation of mirrors on remote machines. 4

5 4. Conclusions I am now in the last phase of implementing the runtime version management mechanism of Java object described in this paper. I do not have sufficient data to evaluate my approach yet. However, I conducted several tests, and my tests showed that the use of proxy objects results in the reduction of the execution speed of many Java programs, although I do not have space here to show my numerical data. I am investigating two reasons for the speed reduction. First reason is the use of indirect dynamic linking in proxy objects. Method invocations through proxy objects always take extra steps, but the speed reduction rate is low. I would like to conclude this is a quite reasonable cost that we need to pay to achieve the dynamic nature of the runtime version management. Second reason is the use of Java reflection in proxy objects. Use of Java reflection is quite essential to allow dynamic evolution of external interfaces of revisions. Proxy objects use Java reflection to find methods available in new versions that might not exist when the proxy objects are created. However, in my tests, Java reflection showed significant overhead, compared to the indirect dynamic linking. I am now working on this problem. One possible solution to this problem is simultaneous replacement of revisions of related objects. As I mention in the previous section, even if a new method is introduced in a new revision of an object, its caller objects cannot use the new methods, unless they are implemented so that they can search new methods in the revision. Otherwise, the caller objects need to be revised at the same time with the called object. If simultaneous replacement of revisions of caller and called objects is possible, we do not need to use the proxy object for the called object any more, although proxy objects for caller objects are still necessary for their version management. This will contribute to improve the runtime efficiency of my approach. References [1] W. A. Babich, Software Configuration Management, Addison-Wesley, [2] Y. Sugiyama, Runtime Software Evolution based on Version Management, IWPSE99, April, [3] Y. Sugiyama, A Mechanism for Runtime Object Evolution based on Version Management, JSSST'98, September, 1998, in Japanese. [4] Y. Sugiyama, Producing and Managing Software Objects in the Process Programming Environment OPM, APSEC'94, December,

Exploring Dynamic Compilation Facility in Java

Exploring Dynamic Compilation Facility in Java Exploring Dynamic Compilation Facility in Java Dingwei He and Kasi Periyasamy Computer Science Department University of Wisconsin-La Crosse La Crosse, WI 54601 kasi@cs.uwlax.edu Abstract Traditional programming

More information

Application of a Visual Computer Simulator into Collaborative Learning

Application of a Visual Computer Simulator into Collaborative Learning Journal of Computing and Information Technology - CIT 14, 2006, 4, 267 273 doi:10.2498/cit.2006.04.01 267 Application of a Visual Computer Simulator into Collaborative Learning Yoshiro Imai 1, Keiichi

More information

The Myx Architectural Style

The Myx Architectural Style The Myx Architectural Style The goal of the Myx architectural style is to serve as an architectural style that is good for building flexible, high performance tool-integrating environments. A secondary

More information

An Introduction to Software Architecture By David Garlan & Mary Shaw 94

An Introduction to Software Architecture By David Garlan & Mary Shaw 94 IMPORTANT NOTICE TO STUDENTS These slides are NOT to be used as a replacement for student notes. These slides are sometimes vague and incomplete on purpose to spark a class discussion An Introduction to

More information

Chapter 10 Web-based Information Systems

Chapter 10 Web-based Information Systems Prof. Dr.-Ing. Stefan Deßloch AG Heterogene Informationssysteme Geb. 36, Raum 329 Tel. 0631/205 3275 dessloch@informatik.uni-kl.de Chapter 10 Web-based Information Systems Role of the WWW for IS Initial

More information

An Introduction to Software Architecture. David Garlan & Mary Shaw 94

An Introduction to Software Architecture. David Garlan & Mary Shaw 94 An Introduction to Software Architecture David Garlan & Mary Shaw 94 Motivation Motivation An increase in (system) size and complexity structural issues communication (type, protocol) synchronization data

More information

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University CS 555: DISTRIBUTED SYSTEMS [RPC & DISTRIBUTED OBJECTS] Shrideep Pallickara Computer Science Colorado State University Frequently asked questions from the previous class survey XDR Standard serialization

More information

Introduction to Java. Lecture 1 COP 3252 Summer May 16, 2017

Introduction to Java. Lecture 1 COP 3252 Summer May 16, 2017 Introduction to Java Lecture 1 COP 3252 Summer 2017 May 16, 2017 The Java Language Java is a programming language that evolved from C++ Both are object-oriented They both have much of the same syntax Began

More information

JOURNAL OF OBJECT TECHNOLOGY

JOURNAL OF OBJECT TECHNOLOGY JOURNAL OF OBJECT TECHNOLOGY Online at http://www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2007 Vol. 6, No. 6, July-August 2007 Extending eclipse RCP with dynamic update of active

More information

Source control with Subversion A user perspective

Source control with Subversion A user perspective http://svnbook.red-bean.com/ Source control with Subversion A user perspective Aaron Ponti What is Subversion? } It is a free and open-source version control system } It manages files and directories,

More information

Approaches to Capturing Java Threads State

Approaches to Capturing Java Threads State Approaches to Capturing Java Threads State Abstract This paper describes a range of approaches to capturing the state of Java threads. The capture and restoration of Java threads state have two main purposes:

More information

02 - Distributed Systems

02 - Distributed Systems 02 - Distributed Systems Definition Coulouris 1 (Dis)advantages Coulouris 2 Challenges Saltzer_84.pdf Models Physical Architectural Fundamental 2/58 Definition Distributed Systems Distributed System is

More information

02 - Distributed Systems

02 - Distributed Systems 02 - Distributed Systems Definition Coulouris 1 (Dis)advantages Coulouris 2 Challenges Saltzer_84.pdf Models Physical Architectural Fundamental 2/60 Definition Distributed Systems Distributed System is

More information

03 Remote invoaction. Request-reply RPC. Coulouris 5 Birrel_Nelson_84.pdf RMI

03 Remote invoaction. Request-reply RPC. Coulouris 5 Birrel_Nelson_84.pdf RMI 03 Remote invoaction Request-reply RPC Coulouris 5 Birrel_Nelson_84.pdf RMI 2/23 Remote invocation Mechanisms for process communication on a Built on top of interprocess communication primitives Lower

More information

CptS 464/564 Lecture 18

CptS 464/564 Lecture 18 CptS 464/564 Lecture 18 2nd November 2004 Checkpoint What have we covered so far? Paradigms and Models: frameworks for the discussion of DS What is the plan ahead? Next: examples of distributed systems

More information

Atelier Java - J1. Marwan Burelle. EPITA Première Année Cycle Ingénieur.

Atelier Java - J1. Marwan Burelle.  EPITA Première Année Cycle Ingénieur. marwan.burelle@lse.epita.fr http://wiki-prog.kh405.net Plan 1 2 Plan 3 4 Plan 1 2 3 4 A Bit of History JAVA was created in 1991 by James Gosling of SUN. The first public implementation (v1.0) in 1995.

More information

Chapter 1 Getting Started

Chapter 1 Getting Started Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different

More information

Structured communication (Remote invocation)

Structured communication (Remote invocation) Prof. Dr. Claudia Müller-Birn Institute for Computer Science, Networked Information Systems Structured communication (Remote invocation) Nov 8th, 2011 Netzprogrammierung (Algorithmen und Programmierung

More information

Part V. Process Management. Sadeghi, Cubaleska RUB Course Operating System Security Memory Management and Protection

Part V. Process Management. Sadeghi, Cubaleska RUB Course Operating System Security Memory Management and Protection Part V Process Management Sadeghi, Cubaleska RUB 2008-09 Course Operating System Security Memory Management and Protection Roadmap of Chapter 5 Notion of Process and Thread Data Structures Used to Manage

More information

Middleware. Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004

Middleware. Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004 Middleware Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004 Outline Web Services Goals Where do they come from? Understanding middleware Middleware as infrastructure Communication

More information

Remote Invocation. 1. Introduction 2. Remote Method Invocation (RMI) 3. RMI Invocation Semantics

Remote Invocation. 1. Introduction 2. Remote Method Invocation (RMI) 3. RMI Invocation Semantics Remote Invocation Nicola Dragoni Embedded Systems Engineering DTU Informatics 1. Introduction 2. Remote Method Invocation (RMI) 3. RMI Invocation Semantics From the First Lecture (Architectural Models)...

More information

Lost in Object Space

Lost in Object Space Lost in Object Space Thomas Cleenewerck Programming Technology Lab, Vrije Universiteit Brussel, Pleinlaan 2, 1050 Brussel, Belgium thomas.cleenewerck@vub.ac.be http://prog.vub.ac.be/ May 13, 2003 Abstract

More information

CSE 504: Compiler Design. Runtime Environments

CSE 504: Compiler Design. Runtime Environments Runtime Environments Pradipta De pradipta.de@sunykorea.ac.kr Current Topic Procedure Abstractions Mechanisms to manage procedures and procedure calls from compiler s perspective Runtime Environment Choices

More information

NM Collector Software JE (Java Edition)

NM Collector Software JE (Java Edition) NM Collector Software JE (Java Edition) Printable Help 1/9/2010 This file is for those who wish to print out their help. The online version is better for those who don t mind using web pages for help and

More information

Chapter 3: Naming Page 38. Clients in most cases find the Jini lookup services in their scope by IP

Chapter 3: Naming Page 38. Clients in most cases find the Jini lookup services in their scope by IP Discovery Services - Jini Discovery services require more than search facilities: Discovery Clients in most cases find the Jini lookup services in their scope by IP multicast/broadcast Multicast UDP for

More information

Distributed Systems. The main method of distributed object communication is with remote method invocation

Distributed Systems. The main method of distributed object communication is with remote method invocation Distributed Systems Unit III Syllabus:Distributed Objects and Remote Invocation: Introduction, Communication between Distributed Objects- Object Model, Distributed Object Modal, Design Issues for RMI,

More information

Message Passing vs. Distributed Objects. 5/15/2009 Distributed Computing, M. L. Liu 1

Message Passing vs. Distributed Objects. 5/15/2009 Distributed Computing, M. L. Liu 1 Message Passing vs. Distributed Objects 5/15/2009 Distributed Computing, M. L. Liu 1 Distributed Objects M. L. Liu 5/15/2009 Distributed Computing, M. L. Liu 2 Message Passing versus Distributed Objects

More information

Agenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1

Agenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1 Agenda CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Summer 2004 Java virtual machine architecture.class files Class loading Execution engines Interpreters & JITs various strategies

More information

5 Distributed Objects: The Java Approach

5 Distributed Objects: The Java Approach 5 Distributed Objects: The Java Approach Main Points Why distributed objects Distributed Object design points Java RMI Dynamic Code Loading 5.1 What s an Object? An Object is an autonomous entity having

More information

Mobile Agent. Summer Project Report. Indian Institute of Technology Kanpur Department of Computer Science and Engineering

Mobile Agent. Summer Project Report. Indian Institute of Technology Kanpur Department of Computer Science and Engineering Mobile Agent Summer Project Report Indian Institute of Technology Kanpur Department of Computer Science and Engineering B V V Srirajdutt Sourav Khandelwal Prateek Mishra 1 Abstract In computer science,

More information

Inside WebSphere Application Server

Inside WebSphere Application Server Inside WebSphere Application Server The anatomy of WebSphere Application Server is quite detailed so, for now, let's briefly outline some of the more important parts. The following diagram shows the basic

More information

Chapter 8. Database Design. Database Systems: Design, Implementation, and Management, Sixth Edition, Rob and Coronel

Chapter 8. Database Design. Database Systems: Design, Implementation, and Management, Sixth Edition, Rob and Coronel Chapter 8 Database Design Database Systems: Design, Implementation, and Management, Sixth Edition, Rob and Coronel 1 In this chapter, you will learn: That successful database design must reflect the information

More information

Example of a Process in Use in an Organization

Example of a Process in Use in an Organization Example of a Process in Use in an Organization In this note, the use of a process in an organization is defined. Many software organizations have organization wide process standards. These standards are

More information

SRI VENKATESWARA COLLEGE OF ENGINERRING AND TECHNOLOGY THIRUPACHUR,THIRUVALLUR UNIT I OOAD PART A

SRI VENKATESWARA COLLEGE OF ENGINERRING AND TECHNOLOGY THIRUPACHUR,THIRUVALLUR UNIT I OOAD PART A SRI VENKATESWARA COLLEGE OF ENGINERRING AND TECHNOLOGY THIRUPACHUR,THIRUVALLUR UNIT I OOAD PART A 1. What is an object? An object is a combination of data and logic; the representation of some realworld

More information

Communication. Distributed Systems Santa Clara University 2016

Communication. Distributed Systems Santa Clara University 2016 Communication Distributed Systems Santa Clara University 2016 Protocol Stack Each layer has its own protocol Can make changes at one layer without changing layers above or below Use well defined interfaces

More information

Client-server Basics. 1. Motivation

Client-server Basics. 1. Motivation Page 1 of 8 Client-server Basics Oxford Brookes University 2004 Contents 1. Motivation 2. Basic Model of the Web 3. Extensions - Caching and Proxies 4. High Performance Web Servers 5. Web Services Appendices

More information

CYES-C++: A Concurrent Extension of C++ through Compositional Mechanisms

CYES-C++: A Concurrent Extension of C++ through Compositional Mechanisms CYES-C++: A Concurrent Extension of C++ through Compositional Mechanisms Raju Pandey J. C. Browne Department of Computer Sciences The University of Texas at Austin Austin, TX 78712 fraju, browneg@cs.utexas.edu

More information

Introduction to Java Programming

Introduction to Java Programming Introduction to Java Programming Lecture 1 CGS 3416 Spring 2017 1/9/2017 Main Components of a computer CPU - Central Processing Unit: The brain of the computer ISA - Instruction Set Architecture: the specific

More information

CLI and CLR. Antonio Cisternino Giuseppe Attardi

CLI and CLR. Antonio Cisternino Giuseppe Attardi CLI and CLR Antonio Cisternino Giuseppe Attardi Introduction Java made popular Virtual Machines (JVM) Execution environments are a generalization of virtual machines They provide a set of common runtime

More information

Just-In-Time Hypermedia

Just-In-Time Hypermedia A Journal of Software Engineering and Applications, 2013, 6, 32-36 doi:10.4236/jsea.2013.65b007 Published Online May 2013 (http://www.scirp.org/journal/jsea) Zong Chen 1, Li Zhang 2 1 School of Computer

More information

InsECTJ: A Generic Instrumentation Framework for Collecting Dynamic Information within Eclipse

InsECTJ: A Generic Instrumentation Framework for Collecting Dynamic Information within Eclipse InsECTJ: A Generic Instrumentation Framework for Collecting Dynamic Information within Eclipse Arjan Seesing and Alessandro Orso College of Computing Georgia Institute of Technology a.c.seesing@ewi.tudelft.nl,

More information

Unit 5: Distributed, Real-Time, and Multimedia Systems

Unit 5: Distributed, Real-Time, and Multimedia Systems Unit 5: Distributed, Real-Time, and Multimedia Systems Unit Overview Unit 5 provides an extension to the core topics of operating systems. It introduces distributed systems and special-purpose operating

More information

Reliable Stream Analysis on the Internet of Things

Reliable Stream Analysis on the Internet of Things Reliable Stream Analysis on the Internet of Things ECE6102 Course Project Team IoT Submitted April 30, 2014 1 1. Introduction Team IoT is interested in developing a distributed system that supports live

More information

Verteilte Systeme (Distributed Systems)

Verteilte Systeme (Distributed Systems) Verteilte Systeme (Distributed Systems) Karl M. Göschka Karl.Goeschka@tuwien.ac.at http://www.infosys.tuwien.ac.at/teaching/courses/ VerteilteSysteme/ Lecture 4: Operating System Support Processes and

More information

High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore

High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore Module No # 09 Lecture No # 40 This is lecture forty of the course on

More information

ECE 122. Engineering Problem Solving with Java

ECE 122. Engineering Problem Solving with Java ECE 122 Engineering Problem Solving with Java Lecture 15 Class Relationships Outline Problem: How can I create and store complex objects? Review of static methods Consider static variables What about objects

More information

CPS221 Lecture: Threads

CPS221 Lecture: Threads Objectives CPS221 Lecture: Threads 1. To introduce threads in the context of processes 2. To introduce UML Activity Diagrams last revised 9/5/12 Materials: 1. Diagram showing state of memory for a process

More information

Orb-Weaver if the radiance of thousand suns were burst at once into the sky that might be the splendor of mighty one.

Orb-Weaver if the radiance of thousand suns were burst at once into the sky that might be the splendor of mighty one. agus@orbleaf.com Orb-Weaver if the radiance of thousand suns were burst at once into the sky that might be the splendor of mighty one. Orb-Weaver Whitepaper 2 Introduction... 3 Orb-Weaver... 4 Automatic

More information

junit RV Adding Runtime Verification to junit

junit RV Adding Runtime Verification to junit junit RV Adding Runtime Verification to junit Normann Decker, Martin Leucker, and Daniel Thoma Institute for Software Engineering and Programming Languages Universität zu Lübeck, Germany {decker, leucker,

More information

Process. Program Vs. process. During execution, the process may be in one of the following states

Process. Program Vs. process. During execution, the process may be in one of the following states What is a process? What is process scheduling? What are the common operations on processes? How to conduct process-level communication? How to conduct client-server communication? Process is a program

More information

JPred-P 2. Josh Choi, Michael Welch {joshchoi,

JPred-P 2. Josh Choi, Michael Welch {joshchoi, JPred-P 2 Josh Choi, Michael Welch {joshchoi, mjwelch}@cs.ucla.edu 1. Introduction Precondition and postcondition checking on methods aids the development process by explicitly notifying the programmer

More information

Advanced Topics in Operating Systems

Advanced Topics in Operating Systems Advanced Topics in Operating Systems MSc in Computer Science UNYT-UoG Dr. Marenglen Biba 8-9-10 January 2010 Lesson 10 01: Introduction 02: Architectures 03: Processes 04: Communication 05: Naming 06:

More information

UPnP Services and Jini Clients

UPnP Services and Jini Clients UPnP Services and Jini Clients Jan Newmarch School of Network Computing Monash University jan.newmarch@infotech.monash.edu.au Abstract UPnP is middleware designed for network plug and play. It is designed

More information

Ubiquitous Mobile Host Internetworking

Ubiquitous Mobile Host Internetworking Ubiquitous Mobile Host Internetworking David B. Johnson School of Computer Science Carnegie Mellon University Pittsburgh, PA 152 13-389 1 dbj Qcs. cmu. edu 1. Introduction With the increasing popularity

More information

Mobile Computing Professor Pushpendra Singh Indraprastha Institute of Information Technology Delhi Java Basics Lecture 02

Mobile Computing Professor Pushpendra Singh Indraprastha Institute of Information Technology Delhi Java Basics Lecture 02 Mobile Computing Professor Pushpendra Singh Indraprastha Institute of Information Technology Delhi Java Basics Lecture 02 Hello, in this lecture we will learn about some fundamentals concepts of java.

More information

Introduction to Computers and Programming Languages. CS 180 Sunil Prabhakar Department of Computer Science Purdue University

Introduction to Computers and Programming Languages. CS 180 Sunil Prabhakar Department of Computer Science Purdue University Introduction to Computers and Programming Languages CS 180 Sunil Prabhakar Department of Computer Science Purdue University 1 Objectives This week we will study: The notion of hardware and software Programming

More information

3. WWW and HTTP. Fig.3.1 Architecture of WWW

3. WWW and HTTP. Fig.3.1 Architecture of WWW 3. WWW and HTTP The World Wide Web (WWW) is a repository of information linked together from points all over the world. The WWW has a unique combination of flexibility, portability, and user-friendly features

More information

The Legacy Bridge Problem. Douglas Lyon and Chris Huntley

The Legacy Bridge Problem. Douglas Lyon and Chris Huntley The Legacy Bridge Problem by Douglas Lyon and Chris Huntley Abstract We present a way to automate the reuse of legacy systems without multiple-inheritance, copying source code, accessing existing code

More information

Subprograms, Subroutines, and Functions

Subprograms, Subroutines, and Functions Subprograms, Subroutines, and Functions Subprograms are also called subroutines, functions, procedures and methods. A function is just a subprogram that returns a value; say Y = SIN(X). In general, the

More information

A short introduction to Web Services

A short introduction to Web Services 1 di 5 17/05/2006 15.40 A short introduction to Web Services Prev Chapter Key Concepts Next A short introduction to Web Services Since Web Services are the basis for Grid Services, understanding the Web

More information

Copyright 2007 Pearson Addison-Wesley Copyright 2018 Aiman Hanna All rights reserved

Copyright 2007 Pearson Addison-Wesley Copyright 2018 Aiman Hanna All rights reserved Comp 249 Programming Methodology Chapter 13 Generics & The ArrayList Class Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia University, Montreal, Canada These slides has

More information

Automating Regression Testing of Java Programs the JSnoopy Way

Automating Regression Testing of Java Programs the JSnoopy Way Automating Regression Testing of Java Programs the JSnoopy Way Theodore S. Norvell Electrical and Computer Engineering Memorial University of Newfoundland theo@engr.mun.ca Abstract As software systems

More information

Service Lifecycle and Versioning SOA 2/2559

Service Lifecycle and Versioning SOA 2/2559 Service Lifecycle and Versioning SOA 2/2559 Services Under Development Design Produces the specification of the service interface Contracts Implementation Integration Bringing into production 2 Services

More information

S1 Informatic Engineering

S1 Informatic Engineering S1 Informatic Engineering Advanced Software Engineering Web App. Process and Architecture By: Egia Rosi Subhiyakto, M.Kom, M.CS Informatic Engineering Department egia@dsn.dinus.ac.id +6285640392988 SYLLABUS

More information

Software. CPU implements "machine code" instructions. --Each machine code instruction is extremely simple. --To run, expanded to about 10 machine code

Software. CPU implements machine code instructions. --Each machine code instruction is extremely simple. --To run, expanded to about 10 machine code Software Software - code that runs on the hardware I'm going to simplify things a bit here CPU implements "machine code" instructions --Each machine code instruction is extremely simple --e.g. add 2 numbers

More information

Q.1. (a) [4 marks] List and briefly explain four reasons why resource sharing is beneficial.

Q.1. (a) [4 marks] List and briefly explain four reasons why resource sharing is beneficial. Q.1. (a) [4 marks] List and briefly explain four reasons why resource sharing is beneficial. Reduces cost by allowing a single resource for a number of users, rather than a identical resource for each

More information

Architecture-Centric Evolution in Software Product Lines:

Architecture-Centric Evolution in Software Product Lines: Architecture-Centric Evolution in Software Product Lines: Position Paper Hassan Gomaa Department of Information and Software Engineering George Mason University Fairfax, Virginia 22030, USA hgomaa@gmu.edu

More information

DATA DOMAIN INVULNERABILITY ARCHITECTURE: ENHANCING DATA INTEGRITY AND RECOVERABILITY

DATA DOMAIN INVULNERABILITY ARCHITECTURE: ENHANCING DATA INTEGRITY AND RECOVERABILITY WHITEPAPER DATA DOMAIN INVULNERABILITY ARCHITECTURE: ENHANCING DATA INTEGRITY AND RECOVERABILITY A Detailed Review ABSTRACT No single mechanism is sufficient to ensure data integrity in a storage system.

More information

Database Management. Understanding Failure Resiliency. Database Files CHAPTER

Database Management. Understanding Failure Resiliency. Database Files CHAPTER CHAPTER 7 This chapter contains information on RDU database management and maintenance. The RDU database is the Broadband Access Center for Cable (BACC) central database. As with any database, it is essential

More information

IT Service Upgrades Announcement

IT Service Upgrades Announcement IT Service Upgrades Announcement Beginning in late 2008, AgriLife Information Technology under the direction of the Office of the Vice Chancellor and Dean of Agriculture and Life Sciences conducted a study

More information

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications Distributed Objects and Remote Invocation Programming Models for Distributed Applications Extending Conventional Techniques The remote procedure call model is an extension of the conventional procedure

More information

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc. Chapter 1 GETTING STARTED SYS-ED/ Computer Education Techniques, Inc. Objectives You will learn: Java platform. Applets and applications. Java programming language: facilities and foundation. Memory management

More information

GUI framework communication via the WWW

GUI framework communication via the WWW GUI framework communication via the WWW Thomas Tilley, School of Information Technology, Griffith University, Australia 4215, T.Tilley@gu.edu.au Peter Eklund, School of Information Technology, Griffith

More information

Ruckus Wireless Security Advisory ID FAQ

Ruckus Wireless Security Advisory ID FAQ Multiple Vulnerabilities in DNSMASQ (CVE-2017-14491, CVE-2017-14492, CVE-2017-14493, CVE-2017-14494, CVE-2017-14495, CVE-2017-14496, CVE-2017-13704, CVE-2015-3294) Initial Internal Release Date: 11/27/2017

More information

Type of Classes Nested Classes Inner Classes Local and Anonymous Inner Classes

Type of Classes Nested Classes Inner Classes Local and Anonymous Inner Classes Java CORE JAVA Core Java Programing (Course Duration: 40 Hours) Introduction to Java What is Java? Why should we use Java? Java Platform Architecture Java Virtual Machine Java Runtime Environment A Simple

More information

Backup Solution Testing on UCS for Small-Medium Range Customers (Disk to Tape)-SAS

Backup Solution Testing on UCS for Small-Medium Range Customers (Disk to Tape)-SAS Backup Solution Testing on UCS for Small-Medium Range Customers (Disk to Tape)-SAS First Published: April 02, 2013 Last Modified: April 03, 2013 Americas Headquarters Cisco Systems, Inc. 170 West Tasman

More information

NEC ExpressUpdate Functions and Features. September 20, 2012 Rev. 4.0

NEC ExpressUpdate Functions and Features. September 20, 2012 Rev. 4.0 September 20, 2012 Rev. 4.0 Table of Contents Table of Contents...- 2 - Table of Figures...- 5 - Trademarks...- 9 - Notes...- 9 - About this Document...- 9 - Symbols in this Document...- 9 - Terminology...-

More information

Summer Student Project Report

Summer Student Project Report Summer Student Project Report Steffen Pade September 6, 2013 Abstract During my summer project here at CERN I was able to work with a - to me - completely new database technology: Oracle s 12c. My task

More information

CSE P 501 Compilers. Java Implementation JVMs, JITs &c Hal Perkins Winter /11/ Hal Perkins & UW CSE V-1

CSE P 501 Compilers. Java Implementation JVMs, JITs &c Hal Perkins Winter /11/ Hal Perkins & UW CSE V-1 CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Winter 2008 3/11/2008 2002-08 Hal Perkins & UW CSE V-1 Agenda Java virtual machine architecture.class files Class loading Execution engines

More information

SOFA NetBeans Module

SOFA NetBeans Module Charles University, Prague Distributed Systems Research Group SOFA NetBeans Module an introductory guide Revision 1.0 June 2003 Contents 1 Module s Essentials 3 1.1 Introduction........................

More information

Java Applets, etc. Instructor: Dmitri A. Gusev. Fall Lecture 25, December 5, CS 502: Computers and Communications Technology

Java Applets, etc. Instructor: Dmitri A. Gusev. Fall Lecture 25, December 5, CS 502: Computers and Communications Technology Java Applets, etc. Instructor: Dmitri A. Gusev Fall 2007 CS 502: Computers and Communications Technology Lecture 25, December 5, 2007 CGI (Common Gateway Interface) CGI is a standard for handling forms'

More information

CS 153 Design of Operating Systems

CS 153 Design of Operating Systems CS 153 Design of Operating Systems Winter 19 Lecture 2: Historical perspective Instructor: Nael Abu-Ghazaleh Last time What is an OS? What roles does it play? Today: Historic evolution of Operating Systems

More information

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz Results obtained by researchers in the aspect-oriented programming are promoting the aim to export these ideas to whole software development

More information

Embedded Device Cooperative System Using Java Bytecode Instrumentation

Embedded Device Cooperative System Using Java Bytecode Instrumentation THE SCIENCE AND ENGINEERING REVIEW OF DOSHISHA UNIVERSITY, VOL. 51, NO. 1 April 2010 Embedded Device Cooperative System Using Java Bytecode Instrumentation Ryota AYAKI *, Kohei KADOWAKI *, Hideki SHIMADA

More information

Runtime Software Architecture Based Software Evolution And Adaptation

Runtime Software Architecture Based Software Evolution And Adaptation Runtime Software Architecture Based Software Evolution And Adaptation Qianxiang Wang, Gang Huang, Junrong Shen, Hong Mei, Fuqing Yang Department of Computer Science and Technology, Peking University 100871

More information

Process Concept. Chapter 4: Processes. Diagram of Process State. Process State. Process Control Block (PCB) Process Control Block (PCB)

Process Concept. Chapter 4: Processes. Diagram of Process State. Process State. Process Control Block (PCB) Process Control Block (PCB) Chapter 4: Processes Process Concept Process Concept Process Scheduling Operations on Processes Cooperating Processes Interprocess Communication Communication in Client-Server Systems An operating system

More information

Chapter 4: Processes

Chapter 4: Processes Chapter 4: Processes Process Concept Process Scheduling Operations on Processes Cooperating Processes Interprocess Communication Communication in Client-Server Systems 4.1 Process Concept An operating

More information

Oracle Tuxedo. CORBA Technical Articles 11g Release 1 ( ) March 2010

Oracle Tuxedo. CORBA Technical Articles 11g Release 1 ( ) March 2010 Oracle Tuxedo CORBA Technical Articles 11g Release 1 (11.1.1.1.0) March 2010 Oracle Tuxedo CORBA Technical Articles, 11g Release 1 (11.1.1.1.0) Copyright 1996, 2010, Oracle and/or its affiliates. All rights

More information

TRAP/J v2.1: An improvement for Transparent Adaptation

TRAP/J v2.1: An improvement for Transparent Adaptation TRAP/J v2.1: An improvement for Transparent Adaptation Technical Report FIU-SCIS-2007-09-01 May 2007 S. Masoud Sadjadi, Luis Atencio, and Tatiana Soldo Autonomic and Grid Computing Research Laboratory

More information

Automatic Code Generation for Non-Functional Aspects in the CORBALC Component Model

Automatic Code Generation for Non-Functional Aspects in the CORBALC Component Model Automatic Code Generation for Non-Functional Aspects in the CORBALC Component Model Diego Sevilla 1, José M. García 1, Antonio Gómez 2 1 Department of Computer Engineering 2 Department of Information and

More information

Monitoring System for Distributed Java Applications

Monitoring System for Distributed Java Applications Monitoring System for Distributed Java Applications W lodzimierz Funika 1, Marian Bubak 1,2, and Marcin Smȩtek 1 1 Institute of Computer Science, AGH, al. Mickiewicza 30, 30-059 Kraków, Poland 2 Academic

More information

Comparison: Perforce and Microsoft Visual SourceSafe. Perforce VSS

Comparison: Perforce and Microsoft Visual SourceSafe. Perforce VSS Comparison: Perforce and Microsoft Visual SourceSafe Perforce & VSS Overview This document compares Perforce version 2008.2 with Microsoft Visual SourceSafe (VSS) 2005, and contrasts their significant

More information

UNICORN: A Tool for Modeling and Reasoning on the Uncertainty of Requirements Evolution

UNICORN: A Tool for Modeling and Reasoning on the Uncertainty of Requirements Evolution UNICORN: A Tool for Modeling and Reasoning on the Uncertainty of Requirements Evolution Le Minh Sang Tran and Fabio Massacci University of Trento, Italy {tran, fabio.massacci}@disi.unitn.it Abstract. Long-living

More information

C. E. McDowell August 25, Baskin Center for. University of California, Santa Cruz. Santa Cruz, CA USA. abstract

C. E. McDowell August 25, Baskin Center for. University of California, Santa Cruz. Santa Cruz, CA USA. abstract Unloading Java Classes That Contain Static Fields C. E. McDowell E. A. Baldwin 97-18 August 25, 1997 Baskin Center for Computer Engineering & Information Sciences University of California, Santa Cruz Santa

More information

CAS 703 Software Design

CAS 703 Software Design Dr. Ridha Khedri Department of Computing and Software, McMaster University Canada L8S 4L7, Hamilton, Ontario Acknowledgments: Material based on Software by Tao et al. (Chapters 9 and 10) (SOA) 1 Interaction

More information

Parametric Polymorphism for Java: A Reflective Approach

Parametric Polymorphism for Java: A Reflective Approach Parametric Polymorphism for Java: A Reflective Approach By Jose H. Solorzano and Suad Alagic Presented by Matt Miller February 20, 2003 Outline Motivation Key Contributions Background Parametric Polymorphism

More information

A Report on RMI and RPC Submitted by Sudharshan Reddy B

A Report on RMI and RPC Submitted by Sudharshan Reddy B A Report on RMI and RPC Submitted by Sudharshan Reddy B Abstract: This report mainly explains the RMI and RPC technologies. In the first part of the paper the RMI technology is briefly explained and in

More information

Enterprise Architect. User Guide Series. Profiling

Enterprise Architect. User Guide Series. Profiling Enterprise Architect User Guide Series Profiling Investigating application performance? The Sparx Systems Enterprise Architect Profiler finds the actions and their functions that are consuming the application,

More information

Manual Update Java 7 25 Mac Not Working

Manual Update Java 7 25 Mac Not Working Manual Update Java 7 25 Mac Not Working Mac OS X System Requirements for Oracle Java 7 and later versions. Intel-based Mac running Mac OS X version 10.7.3 and above, Administrator privileges 32-bit browsers

More information

Enterprise Architect. User Guide Series. Profiling. Author: Sparx Systems. Date: 10/05/2018. Version: 1.0 CREATED WITH

Enterprise Architect. User Guide Series. Profiling. Author: Sparx Systems. Date: 10/05/2018. Version: 1.0 CREATED WITH Enterprise Architect User Guide Series Profiling Author: Sparx Systems Date: 10/05/2018 Version: 1.0 CREATED WITH Table of Contents Profiling 3 System Requirements 8 Getting Started 9 Call Graph 11 Stack

More information