jmonitor: Java Runtime Event Specification and Monitoring Library
|
|
|
- Dortha Hilda Gilbert
- 10 years ago
- Views:
Transcription
1 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 Jay Freeman 2 College of Creative Studies University of California Santa Barbara, California USA Abstract jmonitor is a pure Java library and runtime utility for specifying event patterns and associating them with user provided event monitors that get called when the specified Java runtime events occur during the execution of legacy Java applications. jmonitor APIs define an event specification abstraction layer allowing programmers to design event patterns they would like to monitor during the runtime execution of legacy Java applications. jmonitor instrumentation works at the Java bytecode level and does not require the presence of source code for the Java application that is being monitored. jmonitor overloads the dynamic class loader and takes the event specification and monitors (in the form of Java class files) as additional arguments when launching the target Java application. The class bytecodes of the monitored Java program are instrumented on the fly by the jmonitor class loader according to the needs of the externally specified jmonitor event patterns and event monitors. Key words: Aspect-oriented programming, event monitoring, byte-code instrumentation, runtime verification, jmonitor. 1 Introduction jmonitor is a pure Java library and runtime utility for designing event monitors that get called when specified Java runtime events occur during the execution of pure Java applications. jmonitor APIs define an event specification abstraction layer allowing programmers to design event patterns they would like 1 [email protected] 2 [email protected] This is a preliminary version. The final version will be published in Electronic Notes in Theoretical Computer Science URL:
2 to monitor during the runtime execution of legacy Java applications. jmonitor instrumentation works at the Java bytecode level and does not require the presence of source code for the Java application that is being monitored. jmonitor overloads the dynamic class loader and takes the event specification and monitors (in the form of Java class files) as additional arguments when launching the target Java application. The class bytecodes of the monitored Java program are instrumented on the fly by the jmonitor class loader according to the needs of the externally specified jmonitor event patterns and event monitors. During the execution of the instrumented Java application, each Java bytecode instruction that matches one of the specified event patterns triggers the call of one or more associated monitor methods. Each monitor method gets called with runtime context information regarding the triggering event: the type of event, its target object and the call stack representing the method in which the event occurred along with the arguments to the method which collectively defines the full call context when the event occurred. jmonitor events correspond to fundamental Java programming abstractions: reading or writing of a field in a class, method invocation, method return or throw of an exception, and creation of a new object or array. Each event is also qualified with a Java application context such as the name of the field or the method and the names of the class and method context. The names are specified as regular expression strings. One or more distinct event monitors can be associated with each event. Each monitor method can additionally be specified to be triggered before, after or instead of the associated event. jmonitor instrumentation arranges for the capture and passing of the full or minimal runtime event and call context to the monitor method. jmonitor presents a flexible and powerful event modelling and monitoring paradigm that offers the programmer some of the same benefits of aspect oriented programming. 2 jmonitor Event Patterns In section 2.1 we introduce the jmonitor events, event patterns and event monitors. In section 2.1 we define different types of Java runtime events that are modelled by jmonitor patterns and how to specify event patterns with context constraints expressed in Java using jmonitor APIs and how to attach event monitors to event patterns. In section 3 we describe the different types of event monitors and the types of runtime context information collected and made available to the event monitor through jmonitor instrumentation. During start-up, the jmonitor instrumenting class loader calls the static seteventpatterns method of a user provided event pattern specification class. Figure 1 illustrates the flow of information about the legacy application and the event monioring layer. Each event pattern specified by the user 2
3 Event Pattern Specifiers jmonitor application launcher Event Monitors Legacy Java Java Application Packages jmonitor Dynamic Class Loader JVM Fig. 1. jmonitor class loader performs on-the-fly bytecode instrumentation subsequently guides jmonitor class loader to perform any needed on-the-fly instrumentation of the bytecodes of each class before it gets loaded. 2.1 jmonitor Event Types Each jmonitor event pattern is based on at least one of the supported fundamental Java programming abstractions: the reading or writing of a field in a class, method invocation, method return or throw of an exception, or creation of a new object or array. The monitoring application layer builds each event pattern by calling jmonitor.eventpattern methods inside the seteventpatterns method. Table 1 summarizes the different types of Java events supported by jmonitor and the corresponding static jmonitor.eventpattern methods. Each method returns a new jmonitor.eventpattern object. 2.2 Specifying Event Contexts Each jmonitor method listed in Table 1 returns a reference to a newly constructed jmonitor.eventpattern object. Each created EventPattern can then be further modified using one or more of the context definition APIs it supports as listed in Table 2 to narrow down the event context it matches. 3
4 Event type KARAORMAN and FREEMAN EventPattern method Table 1 Event Types Argument Event description Field read onfieldread None Read of a field, directly or through an object or static class reference Field write onfieldwrite None Assignment of value to a field, directly or through an object or static class reference Method invocation onmethodcall None Method call through an object reference or directly within same scope or as a static method Return onreturn None Issue of a return instruction from a method context Throw exception onthrow None Issue of a throw instruction from a method context Instance creation onnew None Issue of a new instruction used to instantiate a new object of a concrete class Array creation onarraycreate None Issue of a new instruction used to create a new array Any event onanyevent None Any of the events listed in this table For example, the following code snippet:... static public void seteventpatterns() { EventPattern e1, e2, e3; e1 = jmonitor.eventpattern.onfieldwrite().of(".foo.a"); e2 = e1.from("\\.myapp\\.bar\\("); e3 = jmonitor.eventpattern.onmethodcall().of(".foo.m\\(").from("bar.*");... 4
5 . EventPattern method of Table 2 EventPattern Context Definition Methods Argument type Method, Field, Class or Exception signature Description Regular expression to match against the event target s signature from Method signature Regular expression to match against the signature of the method that immediately caused the event in Method signature Regular expression to match against any method s signature in the runtime call stack setname String Assign a name to the pattern getname none Get the name assigned to the pattern defines a new event pattern, e1, corresponding to all write accesses to fields named a in all Foo classes, in any package. The second event pattern, e2, is derived from e1, but further constrains the new event pattern to match only when the write access to a Foo.a field happens during the execution of a MyApp.bar function call. The event pattern e2 matches a subset of all events described by e1. Similarly, each EventPattern context definition method call builds a new event pattern with additional constraints. The event pattern e3 matches all method calls for Foo.m() placed from anywhere within package or class Bar. 2.3 Logic Operators for Combinining Event Patterns New event patterns can be constructed using the defined logical operators defined in Table 3. For example, the following code snippet: EventPattern e1, e2, e3, e4; e1 = jmonitor.eventpattern.onfieldread().of(".foo.a"); e2 = jmonitor.eventpattern.onfieldwrite().of(".foo.a"); e3 = e1.or(e2); e4 = e1.and((jmonitor.eventpattern.onanyevent().from("bar.*")).not()); defines a new event pattern, e1, matching all read accesses to fields named a in all Foo classes, in any package. The second event pattern, e2, is essentially same pattern defined for write. Therefore e3 matches the read or write of the fields named a in all Foo classes, in any package. Finally, 5
6 Table 3 EventPattern Logic Operators EventPattern method and or not Argument EventPattern object EventPattern object EventPattern object Description Returns new event pattern that must match both the target and argument event pattern Returns new event pattern that matches either the target or the argument event pattern Returns new event pattern that matches all other events not matched by the argument event pattern e4 is defined to match all read accesses of fields named a in all Foo classes, exluding those issued from any method in package Bar. 2.4 Attaching Monitors to Events Creating an event pattern object by itself does not necessarily result in the instrumentation of any application class bytecode to set up a monitor call trigger. Only by associating an event pattern with an event monitor jmonitor is instructed to instrument matching context s bytecodes. This association is established by calling one of the dobefore, doafter, or doinstead methods on the event pattern. The matching of event patterns to actual intructions in class bytecodes of the monitored application that need to be instrumented is performed statically during initialization, prior to loading any application class. The instrumented application bytecodes simply calls the event monitor methods when execution reaches the specified event trigger locations. For event patterns built using the of and from constructs no additional runtime checks are needed to determine whether a specific Java instruction matches the event pattern. Event patterns that include the in context definitions incur a very slight extra runtime overhead (single boolean test) during application execution around each instruction that potentially match the event pattern. To attach an event monitor to a particular event pattern it is sufficient to call one of the seteventpatterns methods listed in Table 4. An example event specifier class is illustrated in Figure 2. This example specifies an event pattern that replaces all calls to mypackage.myclass.foo(object) function with the doinstead method of mypackage.mynullmonitor class. Each method can be called multiple times to attach additional monitor methods that get called when event the is triggered. 6
7 Table 4 EventPattern Monitor Specification Methods EventPattern method Argument Description. dobefore Class name Argument contains the name of the class containing a dobefore monitor method that gets called with the call context information immediately before the specified matching Java event occurs doafter Class name Argument contains the name of the class containing a doafter monitor method that gets called with the call context information immediately after the specified matching Java event occurs. Not applicable for return and throw events. doinstead Class name Argument contains the name of the class containing a doinstead monitor method that gets called with the call context information. This method is called instead of the specified matching Java event. The value returned back from the doinstead monitor is plugged back where appropriate to replace the corresponding Java event s evaluation public class MyEvents implements jmonitor.eventspecifier static public void seteventpatterns() { jmonitor.eventpattern.onmethodcall().of("int mypackage.myclass.foo\\(object\\)").doinstead("mypackage.mynullmonitor"); 3 Event Monitors Fig. 2. Example Event Pattern Specifier Each event pattern is associated with zero or more event monitors. A jmonitor event monitor is a pure Java class inheriting from one of the abstract classes in the jmonitor package: BeforeMonitor, AfterMonitor, or InsteadMonitor. Each class corresponds to a particular type of the monitor that is attached to an event pattern. The doafter monitors extend jmonitor.aftermonitor and 7
8 implement the abstract doafter method. Similarly, the dobefore monitors extend jmonitor.beforemonitor and implement the dobefore method. The dobefore and doafter type monitors are intended to be observer monitors, although the monitors are implemented as unconstrained Java methods and can have side-effects. The doinstead type monitors on the other hand are intended to allow user level behavior replacement of the monitored events. These monitors extend jmonitor.insteadmonitor and implement the abstract doinstead method. The Object result returned by the doinstead method gets used in the event behavior replacement logic of jmonitor instrumentation. The class(es) containing the event monitor methods are passed to jmonitor at runtime, specified either as a command line argument or placed in the classpath. jmonitor instruments each Java instruction in any loaded class that matches one of the specified event patterns based on all the event monitors attached to the event via calls to the dobefore, doafter, or doinstead methods. If multiple monitors methods are attached to the same event pattern the order in which they get called is not defined. The instrumented application packages the requested call context information and calls the attached monitor methods with the call context as an argument. Table 5 depicts the information that comprises the context accessible by the monitor method through its jmonitor.eventcontext argument. Figure 3 illustrace a fairly generic monitor for logging event traces with all available context information. 3.1 Behavior Modification Using Instead Monitors When an application reaches the Java bytecode instruction that corresponds to a jmonitor event associated with an instead monitor, instead of executing the Java instruction, the monitor s doinstead method gets called, passing the call context as an argument. The value returned back from the doinstead monitor is subsequently plugged back where appropriate to replace the corresponding Java event s evaluation by the instrumented bytecodes. Each doinstead monitor extends the abstract jmonitor.insteadmonitor class and can use the passthrough method to perform the original event that is being replaced. The passthrough method takes an Object[] representing the arguments for each event type: field read: no args field write: arguments[0] gets written method call: gets called with possibly modified arguments[] from the call context return: can t call passthrough throw exception: can t call passthrough new object or array: constructor is called with the arguments[] from the 8
9 Table 5 jmonitor Event Context Interface EventContext method Return type Description. geteventtype jmonitor.event type of jmonitor event that triggered monitor call getsignature String Signature of the target that matched the of constraint. getpattern jmonitor.eventpattern Pattern Name assigned by the user gettarget Object The target object corresponding to the event getvalue Object Get the result or the exception returned or the value about to be written getarguments Object[] Arguments supplied to the target event. getarguments()[0]holds the value for any write event getcallstack jmonitor.stackframe[] Gets an array of stack frames corresponding to the runtime Java call stack. A stack frame is an object that contains: signature of the method, the arguments passed to the method (if available), source code file, line of the call for this method (if available) geteventpattern jmonitor.eventpattern Gets the event pattern specification object that matched the current event call context The passthrough call forces the execution of the event that is otherwise being replaced and returns the resulting object (where appropriate). The insteadmonitor may subsequently choose to return its own computed result or a result obtained from a passthrough call. Whatever value the doinstead monitor returns is used to replace the behavior of the original event being monitored. An example instead monitor is shown in figure 4. 9
10 public class TraceMonitor implements jmonitor.aftermonitor { public void doafter(jmonitor.eventcontext context) { System.out.println("Event: " + jmonitor.eventtype.tostring(context.geteventtype()) + " of " + context.getsignature()); System.out.println("Pattern Name: " + context.getpattern().getname()); System.out.println(" Target = " + context.gettarget()); System.out.println(" Value = " + context.getvalue()); Object[] args = context.getarguments(); if (args!= null) { for (int a = 0; a!= args.length; ++a) { System.out.println(" Arg #" + a + ": " + args[a]); jmonitor.stackframe[] stack = context.getcallstack(); if (stack!= null) { System.out.println(" Call Stack:"); for (int i = 0; i!= stack.length; ++i) { jmonitor.stackframe frame = stack[i]; System.out.println(" " + frame.getsignature()); Object[] args = frame.getarguments(); if (args!= null) { for (int a = 0; a!= args.length; ++a) { System.out.println(" Arg #" + a + ": " + args[a]); String file = frame.getsourcefile(); int line = frame.getsourceline(); if (file!= null) { System.out.println(" at: " + file + "[" + line + "]"); Fig. 3. Example Monitor: TraceMonitor 10
11 . StackFrame method Table 6 StackFrame Information Return type Description getsignature String When not null, signature of the method of stack frame in the call stack getarguments Object[] When not null, arguments supplied to the method of the stack frame. getsourcefile String When not null, name of the file for the method of stack frame getsourceline String When not null, corresponding line number in the source file for the method of stack frame package mypackage; public class MyNullMonitor extends jmonitor.insteadmonitor { public Object doinstead(jmonitor.eventcontext context) { Object[] args = context.getarguments(); if (args.length!= 0 && args[0] == null) { return new Integer(10); else { return passthrough(args); Fig. 4. Example InsteadMonitor: MyNullMonitor 4 Design and Implementation Overview In order to monitor runtime events during the execution of a legacy Java application the developer must launch the target application using the jmonitor application launcher. The only additional information that must be provided at the command line to start a monitoring session is the list of event specification classes. The names of the event monitor classes do get explicitly passed into the jmonitor application launcher as they will be dynamically loaded by the JVM on demand when an instrumented application class that references a monitor method gets loaded. During its start-up initialization, jmonitor instrumenting class loader calls 11
12 the static seteventpatterns method of the user provided event pattern specification class. The jmonitor.eventpattern methods calls within the seteventpatterns method builds the monitor event patterns. Event patterns then are associated with user specified event monitors using one of the dobefore, doafter, or doinstead methods on the event pattern. Each event pattern specified by the user and attached to a monitor subsequently guides jmonitor class loader to perform any needed on-the-fly instrumentation of the bytecodes of each class before it gets loaded. The following psuedo code illustrates the instrumentation logic used by jmonitor class loader. For each loaded class, c For each method, m, in c For each instruction, i, in c.m For each user specified event-pattern, ep if i.matches(ep, m, c) add ep.monitors to i.monitors if i.monitors not empty insert stub for context extraction if i.beforemonitors is not empty insert dobefore calls if i.insteadmonitors is empty insert instruction i if i.aftermonitors is not empty insert doafter calls if i.insteadmonitors is not empty insert doinstead call plug doinstead return else // i has no monitors insert instruction i 4.1 Status and Limitations A prototype implementation of jmonitor for proof-of-concept has been implemented. Current implementation uses BCEL bytecode engineering library [2] and Apache Perl5 style regular expression library. An open source implementation offering full jmonitor functionality is planned. One limitation imposed on the user is that event monitoring classes must be distinct from event specification classes (or declared within the specification classes as inner classes). This is necessary to prevent dynamic class from attempting to load monitor or legacy application classes before the event specification classes are loaded. jmonitor needs to load specification classes first and learn about all user definer event patterns before any other class is loaded, otherwise the instrumentation will be partial. 12
13 4.2 Performance The matching of event patterns to actual intructions in class bytecodes of the monitored application that needs to be instrumented is performed statically during initialization, prior to loading any application class. There is no additional runtime overhead associated with event pattern matching involving those built using the of and from constructs. The instrumented application bytecodes simply calls the event monitor methods when execution reaches the specified event trigger locations. Event patterns that include the in context definitions, however, incur a very slight extra runtime overhead (single boolean test) during application execution around each instruction that potentially match the event pattern. It is important to note, however, that there is no runtime regular expression match overhead for matching the in patterns. All regular expressions are matched at instrumentation time. Here s how it works. Let s say there is an in("^int.*$") pattern, to match any function that returns an int. Then, for this pattern object, jmonitor introduces a thread specific static boolean (so there will be one boolean per in() pattern per thread). When instrumenting a method, jmonitor checks to see if it matches the pattern for all in patterns anywhere for any event. If it does match, then instrumentation adds some code around the method to add a local boolean variable. If the current thread s boolean for this pattern is false, then this boolean gets set true. If not, then we set the local boolean to false and leave the pattern boolean as true. Then a finally clause is added to this function that checks if the local boolean is true (i.e., this call was the call that set the pattern s boolean to true) then instrumentation sets the pattern s boolean to false. Subsequently, whenever jmonitor instruments an instruction for which there is an event pattern that contains an in constraint, it checks the current thread s boolean for each in pattern to see if it is set to true. Thus, we can avoid doing any runtime regular expression matches can support in constraints without much runtime overhead. 5 Related Work 5.1 Aspect Oriented Programming One of the technologies that our work immediately compares with is aspectoriented programming [3]. There are, however, differences that need to be addressed. The paradigm expressed by aspect oriented programming is one of development. It changes the way you design and implement your software. In comparison, the concept of runtime monitoring as implemented by jmonitor is put forth as something done more after the fact. When one is completed with their application and is attempting to get more of an understanding of why a particular behavior is happening, they may decide to attach monitors to 13
14 various events for this purpose. All of the instrumentation is done at runtime, and these monitors may be used for only a subset of the application through the usage of the monitoring class loader. We envision debugging environments may be developed around this technology, not development environments. While the implementation of monitoring may share some likenesses to aspect oriented programming, the usage cases, and thereby the programming method it puts forth, are different. 5.2 Valgrind Another project that is similar in nature and design is Valgrind [4]. Valgrind is a framework for doing instrumentation of compiled x86 code. Some of the tools that have been implemented using Valgrind are memory leak and overrun detectors as well as profilers. Valgrind has a rather large runtime performance cost, however, in that even if no instrumentation is to be performed there is about a four to five times speed hit. Some other limitations of the tool is due to the limitations of its target domain: the environment of compiled x86 code. There is not nearly enough meta information in compiled x86 binaries to design general runtime instrumentation skins in Valgrind as most of the useful code details are lost during the compilation process. jmonitor, implemented in and for Java, has access to metadata information regarding what functions or fields are actually being accessed by any particular instruction. Tools like Valgrind and other commercially successful binary instrumentation packages such as Rational s Purify and Quantify and Code coverage tools, or BoundsChecker do provide very valuable benefits to software developers in monitoring and detecting dynamic memory access and usage violations, program profiling, and code coverage. jmonitor offers fundamentally everything necessary to develop these types of tool support for Java application development. 5.3 jcontractor The system most similar in design and implementation approach to jmonitor is jcontractor[1], a pure Java library based implementation of Design By Contract for the Java language. It is available as an open source project currently hosted at jcontractor was designed as part of Karaorman s Ph.D. thesis, designing pure library and reflection based techniques for extending object oriented languages[8]. jcontractor contracts are written as Java methods that follow a simple naming convention. jcontractor provides runtime contract checking by instrumenting the bytecode of classes that define contracts. jcontractor can either add contract checking code to class files to be executed later, or it can instrument classes at runtime as they are loaded. Both jcontractor and jmonitor are purely library based, requiring no preprocessing or modifications to the JVM. jcontractor offers some limited runtime monitoring capabilities by 14
15 allowing contract methods to use unconstrained Java expressions. Pre-, post condition and invariant methods can be used for monitoring purposes only at function entry and exit points, without control over or access to its call context. jmonitor is a much more fine-grained, lower lxevel and light weight instrumentation approach ideally suited for event specification and monitoring. 5.4 Binary Component Adaptation Another project sharing some similarities with jmonitor is the binary component adaptation (BCA) mechanism based on load time modification of Java byte codes [5]. Binary component adaptation (BCA) allows components to be adapted and evolved in binary form and on-the-fly (during program loading). Similar to jmonitor, BCA rewrites component binaries before (or while) they are loaded and requires no source code access. The approach is very flexible, allowing a wide range of modifications (including method addition, renaming, and changes to the inheritance or subtyping hierarchy). The differences between jmonitor and BCA are largely due to the application domain. BCA is designed to transform components or applications to adapt and evolve with changing interfaces and other design changes. The adaptations are prescribed in the form of delta specifications, such as adding or renaming methods or fields, extending interfaces, and changing inheritance or subtyping hierarchies. Some of these changes such as those that does not require modifications to the inheritance hierarchy can be supported by jmonitor. BCA, on the other hand is not designed to support detection and monitoring of the type low level Java events that jmonitor provides. 5.5 Query Based Debugging Lencevicius et.al [6] have developed a query-based debugging tool which, working somewhat similar to an SQL database query tool, finds all object tuples satisfying a given boolean constraint expression. The dynamic query based debugger continually updates the results of queries as the program runs, and can stop the program as soon as the query result changes. To provide this functionality, the debugger finds all places where the debugged program changes a field that could affect the result of the query and uses sophisticated algorithms to incrementally reevaluate the query. The on-the-fly debugger adds a capability to stop the java program just at prescribed execution phases and enables querying as well as allowing to change the query later. They have implemented such a dynamic query-based debugger for Java written in pure Java with no JVM modifications. It seems possible to use a tool based on jmonitor to assist in similar type of debugging scenarios. jmonitor monitors can be written by the programmer to provide instant error alerts by continuously checking inter-object relationships while the debugged program is running. The monitor can continually 15
16 update the results of queries (expressed as user level Java expressions) as the program runs, and can stop the program as soon as the query result changes. Programmer can specify event patterns matching all contexts where the debugged program changes a field that could affect the results of the query for an efficiency. 6 Conclusion We have introduced jmonitor, a pure Java library and runtime utility for user level specification of event patterns and associating them with user defined event monitors that get called when the specified Java runtime events occur during the execution of legacy Java applications. One of the key benefits of jmonitor is the ease of use and intuitiveness of its approach to event modelling and monitoring. The approach is light weight and non-intrusive to typical programming and software development processes. Supporting regular expressions is very powerful and leads to very conscise and simple usage when designing event-patterns. jmonitor does not require special compilers, pre-processors or special IDEs and since it does not require source-code or forced recompilation it supports legacy applications well. jmonitor presents a flexible, powerful and yet pragmatic and intuitive event modelling and monitoring paradigm that offers the programmer most of the same benefits of aspect oriented programming but without requiring requiring significant changes to the way most Java programmer design and implement their software, and while supporting their legacy development tools and practices. jmonitor can be used during the development, debugging, testing and deployment stages of the software lifecycle. When a developer needs to get more of an understanding of when and why a particular behavior is happening, he or she may decide to design event patterns and attach monitors to analyze the relevant events. We envision powerful tooling and debugging environments to be developed around jmonitor technology. Additionally, we envision adding tooling support to automate some of the mechanical (i.e. programmed specification) aspects of event pattern specification and event monitor selection. jmonitor supports dynamic program monitoring and analysis. It can be used to gather information during program execution and use it to conclude properties about the program, either during test or in operation. jmonitor supports program instrumentation. It can be used to instrument programs without requiring source code, to emit relevant events to an observer or to modify behavior of legacy applications. jmonitor supports program guidance. It can be used to alter the behavior of a legacy program for example to adapt to a new paradigm or when its specification is violated. This ranges from standard exceptions to advanced planning. Guidance can also be used during testing to expose errors. 16
17 References [1] Abercrombie, P., M. Karaorman, jcontractor: Bytecode instrumentation techniques for implementing design by contract in Java, In Proceedings of Second Workshop on Runtime Verification, RV 02, Copenhagen, Denmark, July 26, 2002, (also in Electronic Notes in Theoretical Computer Science, URL: [2] Dahm, M., Byte Code Engineering with the BCEL API, Technical Report B , Institut für Informatik, Freie Universität Berlin (1998). [3] Kiczales, G., et al., Aspect-Oriented Programming, In Proceedings European Conference on Object-Oriented Programming (1997), [4] Nethercote, N., Seward, J., Valgrind: A Program Supervision Framework, In Proceedings of the Third Workshop on Runtime Verification (RV 03), Boulder, Colorado, USA, July 2003, (also in Electronic Notes in Theoretical Computer Science Vol.89 (2003), URL: [5] Keller, R., and U. Hölzle, Binary Component Adaptation, In Proceedings of the European Conference on Object-Oriented Programming, Springer-Verlag, July 1998, [6] Lencevicius, R., U. Hölzle, A.K. Singh, Dynamic Query-Based Debugging, In Proceedings of the 13th European Conference on Object-Oriented Programming 99, (ECOOP 99), Lisbon, Portugal, June 1999, (Also published as Lecture Notes on Computer Science 1628, Springer-Verlag, ). [7] Lindholm, T., and F.Yellin, The Java Virtual Machine Specification, Addison- Wesley, Reading, [8] Karaorman, M., Pure Library and Reflection Based Techniques for Extending Object Oriented Languages, Ph.D. thesis, University of California, Santa Barbara,
The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1
The Java Series Java Essentials I What is Java? Basic Language Constructs Slide 1 What is Java? A general purpose Object Oriented programming language. Created by Sun Microsystems. It s a general purpose
Instrumentation Software Profiling
Instrumentation Software Profiling Software Profiling Instrumentation of a program so that data related to runtime performance (e.g execution time, memory usage) is gathered for one or more pieces of the
Data Structure Oriented Monitoring for OpenMP Programs
A Data Structure Oriented Monitoring Environment for Fortran OpenMP Programs Edmond Kereku, Tianchao Li, Michael Gerndt, and Josef Weidendorfer Institut für Informatik, Technische Universität München,
Computing Concepts with Java Essentials
2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann
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
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
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
Crash Course in Java
Crash Course in Java Based on notes from D. Hollinger Based in part on notes from J.J. Johns also: Java in a Nutshell Java Network Programming and Distributed Computing Netprog 2002 Java Intro 1 What is
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
Java (12 Weeks) Introduction to Java Programming Language
Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short
Monitoring, Tracing, Debugging (Under Construction)
Monitoring, Tracing, Debugging (Under Construction) I was already tempted to drop this topic from my lecture on operating systems when I found Stephan Siemen's article "Top Speed" in Linux World 10/2003.
Habanero Extreme Scale Software Research Project
Habanero Extreme Scale Software Research Project Comp215: Java Method Dispatch Zoran Budimlić (Rice University) Always remember that you are absolutely unique. Just like everyone else. - Margaret Mead
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
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
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
C Compiler Targeting the Java Virtual Machine
C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the
Cross-platform IL code manipulation library for runtime instrumentation of.net applications
Cross-platform IL code manipulation library for runtime instrumentation of.net applications master thesis subject for Markus Gaisbauer (0256634) in cooperation with dynatrace software GmbH July 5, 2007
Java CPD (I) Frans Coenen Department of Computer Science
Java CPD (I) Frans Coenen Department of Computer Science Content Session 1, 12:45-14:30 (First Java Programme, Inheritance, Arithmetic) Session 2, 14:45-16:45 (Input and Programme Constructs) Materials
New Generation of Software Development
New Generation of Software Development Terry Hon University of British Columbia 201-2366 Main Mall Vancouver B.C. V6T 1Z4 [email protected] ABSTRACT In this paper, I present a picture of what software development
The C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
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
CS 111 Classes I 1. Software Organization View to this point:
CS 111 Classes I 1 Software Organization View to this point: Data Objects and primitive types Primitive types operators (+, /,,*, %). int, float, double, char, boolean Memory location holds the data Objects
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
C#5.0 IN A NUTSHELL. Joseph O'REILLY. Albahari and Ben Albahari. Fifth Edition. Tokyo. Sebastopol. Beijing. Cambridge. Koln.
Koln C#5.0 IN A NUTSHELL Fifth Edition Joseph Albahari and Ben Albahari O'REILLY Beijing Cambridge Farnham Sebastopol Tokyo Table of Contents Preface xi 1. Introducing C# and the.net Framework 1 Object
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
Software Engineering Techniques
Software Engineering Techniques Low level design issues for programming-in-the-large. Software Quality Design by contract Pre- and post conditions Class invariants Ten do Ten do nots Another type of summary
CSCI E 98: Managed Environments for the Execution of Programs
CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office
Syntax Check of Embedded SQL in C++ with Proto
Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, 2010. Vol. 2. pp. 383 390. Syntax Check of Embedded SQL in C++ with Proto Zalán Szűgyi, Zoltán Porkoláb
An Overview of Java. overview-1
An Overview of Java overview-1 Contents What is Java Major Java features Java virtual machine Java programming language Java class libraries (API) GUI Support in Java Networking and Threads in Java overview-2
Debugging Java Applications
Debugging Java Applications Table of Contents Starting a Debugging Session...2 Debugger Windows...4 Attaching the Debugger to a Running Application...5 Starting the Debugger Outside of the Project's Main
Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition
Java 6 'th edition Concepts INTERNATIONAL STUDENT VERSION CONTENTS PREFACE vii SPECIAL FEATURES xxviii chapter i INTRODUCTION 1 1.1 What Is Programming? 2 J.2 The Anatomy of a Computer 3 1.3 Translating
www.virtualians.pk CS506 Web Design and Development Solved Online Quiz No. 01 www.virtualians.pk
CS506 Web Design and Development Solved Online Quiz No. 01 Which of the following is a general purpose container? JFrame Dialog JPanel JApplet Which of the following package needs to be import while handling
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,
Chapter 5 More SQL: Complex Queries, Triggers, Views, and Schema Modification
Chapter 5 More SQL: Complex Queries, Triggers, Views, and Schema Modification Copyright 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 5 Outline More Complex SQL Retrieval Queries
To Java SE 8, and Beyond (Plan B)
11-12-13 To Java SE 8, and Beyond (Plan B) Francisco Morero Peyrona EMEA Java Community Leader 8 9...2012 2020? Priorities for the Java Platforms Grow Developer Base Grow Adoption
KITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php [email protected] [email protected] Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
Automatic test factoring for Java
Automatic test factoring for Java David Saff Shay Artzi Jeff H. Perkins Michael D. Ernst MIT Computer Science and Artificial Intelligence Lab The Stata Center, 32 Vassar Street Cambridge, MA 02139 USA
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,
AP Computer Science Java Subset
APPENDIX A AP Computer Science Java Subset The AP Java subset is intended to outline the features of Java that may appear on the AP Computer Science A Exam. The AP Java subset is NOT intended as an overall
Getting Started with the Internet Communications Engine
Getting Started with the Internet Communications Engine David Vriezen April 7, 2014 Contents 1 Introduction 2 2 About Ice 2 2.1 Proxies................................. 2 3 Setting Up ICE 2 4 Slices 2
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]
Debugging. Common Semantic Errors ESE112. Java Library. It is highly unlikely that you will write code that will work on the first go
Debugging ESE112 Java Programming: API, Psuedo-Code, Scope It is highly unlikely that you will write code that will work on the first go Bugs or errors Syntax Fixable if you learn to read compiler error
General Introduction
Managed Runtime Technology: General Introduction Xiao-Feng Li ([email protected]) 2012-10-10 Agenda Virtual machines Managed runtime systems EE and MM (JIT and GC) Summary 10/10/2012 Managed Runtime
Database Application Developer Tools Using Static Analysis and Dynamic Profiling
Database Application Developer Tools Using Static Analysis and Dynamic Profiling Surajit Chaudhuri, Vivek Narasayya, Manoj Syamala Microsoft Research {surajitc,viveknar,manojsy}@microsoft.com Abstract
Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment
Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment Wyatt Spear, Allen Malony, Alan Morris, Sameer Shende {wspear, malony, amorris, sameer}@cs.uoregon.edu
Visual Basic. murach's TRAINING & REFERENCE
TRAINING & REFERENCE murach's Visual Basic 2008 Anne Boehm lbm Mike Murach & Associates, Inc. H 1-800-221-5528 (559) 440-9071 Fax: (559) 440-0963 [email protected] www.murach.com Contents Introduction
An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases
An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases Paul L. Bergstein, Priyanka Gariba, Vaibhavi Pisolkar, and Sheetal Subbanwad Dept. of Computer and Information Science,
Automatic generation of fully-executable code from the Domain tier of UML diagrams
Abstract. Automatic generation of fully-executable code from the Domain tier of UML diagrams Macario Polo, Agustín Mayoral, Juan Ángel Gómez and Mario Piattini Alarcos Group - Department of Computer Science
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
Syllabus for CS 134 Java Programming
- Java Programming Syllabus Page 1 Syllabus for CS 134 Java Programming Computer Science Course Catalog 2000-2001: This course is an introduction to objectoriented programming using the Java language.
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
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
CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013
Oct 4, 2013, p 1 Name: CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013 1. (max 18) 4. (max 16) 2. (max 12) 5. (max 12) 3. (max 24) 6. (max 18) Total: (max 100)
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
Extending Desktop Applications to the Web
Extending Desktop Applications to the Web Arno Puder San Francisco State University Computer Science Department 1600 Holloway Avenue San Francisco, CA 94132 [email protected] Abstract. Web applications have
C++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
White Paper. Java versus Ruby Frameworks in Practice STATE OF THE ART SOFTWARE DEVELOPMENT 1
White Paper Java versus Ruby Frameworks in Practice STATE OF THE ART SOFTWARE DEVELOPMENT 1 INTRODUCTION...3 FRAMEWORKS AND LANGUAGES...3 SECURITY AND UPGRADES...4 Major Upgrades...4 Minor Upgrades...5
SQL Server An Overview
SQL Server An Overview SQL Server Microsoft SQL Server is designed to work effectively in a number of environments: As a two-tier or multi-tier client/server database system As a desktop database system
1 The Java Virtual Machine
1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This
On the Relation between Design Contracts and Errors: A Software Development Strategy
On the Relation between Design Contracts and Errors: A Software Development Strategy Eivind J. Nordby, Martin Blom, Anna Brunstrom Computer Science, Karlstad University SE-651 88 Karlstad, Sweden {Eivind.Nordby,
Programming Database lectures for mathema
Programming Database lectures for mathematics students April 25, 2015 Functions Functions are defined in Postgres with CREATE FUNCTION name(parameter type,...) RETURNS result-type AS $$ function-body $$
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,
TECHNOLOGY WHITE PAPER. Application Performance Management. Introduction to Adaptive Instrumentation with VERITAS Indepth for J2EE
TECHNOLOGY WHITE PAPER Application Performance Management Introduction to Adaptive Instrumentation with VERITAS Indepth for J2EE TABLE OF CONTENTS ABOUT ADAPTIVE INSTRUMENTATION 3 WHY ADAPTIVE INSTRUMENTATION?
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
Capabilities of a Java Test Execution Framework by Erick Griffin
Capabilities of a Java Test Execution Framework by Erick Griffin Here we discuss key properties and capabilities of a Java Test Execution Framework for writing and executing discrete Java tests for testing
Efficient database auditing
Topicus Fincare Efficient database auditing And entity reversion Dennis Windhouwer Supervised by: Pim van den Broek, Jasper Laagland and Johan te Winkel 9 April 2014 SUMMARY Topicus wants their current
CS346: Database Programming. http://warwick.ac.uk/cs346
CS346: Database Programming http://warwick.ac.uk/cs346 1 Database programming Issue: inclusionofdatabasestatementsinaprogram combination host language (general-purpose programming language, e.g. Java)
CS 2112 Spring 2014. 0 Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions
CS 2112 Spring 2014 Assignment 3 Data Structures and Web Filtering Due: March 4, 2014 11:59 PM Implementing spam blacklists and web filters requires matching candidate domain names and URLs very rapidly
What is a life cycle model?
What is a life cycle model? Framework under which a software product is going to be developed. Defines the phases that the product under development will go through. Identifies activities involved in each
Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.
Handout 1 CS603 Object-Oriented Programming Fall 15 Page 1 of 11 Handout 1 Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Java
Designing with Exceptions. CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219
Designing with Exceptions CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219 Testing vs. Debugging Testing Coding Does the code work properly YES NO 2 Debugging Testing
Introduction to Java Applications. 2005 Pearson Education, Inc. All rights reserved.
1 2 Introduction to Java Applications 2.2 First Program in Java: Printing a Line of Text 2 Application Executes when you use the java command to launch the Java Virtual Machine (JVM) Sample program Displays
A Meeting Room Scheduling Problem
A Scheduling Problem Objective Engineering, Inc. 699 Windsong Trail Austin, Texas 78746 512-328-9658 FAX: 512-328-9661 [email protected] http://www.oeng.com Objective Engineering, Inc., 1999-2007. Photocopying,
Using EDA Databases: Milkyway & OpenAccess
Using EDA Databases: Milkyway & OpenAccess Enabling and Using Scripting Languages with Milkyway and OpenAccess Don Amundson Khosro Khakzadi 2006 LSI Logic Corporation 1 Outline History Choice Of Scripting
Eclipse Visualization and Performance Monitoring
Eclipse Visualization and Performance Monitoring Chris Laffra IBM Ottawa Labs http://eclipsefaq.org/chris Chris Laffra Eclipse Visualization and Performance Monitoring Page 1 Roadmap Introduction Introspection
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
Mobile App Design Project #1 Java Boot Camp: Design Model for Chutes and Ladders Board Game
Mobile App Design Project #1 Java Boot Camp: Design Model for Chutes and Ladders Board Game Directions: In mobile Applications the Control Model View model works to divide the work within an application.
Programming by Contract. Programming by Contract: Motivation. Programming by Contract: Preconditions and Postconditions
COMP209 Object Oriented Programming Designing Classes 2 Mark Hall Programming by Contract (adapted from slides by Mark Utting) Preconditions Postconditions Class invariants Programming by Contract An agreement
Programming Languages
Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:
Progress Report Aspect Oriented Programming meets Design Patterns. Academic Programme MSc in Advanced Computer Science. Guillermo Antonio Toro Bayona
Progress Report Aspect Oriented Programming meets Design Patterns Academic Programme MSc in Advanced Computer Science Guillermo Antonio Toro Bayona Supervisor Dr. John Sargeant The University of Manchester
JAAS Java Authentication and Authorization Services
JAAS Java Authentication and Authorization Services Bruce A Rich Java Security Lead IBM/Tivoli Systems Java is a trademark and Java 2 is a registered trademark of Sun Microsystems Inc. Trademarks Java,
Integration of Application Business Logic and Business Rules with DSL and AOP
Integration of Application Business Logic and Business Rules with DSL and AOP Bogumiła Hnatkowska and Krzysztof Kasprzyk Wroclaw University of Technology, Wyb. Wyspianskiego 27 50-370 Wroclaw, Poland [email protected]
RE-TRUST Design Alternatives on JVM
RE-TRUST Design Alternatives on JVM ( - Italy) [email protected] http://softeng.polito.it/falcarin Trento, December, 19 th 2006 Tamper-Detection Tamper-detection goals Detect malicious modifications
Enforcing Data Quality Rules for a Synchronized VM Log Audit Environment Using Transformation Mapping Techniques
Enforcing Data Quality Rules for a Synchronized VM Log Audit Environment Using Transformation Mapping Techniques Sean Thorpe 1, Indrajit Ray 2, and Tyrone Grandison 3 1 Faculty of Engineering and Computing,
WHAT ARE PACKAGES? A package is a collection of related classes. This is similar to the notion that a class is a collection of related methods.
Java Packages KNOWLEDGE GOALS Understand what a package does. Organizes large collections of Java classes Provides access control for variables and methods using the modifier 'protected' Helps manage large
02 B The Java Virtual Machine
02 B The Java Virtual Machine CS1102S: Data Structures and Algorithms Martin Henz January 22, 2010 Generated on Friday 22 nd January, 2010, 09:46 CS1102S: Data Structures and Algorithms 02 B The Java Virtual
Integrated Error-Detection Techniques: Find More Bugs in Java Applications
Integrated Error-Detection Techniques: Find More Bugs in Java Applications Software verification techniques such as pattern-based static code analysis, runtime error detection, unit testing, and flow analysis
Realizing Enterprise Integration Patterns in WebSphere
Universität Stuttgart Fakultät Informatik, Elektrotechnik und Informationstechnik Realizing Enterprise Integration Patterns in WebSphere Thorsten Scheibler, Frank Leymann Report 2005/09 October 20, 2005
No no-argument constructor. No default constructor found
Every software developer deals with bugs. The really tough bugs aren t detected by the compiler. Nasty bugs manifest themselves only when executed at runtime. Here is a list of the top ten difficult and
Inheritance, overloading and overriding
Inheritance, overloading and overriding Recall with inheritance the behavior and data associated with the child classes are always an extension of the behavior and data associated with the parent class
Automation of Library (Codes) Development for Content Management System (CMS)
Automation of Library (Codes) Development for Content Management System (CMS) Mustapha Mutairu Omotosho Department of Computer Science, University Of Ilorin, Ilorin Nigeria Balogun Abdullateef Oluwagbemiga
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
MuJava : An Automated Class Mutation System
MuJava : An Automated Class Mutation System Yu-Seung Ma 1, Jeff Offutt 2, and Yong Rae Kwon 1 1 Division of Computer Science Department of Electrical Engineering and Computer Science Korea Advanced Institute
