A Simple Security-Aware MOP for Java 119
|
|
|
- Charlene Randall
- 10 years ago
- Views:
Transcription
1 A simple security-aware MOP for Java Denis Caromel, Fabrice Huet and Julien Vayssi re INRIA - CNRS - I3S Universit de Nice Sophia-Antipolis [email protected] Abstract. This article investigates the security problems raised by the use of proxy-based runtime meta-object protocols (MOPs) for Java and provides an approach for making meta-level code transparent to baselevel code, security-wise. We prove that, but giving all permissions only to the kernel of the MOP and by using Java's built-in mechanism for propagating security contexts, the permissions required by base-level and meta-level code do not interfere. We illustrate this result in the context of a simple proxy-based runtime MOP that we wrote. 1 Introduction Dierent authors have suggested using Meta-Object Protocols (MOPs) as an elegant solution for implementing security mechanisms. However, studying the security issues raised bymops has never been adressed as a problem on its own. A previous work [2] provided a set of rules for combining together the permissions associated with the dierent protection domains of a typical reective component-based application. One of the main results was that a proxy-based runtime MOP implied fewer constraints than other types of MOPs. This article presents an approach that makes it possible to have, securitywise, a completely transparent meta-level in the context of a simple proxy-based runtime MOP that we designed and implemented for Java. The paper is organised as follows. Section 2 introduces related work. Our simple proxy-based runtime MOP is described in section 3, while section 4 proposed a technique for making this MOP transparent with respect to security, and section 5 concludes. 2 Related Work In this section we rst present anoverview of the dierent kinds of MOPs that exist for Java, then review some related work on meta-programming and security. 2.1 Dierent kinds of MOPs MOPs come in multiple avours. Depending on the criterion used, many dierent classication of MOPs are possible. Ferber [4], for example, rst proposed A. Yonezawa and S. Matsuoka (Eds.): REFLECTION 2001, LNCS 2192, pp , c Springer-Verlag Berlin Heidelberg 2001
2 A Simple Security-Aware MOP for Java 119 to separate between structural and computational reection. The former is concerned with the structure of a program, that is its classes, inheritance relations and so forth, while the later deals with elements that only exist at runtime, such as method invocation or object creation. Alternatively, it is possible to make a distinction between implicit and explicit reection, which indicates whether the shifts to the meta-level are visible from the base level or not. However, we have chosen to follow here a third classication of MOPs that uses as a criterion the period in the life of a program when meta-objects are actually in use. The three periods of time we consider are compile-time, load-time and runtime. A specic MOP may use meta-objects at more than one period in the life of a program. This is why we end up with six dierent cases (see Fig. 1), which range from the most static compile-time MOPs to the most dynamic run-time MOPs. Compilation Loading Execution Pure compile time MOPs Pure load time MOPs Proxy based runtime MOPs{ VM based runtime MOPs Fig. 1. A classication of MOPs based on when meta-objects are actually in use Pure compile-time MOPs perform source-to-source transformations. The dierence with usual pre-processors is that the translation itself is expressed as a Java program which handles meta-objects that represent classes, methods, loops, statements, etc. OpenJava [3] is an example of such amop. Pure load-time MOPs perform bytecode-to-bytecode transformations. Like for pure compile-time MOPs, the translation uses meta-objects for providing an object view of the bytecode representation of a class. Most of the time, load-time MOPs are implemented through a specialised classloader object. Proxy-based MOPs introduce hooks into the program in order to reify runtime events such as method invocation or access to elds. The hooks are introduced either at compile-time, for example by using a compile-time MOP, or at load-time by modifying the bytecode for a class (see Kava [10]) or even at runtime [7] by using objects that implement theproxy pattern (also called wrapper objects). These MOPs do not require any modication to the JVM, which explains why some low-level events cannot be reied. VM-based Runtime MOPs rely on a modied JVM in order to intercept things that only exist at runtime, such as method invocations. On occurrence
3 120 Denis Caromel, Fabrice Huet, and Julien Vayssière of such events, control is transferred to meta-level objects that are standard Java objects. MetaXa [6], Guaran [7], and Iguana/J [9] are such MOPs. 2.2 Security and MOPs The idea of using MOPs for implementing securitymechanisms has been explored in a number of dierent works [1, 11]. However, the problem of studying the security problems raised by MOPs received little attention so far. On several occasions, MOP implementors addressed the issue of security in their work, but mostly as a side note. Oliva and Buzato in [8] present some ideas on how to discipline the interaction between base-level and meta-level objects in their VM-based runtime MOP Guaran, especially with respect to dynamic reconguration of the binding between the two levels. Welch and Stroud in [10] also present some security issues raised by their proxy-based run-time MOP Kava. They introduce the idea of making a clear separation between classes of the kernel of the MOP that are trusted and untrusted meta-object classes developed by third parties. 3 A simple proxy-based MOP The purpose of our MOP is to reify two elements of the execution environment of a Java program: method invocations on objects 1 and calls to constructors. 3.1 Mapping base-level objects to meta-objects Deciding which objects are reied and which are not is done on a per-object basis: for a given class, non-reied instances are created, as usual, using the new operator of the Java language, while reied instances are created using a call to the static method MOP.newInstance of our library. One of the originalities of our MOP lies in the way the programmer declares which meta-level class is to be used when a reied instance of a given base-level class is created. Unlike other MOPs, which use a separate le for declaring such mappings, we have chosen to use the interface construct of the Java language instead. More specically, wehave an open-ended set of marker interfaces 2 which all inherit, either directly or indirectly, from Reflect (see Fig. 2). Each interface has a static String eld that contains the name of a meta-level class and that can be overridden by sub-interfaces. A base-level class implements one of these interfaces in order to declare which meta-object should be associated with a reied instance of this class. When it is not possible to modify the base-level class, the programmer can subclass the 1 as opposed to the invocation of static methods. 2 Marker interfaces are interfaces that do not declare any methods but 'ag' a class with a specic property. The use of marker interfaces has become an idiom of the Java language, as exemplied by the Serializable or Cloneable interfaces.
4 A Simple Security-Aware MOP for Java 121 Reflect Interface MethodCall MetaObject Interface Core MOP classes Object process (MethodCall) Extends Implements Meta level classes Active Future Verbose Interface Interface Interface META_CLASS = "inria.proxy" META_CLASS = "inria.future" META_CLASS = "inria.verbose" inria.proxy A Base level classes Implements Extends pa Fig. 2. Class diagram of the core MOP classes, meta-level classes and base-level classes. base-level class in order to implement the marker interface in the subclass. This is the case shown in gure 2 where the base-level class pa inherits from class A and also implements the marker interface Active. If this, in turn, is not possible, the programmer can still specify which meta-level class to use by passing its name as a parameter of the call to newinstance. 3.2 Meta-level classes Meta-level behaviours are expressed in meta-level classes that all implement the interface MetaObject. Each time a call to a reied object is intercepted by the MOP, it is reied into an instance of class MethodCall and passed to the metaobject associated with the reied object as a parameter to the call to the method process declared in interface MetaObject. Our MOP does not impose any constraint on the organisation of the metalevel. It is up to the meta-level objects to handle the creation and organisation of the computations that take place at the meta-level. 3.3 Implementation We implemented our MOP with two main design goals in mind: to provide a nonintrusive reication mechanism and to induce as few modications of the source code as possible when retro-tting existing code with meta-level behaviour. Transparent interception of method calls is achieved through the use of stub objects. Stub objects are created and returned by the MOP as the result of the creation of a reied object and represent the reied object for its clients. Stub objects are instantiated from stub classes that are type-compatible with the class of the reied object. Then, it becomes possible to use the stub object wherever the original non-reied object is expected. What a stub class actually does is
5 122 Denis Caromel, Fabrice Huet, and Julien Vayssière simply to redene all the methods it inherits from its superclass 3 in order to, within the body of each such method, build an object that represents the call and pass this object to the meta-object associated with the stub. If needed, stub classes can be generated on-the-y by our MOP: the source code is generated and written to the local le system, compiled and loaded just like any other locally-available Java class. 4 Security and MOP in a single address space In this section we rst present a quick overview of the security architecture of Java 2 and then show how, within a single virtual machine and under certain conditions, we obtain an interesting result: using our MOP for adapting baselevel components is perfectly transparent with respect to security. 4.1 The Security Architecture of Java The security architecture of Java 2 [5] is mostly concerned with access control, i.e. protecting access to critical local resources such as les, sockets, or the windowing system. An application is composed of a number of protection domain, which correspond to a URL where classes can be downloaded from or to a set of certicates that can be used for signing classes. Each protection domain has an associated set of permissions, each permission consists of a resource (say, ale) that we want to protect access to, and an access mode (such as read, write,...). At runtime, each of the classes loaded inside the virtual machine is associated with a specic protection domain. Whenever a thread performs a call that requires a specic permission, the security manager computes the intersection of the permission sets of all the protection domains on the execution stack of the thread. If the resulting set of permissions contains the permission needed for accessing the resource, the access is granted, otherwise an exception is thrown. The security architecture of Java also provides the doprivileged construct that limits the computation of the intersection of the permissions of the protection domains where doprivileged is invoked, and those invoked from it. 4.2 A security-aware MOP In the context of an component-based application that runs within a single virtual machine, we want the following property to hold: In a reied call that crosses the boundary between two protection domains, the set of permissions under which the reied call is actually executed in the second protection domain after meta-level processing should be exactly the same as if the call had not been reied atall. 3 Of course, final classes and final methods of non-nal classes cannot be reied, which is a limitation of our MOP.
6 A Simple Security-Aware MOP for Java 123 We will now prove that this property holds with our MOP, given that reasonable permissions are given to the dierent components. Meta Level Meta Stub MOP Base Level A Capturing and restoring the security context B Fig. 3. Chain of calls in a reied call and handling of the security context Let us consider that we have a component A that calls a method on a component B. This method performs an operation that requires an access check, therefore the set P std of the permissions that are needed for the call to succeed in the standard case is the intersection of the permissions of A and the permissions of B. If the call from A to B is reied with a proxy-based runtime MOP like ours, we obtain the chain of calls described in gure 3, which lead to the permission set P ref.ifwe call P the function that maps protection domains to their set of permissions, we have P std = P (A) \ P (B) and P ref = P (A) \ P (Stub) \ P (M eta) \ P (MOP) \ P (B) We will now explain step by step how, by making sensible choices with respect to which permissions are granted to each of the protection domain in the above equation, we can build a MOP for which P std = P ref. Capturing and restoring a security context. With the securityarchitecture of Java 2,itispossibletotake a snapshot of the set of permissions associated with the current thread with a call to AccessController.getContext(). This call returns a AccessControlContext object that represents the permissions available to the current thread at the moment of the call. This object can be used later in a call to doprivileged in order to perform a call under the security context captured within the AccessControlContext object. We use this feature for capturing the security context when the call is reied (in the stub object), and restoring it later when the reied call is actually performed on the reied object, that is when the execute method is called on the MethodCall object that belongs to the MOP protection domain (see Fig. 3). The security context P captured at the moment of the reication of the call is re-injected inside the component MOP,which leads to P captured = P (A) \ P (Stub) and P ref = P captured \ P (MOP) \ P (B)
7 124 Denis Caromel, Fabrice Huet, and Julien Vayssière and hence P ref = P (A) \ P (Stub) \ P (MOP) \ P (B) Which is already an improvement over the previous value of P ref because we have managed to remove the term P (Meta) that corresponds to the permission set of the meta-object. Capturing and restoring a security context does not require any modication to the base-level classes or to the meta-object component M eta, but only to the classes of the MOP. In the MOP we trust By nature, the classes of the MOP perform securitysensitive operations. This includes such dierent things as, for example, reading standard user properties, writing the source le of stub classes to the local le system and calling the compiler, or using the Reection API for invoking nonpublic methods, which also requires a specic permission. For all those reasons, we advocate that the protection domain that contains the base classes for the MOP should be granted all permissions. This means that, when using a MOP in a component-based application, the MOP must be fully trusted, which, by the very nature of a MOP, is very much needed anyway. This does not mean at all that the meta-level classes that implement the meta-level behaviour (M eta in our example) will all be granted all permissions because those classes actually belong to a dierent protection domain. As the M ethodcall class belongs to the protection domain of the MOP, wehave P (MOP)=1 Granting permissions to stub classes With our MOP, stub classes can be generated either statically or dynamically. If stub classes are generated statically, it can be assumed that those classes will be bundled with the components that use them. In our case, this means that stub classes will belong to the same protection domain as A, and hence P (A) \ P (Stub)=P (A) if stubs are generated statically If, on the other hand, stubs are generated dynamically, they all go into the same directory on the local le system, which then becomes a protection domain of its own. As the stub classes are generated by the MOP itself, we believe they should be granted all permissions. It is the MOP that controls what goes into the code of stub classes, and granting all permissions to stub classes should arise from granting all permissions to the MOP classes. As a matter of fact, stub classes never perform any action that may require a permission, all they do is build meta-objects for reifying calls and forwarding them to the meta-level. As a consequence, granting all permissions to the protection domain of the stubs is not a dangerous thing to do, and in terms of permission sets we have: P (Stub)=1 and hence P (A) \ P (Stub)=P (A)
8 A Simple Security-Aware MOP for Java 125 which means that in both cases, either static or dynamic, we end up with the same relation. The term P ref then rewrites to: P ref = P (A) \ P (B) which is enough for stating that P std = P ref and we have proved that using our MOP with the strategy and permissions we have implemented does not add or remove permissions to base classes. 5 Conclusion Within the context of a proxy-based runtime MOP for Java, we proved that it is possible to prevent the security constraints of the base-level and these of the meta-level from interfering, given that the classes for the MOP (but not the classes that implement meta-level behaviors) are given all permissions. In the near future, we plan to widen the scope of the results presented in this paper and work on designing a general security model for reective applications. References 1. M. Ancona, W. Cazzola, and E. B. Fernandez. Reective authorization systems: Possibilities, benets, and drawbacks. LNCS, 1603:3550, Denis Caromel and Julien Vayssi re. Reections on MOPs, Components, and Java Security. In J. Lindskov Knudsen, editor, Proceedings of ECOOP 2001, volume 2072 of LNCS, pages , Budapest, Hungary, June Springer-Verlag. 3. Shigeru Chiba and Michiaki Tatsubori. Yet another java.lang.class. In ECOOP'98 Workshop on Reective Object-Oriented Programming and Systems, Brussels, Belgium, July J. Ferber. Computational reection in class based object-oriented languages. ACM SIGPLAN Notices, 24(10):317326, October Li Gong. Inside Java 2 platform security: architecture, API design, and implementation. Addison-Wesley, Reading, MA, USA, june J. Kleinoeder and M. Golm. Metajava: An ecient run-time meta architecture for java. Techn. Report TR-I , Univ. of Erlangen-Nuernberg, IMMD IV, A. Oliva and L. E. Buzato. The design and implementation of Guaran. In Proceedings of the Fifth USENIX Conference onobject-oriented Technologies and Systems, pages The USENIX Association, Alexandre Oliva and Luiz Eduardo Buzato. Designing a secure and recongurable meta-object protocol. Technical Report IC-99-08, icunicamp, February B. Redmond and V. Cahill. Iguana/J: Towards a dynamic and ecient reective architecture for Java. In ECOOP 2000 Workshop on Reection and Metalevel Architectures, June I. Welch and R. Stroud. From Dalang to Kava the evolution of a reective Java extension. In Pierre Cointe, editor, Proceedings of the second international conference Reection'99, number 1616 in LNCS, pages Springer, July I. Welch and R. J. Stroud. Using reection as a mechanism for enforcing security policies in mobile code. In Proceedings of ESORICS'2000, number 1895 in Lecture Notes in Computer Science, pages , October 2000.
Reflections on MOPs, Components, and Java Security
Reflections on MOPs, Components, and Java Security Denis Caromel and Julien Vayssière INRIA - CNRS - I3S Université de Nice Sophia-Antipolis {First.Last}@sophia.inria.fr Abstract. This article investigates
Chapter 1 Fundamentals of Java Programming
Chapter 1 Fundamentals of Java Programming Computers and Computer Programming Writing and Executing a Java Program Elements of a Java Program Features of Java Accessing the Classes and Class Members The
Handling Run-time Updates in Distributed Applications
Handling Run-time Updates in Distributed Applications Marco Milazzo, Giuseppe Pappalardo, Emiliano Tramontana, Giuseppe Ursino Dipartimento di Matematica e Informatica Università di Catania {pappalardo,tramontana}@dmi.unict.it
A Typing System for an Optimizing Multiple-Backend Tcl Compiler
The following paper was originally published in the Proceedings of the Fifth Annual Tcl/Tk Workshop Boston, Massachusetts, July 1997 A Typing System for an Optimizing Multiple-Backend Tcl Compiler Forest
Checking Access to Protected Members in the Java Virtual Machine
Checking Access to Protected Members in the Java Virtual Machine Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/
Project Software Security: Securing SendMail with JAAS and Polymer
Project Software Security: Securing SendMail with JAAS and Polymer Frank van Vliet [email protected] Diego Ortiz Yepes [email protected] Jornt van der Wiel [email protected] Guido Kok
... RPP level 3 RPP level 2 RPP level 1 User program
A Tutorial on Behavioral Reection and its Implementation J. Malenfant, M. Jacques and F.-N. Demers Departement d'informatique et recherche operationnelle, Universite de Montreal, Montreal, Quebec, CANADA
Mirrors: Design Principles for Meta-level Facilities of Object-Oriented Programming Languages
Mirrors: Design Principles for Meta-level Facilities of Object-Oriented Programming Languages Gilad Bracha Sun Microsystems 4140 Network Circle Santa Clara, CA 95054 (408) 276-7025 [email protected]
An Exception Monitoring System for Java
An Exception Monitoring System for Java Heejung Ohe and Byeong-Mo Chang Department of Computer Science, Sookmyung Women s University, Seoul 140-742, Korea {lutino, [email protected] Abstract. Exception
Managing large sound databases using Mpeg7
Max Jacob 1 1 Institut de Recherche et Coordination Acoustique/Musique (IRCAM), place Igor Stravinsky 1, 75003, Paris, France Correspondence should be addressed to Max Jacob ([email protected]) ABSTRACT
Fundamentals of Java Programming
Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors
Java Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
language 1 (source) compiler language 2 (target) Figure 1: Compiling a program
CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program
Object Instance Profiling
Object Instance Profiling Lubomír Bulej 1,2, Lukáš Marek 1, Petr Tůma 1 Technical report No. 2009/7, November 2009 Version 1.0, November 2009 1 Distributed Systems Research Group, Department of Software
Component visualization methods for large legacy software in C/C++
Annales Mathematicae et Informaticae 44 (2015) pp. 23 33 http://ami.ektf.hu Component visualization methods for large legacy software in C/C++ Máté Cserép a, Dániel Krupp b a Eötvös Loránd University [email protected]
Aspects for Testing Aspects?
Aspects for Testing Aspects? Dehla Sokenou, Stephan Herrmann Technische Universität Berlin Software Engineering Group Sekr. FR 5-6, Franklinstr. 28/29, D-10587 Berlin [dsokenou stephan]@cs.tu-berlin.de
Run-time Variability Issues in Software Product Lines
Run-time Variability Issues in Software Product Lines Alexandre Bragança 1 and Ricardo J. Machado 2 1 Dep. I&D, I2S Informática Sistemas e Serviços SA, Porto, Portugal, [email protected] 2 Dep.
jmonitor: Java Runtime Event Specification and Monitoring Library
RV 04 Preliminary Version jmonitor: Java Runtime Event Specification and Monitoring Library Murat Karaorman 1 Texas Instruments, Inc. 315 Bollay Drive, Santa Barbara, California USA 93117 Jay Freeman 2
Lecture 17: Mobile Computing Platforms: Android. Mythili Vutukuru CS 653 Spring 2014 March 24, Monday
Lecture 17: Mobile Computing Platforms: Android Mythili Vutukuru CS 653 Spring 2014 March 24, Monday Mobile applications vs. traditional applications Traditional model of computing: an OS (Linux / Windows),
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo
Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program
Free Java textbook available online "Thinking in Java" by Bruce Eckel, 4th edition, 2006, ISBN 0131872486, Pearson Education Introduction to the Java programming language CS 4354 Summer II 2015 The third
Roles in Building Web Applications using Java
Roles in Building Web Applications using Java Guido Boella Dipartimento di Informatica Università di Torino Italy +390116706711 [email protected] Andrea Cerisara Dipartimento di Informatica Università
Aspect-Oriented Programming
Aspect-Oriented Programming An Introduction to Aspect-Oriented Programming and AspectJ Niklas Påhlsson Department of Technology University of Kalmar S 391 82 Kalmar SWEDEN Topic Report for Software Engineering
IC2D: Interactive Control and Debugging of Distribution
IC2D: Interactive Control and Debugging of Distribution Françoise Baude, Alexandre Bergel, Denis Caromel, Fabrice Huet, Olivier Nano, and Julien Vayssière INRIA Sophia Antipolis, CNRS - I3S - Univ. Nice
Resource Access Control for an Internet User Agent
The following paper was originally published in the Proceedings of the Third USENIX Conference on Object-Oriented Technologies and Systems Portland, Oregon, June 1997 Resource Access Control for an Internet
Agent Languages. Overview. Requirements. Java. Tcl/Tk. Telescript. Evaluation. Artificial Intelligence Intelligent Agents
Agent Languages Requirements Overview Java Tcl/Tk Telescript Evaluation Franz J. Kurfess, Cal Poly SLO 211 Requirements for agent Languages distributed programming large-scale (tens of thousands of computers)
Design by Contract beyond class modelling
Design by Contract beyond class modelling Introduction Design by Contract (DbC) or Programming by Contract is an approach to designing software. It says that designers should define precise and verifiable
Report of the case study in Sistemi Distribuiti A simple Java RMI application
Report of the case study in Sistemi Distribuiti A simple Java RMI application Academic year 2012/13 Vessio Gennaro Marzulli Giovanni Abstract In the ambit of distributed systems a key-role is played by
Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program
Free Java textbook available online "Thinking in Java" by Bruce Eckel, 4th edition, 2006, ISBN 0131872486, Pearson Education Introduction to the Java programming language CS 4354 Summer II 2014 Jill Seaman
Mapping between Levels in the Metamodel Architecture
Mapping between Levels in the Metamodel Architecture José Álvarez, Andy Evans 2, Paul Sammut 2 Dpto. de Lenguajes y Ciencias de la Computación, University Málaga, Málaga, 2907, Spain [email protected]
A Java-based system support for distributed applications on the Internet
A Java-based system support for distributed applications on the Internet D. Hagimont 1, D. Louvegnies 2 SIRAC Project INRIA, 655 av. de l Europe, 38330 Montbonnot Saint-Martin, France Abstract: We have
programming languages, programming language standards and compiler validation
Software Quality Issues when choosing a Programming Language C.J.Burgess Department of Computer Science, University of Bristol, Bristol, BS8 1TR, England Abstract For high quality software, an important
Dynamic Adaptability of Services in Enterprise JavaBeans Architecture
1. Introduction Dynamic Adaptability of Services in Enterprise JavaBeans Architecture Zahi Jarir *, Pierre-Charles David **, Thomas Ledoux ** [email protected], {pcdavid, ledoux}@emn.fr (*) Faculté
Avoiding Confusion in Metacircularity: The Meta-Helix
Avoiding Confusion in Metacircularity: The Meta-Helix Shigeru Chiba, Gregor Kiczales and John Lamping Published in proceedings of the Second JSSST International Symposium on Object Technologies for Advanced
KAZUAKI MAEDA. Chubu University. 1200 Matsumoto, Kasugai, Aichi 487-8501, JAPAN. Email: [email protected]
Design of a Programming System for Mobile Objects KAZUAKI MAEDA Department of Business Administration and Information Science, Chubu University 1200 Matsumoto, Kasugai, Aichi 487-8501, JAPAN Email: [email protected]
Reflecting on an Existing Programming Language
Vol. 6, No. 9, Special Issue: TOOLS EUROPE 2007, October 2007 Reflecting on an Existing Programming Language Andreas Leitner, Dept. of Computer Science, ETH Zurich, Switzerland Patrick Eugster, Dept. of
Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding
Compiling Object Oriented Languages What is an Object-Oriented Programming Language? Last time Dynamic compilation Today Introduction to compiling object oriented languages What are the issues? Objects
The Service Revolution software engineering without programming languages
The Service Revolution software engineering without programming languages Gustavo Alonso Institute for Pervasive Computing Department of Computer Science Swiss Federal Institute of Technology (ETH Zurich)
Reuse Contracts: Managing the Evolution of Reusable Assets
Reuse Contracts: Managing the Evolution of Reusable Assets Patrick Steyaert, Carine Lucas, Kim Mens, Theo D Hondt Programming Technology Lab Vrije Universiteit Brussel Pleinlaan 2, 1050 Brussels, Belgium
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Restraining Execution Environments
Restraining Execution Environments Segurança em Sistemas Informáticos André Gonçalves Contents Overview Java Virtual Machine: Overview The Basic Parts Security Sandbox Mechanisms Sandbox Memory Native
The Software Container pattern
The Software Container pattern Madiha H. Syed and Eduardo B. Fernandez Dept. of Computer and Elect. Eng. and Computer Science Florida Atlantic University, Boca Raton, FL 33431, USA [email protected], [email protected]
Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture
Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts
A Thread Monitoring System for Multithreaded Java Programs
A Thread Monitoring System for Multithreaded Java Programs Sewon Moon and Byeong-Mo Chang Department of Computer Science Sookmyung Women s University, Seoul 140-742, Korea [email protected], [email protected]
Curriculum Vitae. Shan Shan Huang
Curriculum Vitae Shan Shan Huang College of Computing Georgia Institute of Technology 266 Ferst Drive Atlanta, GA 30332-0765 Phone: (404)275-3312 Email: [email protected] http://www.freeflygeek.com Research
Component-Based Software Engineering (CBSE) Announcements
Component-Based Software Engineering (CBSE) Announcements Prof. Dr. Uwe Aßmann Technische Universität Dresden Institut für Software- und Multimediatechnik http://st.inf.tu-dresden.de 11-0.1, Apr 05, 2011
Lehrstuhl für Informatik 4 Kommunikation und verteilte Systeme. Middleware. Chapter 8: Middleware
Middleware 1 Middleware Lehrstuhl für Informatik 4 Middleware: Realisation of distributed accesses by suitable software infrastructure Hiding the complexity of the distributed system from the programmer
Cloud Computing. Up until now
Cloud Computing Lecture 11 Virtualization 2011-2012 Up until now Introduction. Definition of Cloud Computing Grid Computing Content Distribution Networks Map Reduce Cycle-Sharing 1 Process Virtual Machines
Java and Java Virtual Machine Security
Java and Java Virtual Machine Security Vulnerabilities and their Exploitation Techniques by Last Stage of Delirium Research Group http://lsd-pl.net Version: 1.0.0 Updated: October 2nd, 2002 Copyright c
Cedalion A Language Oriented Programming Language (Extended Abstract)
Cedalion A Language Oriented Programming Language (Extended Abstract) David H. Lorenz Boaz Rosenan The Open University of Israel Abstract Implementations of language oriented programming (LOP) are typically
Virtual Machine Security
Virtual Machine Security CSE497b - Spring 2007 Introduction Computer and Network Security Professor Jaeger www.cse.psu.edu/~tjaeger/cse497b-s07/ 1 Operating System Quandary Q: What is the primary goal
Program Analysis Techniques for Method Call Devirtualization in Object-Oriented Languages
Program Analysis Techniques for Method Call Devirtualization in Object-Oriented Languages Sander Sõnajalg December 7, 2009 Abstract In an object-oriented language, a call to an instance method generally
Security Vulnerability Notice
Security Vulnerability Notice SE-2012-01-PUBLIC [Security vulnerabilities in Java SE, Issue 54] DISCLAIMER INFORMATION PROVIDED IN THIS DOCUMENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS
Generating Aspect Code from UML Models
Generating Aspect Code from UML Models Iris Groher Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich, Germany [email protected] Stefan Schulze Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich,
Embedded Software Development with MPS
Embedded Software Development with MPS Markus Voelter independent/itemis The Limitations of C and Modeling Tools Embedded software is usually implemented in C. The language is relatively close to the hardware,
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
Java Programming Language
Lecture 1 Part II Java Programming Language Additional Features and Constructs Topics in Quantitative Finance: Numerical Solutions of Partial Differential Equations Instructor: Iraj Kani Subclasses and
Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007
Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 The Java Type System By now, you have seen a fair amount of Java. Time to study in more depth the foundations of the language,
Experimental Evaluation of Distributed Middleware with a Virtualized Java Environment
Experimental Evaluation of Distributed Middleware with a Virtualized Java Environment Nuno A. Carvalho, João Bordalo, Filipe Campos and José Pereira HASLab / INESC TEC Universidade do Minho MW4SOC 11 December
Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering
Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 2 GoF Design Patterns Creational 1 GoF Design Patterns Principles Emphasis on flexibility and reuse through decoupling of classes. The underlying
DIPLOMADO DE JAVA - OCA
DIPLOMADO DE JAVA - OCA TABLA DE CONTENIDO INTRODUCCION... 3 ESTRUCTURA DEL DIPLOMADO... 4 Nivel I:... 4 Fundamentals of the Java Programming Language Java SE 7... 4 Introducing the Java Technology...
Research and Design of Universal and Open Software Development Platform for Digital Home
Research and Design of Universal and Open Software Development Platform for Digital Home CaiFeng Cao School of Computer Wuyi University, Jiangmen 529020, China [email protected] Abstract. With the development
The Mjølner BETA system
FakePart I FakePartTitle Software development environments CHAPTER 2 The Mjølner BETA system Peter Andersen, Lars Bak, Søren Brandt, Jørgen Lindskov Knudsen, Ole Lehrmann Madsen, Kim Jensen Møller, Claus
Implementation Aspects of OO-Languages
1 Implementation Aspects of OO-Languages Allocation of space for data members: The space for data members is laid out the same way it is done for structures in C or other languages. Specifically: The data
Java Programming. Binnur Kurt [email protected]. Istanbul Technical University Computer Engineering Department. Java Programming. Version 0.0.
Java Programming Binnur Kurt [email protected] Istanbul Technical University Computer Engineering Department Java Programming 1 Version 0.0.4 About the Lecturer BSc İTÜ, Computer Engineering Department,
Google App Engine Java security sandbox bypasses
Google App Engine Java security sandbox bypasses Technical Report Ver. 1.0.0 SE-2014-02 Project DISCLAIMER INFORMATION PROVIDED IN THIS DOCUMENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS
ANDROID BASED MOBILE APPLICATION DEVELOPMENT and its SECURITY
ANDROID BASED MOBILE APPLICATION DEVELOPMENT and its SECURITY Suhas Holla #1, Mahima M Katti #2 # Department of Information Science & Engg, R V College of Engineering Bangalore, India Abstract In the advancing
Customizing the Security Architecture
Chapter7.fm Page 113 Wednesday, April 30, 2003 4:29 PM CHAPTER7 Customizing the Security Architecture The office of government is not to confer happiness, but to give men opportunity to work out happiness
Li Gong and Roland Schemers. fgong,[email protected]. overlap, as shown in Figure 1. 1
Implementing Protection Domains in the Java TM Development Kit 1.2 Li Gong and Roland Schemers JavaSoft, Sun Microsystems, Inc. fgong,[email protected] Abstract The forthcoming Java TM Development
Introduction Object-Oriented Network Programming CORBA addresses two challenges of developing distributed systems: 1. Making distributed application development no more dicult than developing centralized
Towards Integrating Modeling and Programming Languages: The Case of UML and Java
Towards Integrating Modeling and Programming Languages: The Case of UML and Java Patrick Neubauer, Tanja Mayerhofer, and Gerti Kappel Business Informatics Group, Vienna University of Technology, Austria
Systems Integration: Co C mp m onent- t bas a e s d s o s ftw ft a w r a e r e ngin i eeri r n i g
Systems Integration: Component-based software engineering Objectives To explain that CBSE is concerned with developing standardised components and composing these into applications To describe components
Configuration Management
83 Chapter 6 Configuration Management Published as: Configuration Management in Component Based Product Populations, Rob van Ommering, 10th International Workshop on Software Configuration Management,
Using the Construct Development Environment to Generate a File-Based Hypermedia Storage Service
Using the Construct Development Environment to Generate a File-Based Hypermedia Storage Service Uffe Kock Wiil Department of Computer Science Aalborg University Esbjerg Niels Bohrs Vej 8, 6700 Esbjerg,
Lecture 1 Introduction to Android
These slides are by Dr. Jaerock Kwon at. The original URL is http://kettering.jrkwon.com/sites/default/files/2011-2/ce-491/lecture/alecture-01.pdf so please use that instead of pointing to this local copy
Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective
Orit Hazzan's Column Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective This column is coauthored with Jeff Kramer, Department of Computing, Imperial College, London ABSTRACT
