A Thread Monitoring System for Multithreaded Java Programs
|
|
|
- Garry Oliver
- 10 years ago
- Views:
Transcription
1 A Thread Monitoring System for Multithreaded Java Programs Sewon Moon and Byeong-Mo Chang Department of Computer Science Sookmyung Women s University, Seoul , Korea [email protected], [email protected] Abstract. To assist developing robust multithreaded software, we develop a thread monitoring system for multithreaded Java programs, which can trace or monitor running threads and synchronization. We design a monitoring system which has options to select interesting threads and synchronized actions. Using this tool, programmers can monitor only interesting threads and synchronization in more details by selecting options, and can detect a deadlock. It also provides profile information after execution, which summarizes behavior of running threads and synchronized actions during execution. We implement the system based on code inlining, and presents some experimental results. Keywords: Java, thread, synchronization, monitoring. 1 Introduction Multithreading in Java has become widely used in modern software development. It has become popular for Java programmers to develop concurrent and reactive software like sever software using multithreading [8]. Multiple instances of one thread can be running concurrently in multithreaded programs, while a single threaded program executes one instance of a method at a time. Because there are multiple running threads in a multithreaded program, it is usually difficult for programmers to understand the behavior of the program. In addition, because multiple running threads can share resources, there can be some race conditions or deadlocks during execution which make programs more difficult to understand. So, it is important for the development of robust multithreaded programs for programmers to observe behavior of multithreaded programs more effectively. However, it is not easy for programmers to trace or monitor behaviors of multiple running threads and synchronization effectively. To assist developing robust multithreaded software, we need a tool to trace or monitor running threads and synchronized actions(methods or blocks) during execution. In this paper, we develop a dynamic thread monitoring system for multithreaded Java programs, which can trace how running threads and synchronized actions are progressing. We design a thread monitoring system, which has options to select interesting threads and synchronized actions. Using this tool, programmers can monitor only interesting threads and synchronized actions in more details by selecting options before execution, and can also detect a deadlock during execution. It also provides profile information after execution, which summarizes behavior of running threads and synchronized actions during execution. We implement the thread monitoring system based on inlined reference monitor [3] to reduce performance overhead. It is implemented in Java using Barat [1], which is a front-end for a Java compiler. We also present some experimental results, which can show the effectiveness of the system. The rest of this paper is organized as follows. The next section gives a motivating example. Section 3 describes overall design of the system, and Section 4 describes the implementation of the system. Section 5 presents some experimental results and Section 6 concludes this paper and discusses further research topics. 2 Example We consider a multithreaded Java program in Figure 1, which is a running example of this paper. This program creates three threads, each of which synchronizes one object and then tries to synchronize an- ACM SIGPLAN Notices 21 Vol. 41 (5), May 2006
2 class Deallock3thread extends Thread{ static Object a = new Object(); // a monitor object static Object b = new Object(); // b monitor object static Object c = new Object(); // c monitor object String name; public Deallock3thread(String name){ this.name = name; public void run() { if(name.equals("d1") ){ synchronized(a) { System.out.println("d1 acquired a"); try { Thread.sleep(1000); catch (InterruptedException e) { synchronized(b) { System.out.println("d1 acquired b"); else if(name.equals("d2") ){ synchronized(b) { System.out.println("d2 acquired b"); try { Thread.sleep(1000); catch (InterruptedException e) { synchronized(c) { System.out.println("d2 acquired c"); else if(name.equals("d3") ){ synchronized(c) { System.out.println("d3 acquired c"); try { Thread.sleep(1000); catch (InterruptedException e) { synchronized(a) { System.out.println("d3 acquired a"); public class Deadlock3main { public static void main(string[] args) { Deallock3thread d1 = new Deallock3thread("d1"); Deallock3thread d2 = new Deallock3thread("d2"); Deallock3thread d3 = new Deallock3thread("d3"); d1.start(); d2.start(); d3.start(); Fig. 1. Example program ACM SIGPLAN Notices 22 Vol. 41 (5), May 2006
3 other object which has been synchronized by another thread. This will make a deadlock situation during execution. 3 Design considerations There are several ways that monitors can mediate all application operations. A traditional reference monitor is implemented by halting execution before certain machine instructions and invoking the reference monitor with the instruction as input. An alternate implementation, not limited by hardware support, runs applications inside an interpreter like JVM that executes the application code and invokes a reference monitor before each instruction. JVMPI(JVM Profiler Interface) follows this approach. However, this approach has unacceptable performance overhead [3], since a cost is incurred on every executed instruction. The third option inlines reference monitors in the target software. This approach is shown to overcome the limitations of traditional reference monitors, yet exhibits reasonable performance [3]. An inlined reference monitor is obtained by modifying an application to include the functionality of a reference monitor. As in Figure 2, IRMs are inserted into applications by a rewriter or transformer that reads a target application and a policy, and produces a secured application, whose execution monitors its execution. The inlining approach is shown to be efficient for monitoring Java programs in [3]. Fig. 2. Inlined monitor [3] We follow the inlining approach to design a dynamic thread monitoring system for efficiency. We take the following things into consideration in the design. The first one is to provide users with options to select interesting threads and synchronized ations. By selecting options before execution, users can focus on interesting threads and synchronized actions by tracing only interesting ones in real-time. This option can also contribute in reducing performance overhead, because it makes the system to trace only interesting ones instead of all threads and synchronized actions. The second one is to provide a profile option to produce profile information after execution, which summarizes running threads and synchronized actions during execution. The third one is to reduce performance overhead. We try to reduce performance overhead by inlining code instead of using JVMPI. An input program P is transformed into a program P by inlinig codes so as to trace only interesting threads according to user options. The transformed program P will trace how threads and synchronized actions are started and processed during execution, and give profile information on threads and synchronization after execution. Overall architecture of the system is shown in Figure 3. This system consists of four steps as in Figure 3. The function of each step is as follows: The first step extracts constructs related to threads and synchronization by static analysis. This static information is used to provide options. The second step is option selection, where users can select interesting threads and synchronized actions using the static analysis information. Users can trace only interesting threads and synchronized actions by selecting options in this step. The third step is a program transformer, which transforms an input program P into a program P by inlining codes so as to trace only interesting threads and synchronized actions according to user options. ACM SIGPLAN Notices 23 Vol. 41 (5), May 2006
4 Fig. 3. System architecture The last step is to compile and execute the transformed program P. It is to be executed on Java 2 SDK or J2ME WTK. 4 Implementation We implement the thread monitoring system in Java based on Barat [1], which is a front-end for a Java compiler. Barat builds an abstract syntax tree for an input Java program and enriches it with type and name analysis information. It also provides interfaces for traversing abstract syntax trees, based on visitor design Fig. 4. Architecture of Barat pattern in [4]. We can traverse AST nodes and do some actions or operations at visiting each node using a visitor, which is a tree traverse routine based on design patterns. Barat provides several visitors as basic visitors: DescendingVisitor which traverses every AST node in depth-first manner and OuputVisitor which outputs input programs by traversing AST nodes. We can develop a static analyzer by implementing visitors by extending basic visitors so as to do necessary actions or operations when visiting AST nodes [1]. As described in Figure 3, our system consists of four steps. We implement the first three steps. The last step is a execution on Java SDK. A main window for selecting options is shown in Figure 5, which shows all files in the package of a sample program. After users select files from the package, the window displays a list of threads, synchronized methods and blocks based on the static analysis information. Then, users can select only interesting ones ACM SIGPLAN Notices 24 Vol. 41 (5), May 2006
5 Fig. 5. Menu window among them. By selecting options, users can trace only interesting information and focus on interesting threads and synchronization. To provide users with options, we implement a static analyzer to extract constructs related to threads and synchronization by extending DescendingVisitor. It extracts static information about possible threads and synchronization by analyzing input programs statically. We implement a program transformer called TransformVisitor by extending OuputVisitor, which transforms an input program P into a program P by inlining codes so as to trace running threads and synchronization according to selected options. It also inlines codes to trace synchronized objects and deadlocks. Figure 6 shows overall structure of the program transformer. A fragment of the transformed EzSearch program is displayed in Figure 7. This figure shows that putmessage method is a synchronized method. The codes in the box are inlined codes by the transformer, which monitor the synchronized method and store its related information during execution. The transformed program is to be executed automatically in Java 2 SDK. This transformed code traces how running threads and synchronization are progressing during execution. In addition, it can give profile information like the numbers of running threads and synchronized actions during execution. 5 Experiments We have implemented the system with SDK on Window XP on Pentium 4 processor. We first tested it with Deadlock3main in the example. When we execute the example deadlock program after transformation, we can trace progress of running threads as in Figure 8. It shows progress of running threads visually, each of which is represented as a running bar. Red color in the bar represents waiting of a thread for synchronization. For example, Figure 8 shows that all the three threads are waiting, and that one thread has synchronized an object and another is waiting for it. Figure 9 shows that a deadlock is found during execution. ACM SIGPLAN Notices 25 Vol. 41 (5), May 2006
6 Class TransformVisitor extends OutputVisitor{ public void visitconcretemethod(concrtemethod o) { // monitoring code for starting thread. public void visitconstructor(constructor o) { // monitoring code for thread name and creation. public void visitobjectallocation(objectallocation o) { // monitoring code for creation of thread object. public void visitinstancemethodcall(instancemethodcall o) { // monitoring code for synchronized method call public void visitblock(block o) { // monitoring code for inside of synchronized block public void visitsynchronized(synchronized o) { // monitoring code for access to synchronized block Fig. 6. Structure of TransformVisitor Fig. 7. Transformed program ACM SIGPLAN Notices 26 Vol. 41 (5), May 2006
7 Fig. 8. Trace of the example program Fig. 9. Finding a deadlock ACM SIGPLAN Notices 27 Vol. 41 (5), May 2006
8 When the program terminates, it profiles the numbers of running threads, synchronized method calls, and accesses to synchronized blocks. We have experimented the system with five Java benchmark programs. The first one is EzSearch, which searches files matching input patterns. The second one is Alaram, which shows time differently depending on modes. The third one is Atapplet, which withdraws from a bank account. The fourth one is the simple Read-Write program. The last one is Deadlock3main program, in which there is a deadlock during execution. Table 1 shows the number of threads, the number of running threads, the number of synchronized methods, the number of synchronized method calls, the number of synchronized blocks, and the number of accesses to synchronized blocks. Programs Threads Running Sync. Methods Sync. Method Sync. Blocks Sync. Block threads Calls Accesses EzSearch Alarm Atapplet Read-Write Deadlock3main Table 1. Experiment 1 with benchmark programs Table 2 first shows the numbers of lines of benchmark programs before and after inlining, when all options are selected. It then shows the execution times of the programs before and after inlining. If only some options are selected, then the number of lines after inlining and the execution time are to be reduced. In Deadlock3main program, the monitoring systems detects deadlock during execution. Programs Lines(before) Lines(after) Execution time(before) Execution time(after) EzSearch Alarm ATapplet Read-Write Deadlock3main Deadlock Deadlock Table 2. Experiment 2 with benchmark programs 6 Related works Dynamic program analysis techniques have been studied to provide information about actual execution [2, 6, 7, 9, 11]. Several dynamic analysis tools are developed for Java including J2ME Wireless Toolkit [7] and AdaptJ [6]. Recent J2ME Wireless Toolkit can trace method calls, exceptions and class loading as well as memory usage using JVMPI. However, it provides just the names of exceptions whenever exceptions are thrown. Moreover, JVMPI imposes heavy burden on performance overhead, which makes execution speed too slow. It is hard to trace interesting parts of programs effectively, because all codes including libraries are included in the trace. AdaptJ is a dynamic analysis tool, which gets dynamic information using JVMPI during execution and stores it as a file. It provides the dynamic information after execution. Users can select useful information from it by choosing some options. ACM SIGPLAN Notices 28 Vol. 41 (5), May 2006
9 JFluid is a dynamic analysis tool recently developed at Sun Microsystems [9]. It is integrated in Net- Beans IDE and shows performance data of running Java programs such as CPU, memory and threads. It instruments bytecode for monitoring right before execution. Concurrent Haskell Debugger in [11] is a debugging tool for concurrent Haskell, which can show concurrency problem like deadlock visually. In our previous work [13], a dynamic exception monitoring system was developed so as to trace handling and propagation of thrown exceptions in real-time. With this tool, programmers can examine exception handling process in more details and handle exceptions more effectively. Our thread monitoring system can show visually how running threads and synchronized actions are progressing. In particular, users can focus only on interesting threads and synchronized actions by selecting options, which can be provided with static analysis information. 7 Conclusion We have developed a dynamic monitoring system for multithreaded Java programs, which can help programmers monitor behavior of multithreaded programs effectively. Using this system, programmers can examine progress of running thread and synchronization in more details by tracing only interesting ones. We have designed the system based on user options and inlined reference monitor. We are extending this system in two directions. The first one is to improve the execution times of the inlined programs. The second one is to visualize thread trace and profile information so as to give more insights to programmers. Acknowledgements This Research was supported by the Sookmyung Women s University Research Grants References 1. B. Bokowski, Andre Spiegel. Barat A Front-End for Java. Technical Report B December B. Dufour, K. Driesen, L. Hendren and C. Verbrugge. Dynamic Metrics for Java. Proceedings of ACM OOPSLA 03, October, 2003, Anaheim, CA. 3. U. Erlingsson, The inlined reference monitor approach to secure policy enforcement, Ph.D thesis, Cornell University, January E. Gamma, R. Helm, R. Johnson and J. Vlissides, Design Patterns:Elements of Reusable Object-Oriented Software, Addison-Wesley, J. Gosling, B. Joy, and G. Steele, The Java Programming Language Specification, Addison-Wesley, AdaptJ:A Dynamic Application Profiling Toolkit for Java, bdufou1/adaptj 7. Sun Microsystems, J2ME Wireless Toolkit, 8. Doug Lea, Concurrent Programming in Java(TM): Design Principles and Pattern, 2nd Edition, Addison-Wesley. 9. Sun Microsystems, Design of JFluid: A Profiling Technology and Tool Based on Dynamic Bytecode Instrumentation, Jan Christiansen, Frank Huch: Searching for deadlocks while debugging concurrent haskell programs. ICFP 2004: Deepa Viswanathan, Sheng Liang: Java Virtual Machine Profiler Interface. IBM Systems Journal 39(1): 82- (2000) 13. Heejung Ohe and Byeong-Mo Chang, An Exception Monitoring System for Java, Proceedings of Rapid Integration of Software Engineering, Nov. 2004, Luxembourg. Also available as LNCS ACM SIGPLAN Notices 29 Vol. 41 (5), May 2006
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
I. INTRODUCTION. International Journal of Computer Science Trends and Technology (IJCST) Volume 3 Issue 2, Mar-Apr 2015
RESEARCH ARTICLE An Exception Monitoring Using Java Jyoti Kumari, Sanjula Singh, Ankur Saxena Amity University Sector 125 Noida Uttar Pradesh India OPEN ACCESS ABSTRACT Many programmers do not check for
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/
2 Introduction to Java. Introduction to Programming 1 1
2 Introduction to Java Introduction to Programming 1 1 Objectives At the end of the lesson, the student should be able to: Describe the features of Java technology such as the Java virtual machine, garbage
Portable Profiling of Memory Allocation in Java
Portable Profiling of Memory Allocation in Java Walter Binder Ecole Polytechnique Fédérale de Lausanne (EPFL) Artificial Intelligence Laboratory CH-1015 Lausanne, Switzerland [email protected] Abstract.
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
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming Java has become enormously popular. Java s rapid rise and wide acceptance can be traced to its design
Java Coding Practices for Improved Application Performance
1 Java Coding Practices for Improved Application Performance Lloyd Hagemo Senior Director Application Infrastructure Management Group Candle Corporation In the beginning, Java became the language of the
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
Gadget: A Tool for Extracting the Dynamic Structure of Java Programs
Gadget: A Tool for Extracting the Dynamic Structure of Java Programs Juan Gargiulo and Spiros Mancoridis Department of Mathematics & Computer Science Drexel University Philadelphia, PA, USA e-mail: gjgargiu,smancori
Why Threads Are A Bad Idea (for most purposes)
Why Threads Are A Bad Idea (for most purposes) John Ousterhout Sun Microsystems Laboratories [email protected] http://www.sunlabs.com/~ouster Introduction Threads: Grew up in OS world (processes).
Mobile Application Languages XML, Java, J2ME and JavaCard Lesson 04 Java
Mobile Application Languages XML, Java, J2ME and JavaCard Lesson 04 Java Oxford University Press 2007. All rights reserved. 1 C and C++ C and C++ with in-line-assembly, Visual Basic, and Visual C++ the
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
SYSTEM OF MONITORING AND CONTROL FOR THE AUTOMATION OF INDUSTRIAL WASH MACHINES
SYSTEM OF MONITORING AND CONTROL FOR THE AUTOMATION OF INDUSTRIAL WASH MACHINES Catalin BUJDEI Liviu PERNIU Ion TRUICAN Mihai CARAMAN Automatics Department, Transilvania University of Brasov, M.Viteazu
NetBeans Profiler is an
NetBeans Profiler Exploring the NetBeans Profiler From Installation to a Practical Profiling Example* Gregg Sporar* NetBeans Profiler is an optional feature of the NetBeans IDE. It is a powerful tool that
An Easier Way for Cross-Platform Data Acquisition Application Development
An Easier Way for Cross-Platform Data Acquisition Application Development For industrial automation and measurement system developers, software technology continues making rapid progress. Software engineers
Trace-Based and Sample-Based Profiling in Rational Application Developer
Trace-Based and Sample-Based Profiling in Rational Application Developer This document is aimed at highlighting the importance of profiling in software development and talks about the profiling tools offered
Performance Tools for Parallel Java Environments
Performance Tools for Parallel Java Environments Sameer Shende and Allen D. Malony Department of Computer and Information Science, University of Oregon {sameer,malony}@cs.uoregon.edu http://www.cs.uoregon.edu/research/paracomp/tau
Write Barrier Removal by Static Analysis
Write Barrier Removal by Static Analysis Karen Zee and Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Cambridge, MA 02139 {kkz, [email protected] ABSTRACT We present
Replication on Virtual Machines
Replication on Virtual Machines Siggi Cherem CS 717 November 23rd, 2004 Outline 1 Introduction The Java Virtual Machine 2 Napper, Alvisi, Vin - DSN 2003 Introduction JVM as state machine Addressing non-determinism
JRastro: A Trace Agent for Debugging Multithreaded and Distributed Java Programs
JRastro: A Trace Agent for Debugging Multithreaded and Distributed Java Programs Gabriela Jacques da Silva 1, Lucas Mello Schnorr 1, Benhur de Oliveira Stein 1 1 Laboratório de Sistemas de Computação Universidade
Technical paper review. Program visualization and explanation for novice C programmers by Matthew Heinsen Egan and Chris McDonald.
Technical paper review Program visualization and explanation for novice C programmers by Matthew Heinsen Egan and Chris McDonald Garvit Pahal Indian Institute of Technology, Kanpur October 28, 2014 Garvit
Course Development of Programming for General-Purpose Multicore Processors
Course Development of Programming for General-Purpose Multicore Processors Wei Zhang Department of Electrical and Computer Engineering Virginia Commonwealth University Richmond, VA 23284 [email protected]
Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives
Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,
Contents. Java - An Introduction. Java Milestones. Java and its Evolution
Contents Java and its Evolution Rajkumar Buyya Grid Computing and Distributed Systems Lab Dept. of Computer Science and Software Engineering The University of Melbourne http:// www.buyya.com Java Introduction
CS11 Java. Fall 2014-2015 Lecture 7
CS11 Java Fall 2014-2015 Lecture 7 Today s Topics! All about Java Threads! Some Lab 7 tips Java Threading Recap! A program can use multiple threads to do several things at once " A thread can have local
CSE 452: Programming Languages. Acknowledgements. Contents. Java and its Evolution
CSE 452: Programming Languages Java and its Evolution Acknowledgements Rajkumar Buyya 2 Contents Java Introduction Java Features How Java Differs from other OO languages Java and the World Wide Web Java
Java applets. SwIG Jing He
Java applets SwIG Jing He Outline What is Java? Java Applications Java Applets Java Applets Securities Summary What is Java? Java was conceived by James Gosling at Sun Microsystems Inc. in 1991 Java is
INTRODUCTION TO JAVA PROGRAMMING LANGUAGE
INTRODUCTION TO JAVA PROGRAMMING LANGUAGE Today Java programming language is one of the most popular programming language which is used in critical applications like stock market trading system on BSE,
Departamento de Investigación. LaST: Language Study Tool. Nº 143 Edgard Lindner y Enrique Molinari Coordinación: Graciela Matich
Departamento de Investigación LaST: Language Study Tool Nº 143 Edgard Lindner y Enrique Molinari Coordinación: Graciela Matich Noviembre 2005 Para citar este documento: Lindner, Edgard; Enrique Molinari,
Performance Monitoring and Visualization of Large-Sized and Multi- Threaded Applications with the Pajé Framework
Performance Monitoring and Visualization of Large-Sized and Multi- Threaded Applications with the Pajé Framework Mehdi Kessis France Télécom R&D {Mehdi.kessis}@rd.francetelecom.com Jean-Marc Vincent Laboratoire
An Instrumentation Tool for Threaded Java Application Servers
XIII JORNADAS DE PARALELISMO LLEIDA, SEPTIEMBRE 2002 1 An Instrumentation Tool for Threaded Java Application Servers David Carrera, Jordi Guitart, Jordi Torres, Eduard Ayguadé and Jesús Labarta Abstract
Thesis Proposal: Improving the Performance of Synchronization in Concurrent Haskell
Thesis Proposal: Improving the Performance of Synchronization in Concurrent Haskell Ryan Yates 5-5-2014 1/21 Introduction Outline Thesis Why Haskell? Preliminary work Hybrid TM for GHC Obstacles to Performance
JPMT: A Java Performance Monitoring Tool
JPMT: A Java Performance Monitoring Tool Marcel Harkema 1, Dick Quartel 1, Rob van der Mei 2,3, and Bart Gijsen 2 1 University of Twente, Department of Computer Science, Enschede, The Netherlands {harkema,quartel}@utwente.nl
End-user Tools for Application Performance Analysis Using Hardware Counters
1 End-user Tools for Application Performance Analysis Using Hardware Counters K. London, J. Dongarra, S. Moore, P. Mucci, K. Seymour, T. Spencer Abstract One purpose of the end-user tools described in
Online Recruitment System 1. INTRODUCTION
1. INTRODUCTION This project Online Recruitment System is an online website in which jobseekers can register themselves online and apply for job and attend the exam. Online Recruitment System provides
Installing Java. Table of contents
Table of contents 1 Jargon...3 2 Introduction...4 3 How to install the JDK...4 3.1 Microsoft Windows 95... 4 3.1.1 Installing the JDK... 4 3.1.2 Setting the Path Variable...5 3.2 Microsoft Windows 98...
Excerpts from Chapter 4, Architectural Modeling -- UML for Mere Mortals by Eric J. Naiburg and Robert A. Maksimchuk
Excerpts from Chapter 4, Architectural Modeling -- UML for Mere Mortals by Eric J. Naiburg and Robert A. Maksimchuk Physical Architecture As stated earlier, architecture can be defined at both a logical
Programming Languages
Programming Languages In the beginning To use a computer, you needed to know how to program it. Today People no longer need to know how to program in order to use the computer. To see how this was accomplished,
Implementing Java Distributed Objects with JDBC
Implementing Java Distributed Objects with JDBC Pritisha 1, Aashima Arya 2 1,2 Department of Computer Science Bhagwan Mahaveer institute of engineering & technology (BMIET), Deenbandhu Chhotu Ram University
Towards Software Configuration Management for Test-Driven Development
Towards Software Configuration Management for Test-Driven Development Tammo Freese OFFIS, Escherweg 2, 26121 Oldenburg, Germany [email protected] Abstract. Test-Driven Development is a technique where
Software Engineering Best Practices. Christian Hartshorne Field Engineer Daniel Thomas Internal Sales Engineer
Software Engineering Best Practices Christian Hartshorne Field Engineer Daniel Thomas Internal Sales Engineer 2 3 4 Examples of Software Engineering Debt (just some of the most common LabVIEW development
TEACHING COMPUTER PROGRAMMING WITH PROGRAM ANIMATION
TEACHING COMPUTER PROGRAMMING WITH PROGRAM ANIMATION Theodore S. Norvell and Michael P. Bruce-Lockhart Electrical and Computer Engineering Faculty of Engineering and Applied Science Memorial University
XFlash A Web Application Design Framework with Model-Driven Methodology
International Journal of u- and e- Service, Science and Technology 47 XFlash A Web Application Design Framework with Model-Driven Methodology Ronnie Cheung Hong Kong Polytechnic University, Hong Kong SAR,
Java in Education. Choosing appropriate tool for creating multimedia is the first step in multimedia design
Java in Education Introduction Choosing appropriate tool for creating multimedia is the first step in multimedia design and production. Various tools that are used by educators, designers and programmers
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é
CSC 551: Web Programming. Spring 2004
CSC 551: Web Programming Spring 2004 Java Overview Design goals & features platform independence, portable, secure, simple, object-oriented, Programming models applications vs. applets vs. servlets intro
Encapsulating Crosscutting Concerns in System Software
Encapsulating Crosscutting Concerns in System Software Christa Schwanninger, Egon Wuchner, Michael Kircher Siemens AG Otto-Hahn-Ring 6 81739 Munich Germany {christa.schwanninger,egon.wuchner,michael.kircher}@siemens.com
An evaluation of the Java Card environment
An evaluation of the Java Card environment Christophe Rippert, Daniel Hagimont Contact: Christophe Rippert, Sirac Laboratory INRIA Rhône-Alpes, 655 avenue de l Europe Montbonnot 38334 St Ismier Cedex,
Java Virtual Machine: the key for accurated memory prefetching
Java Virtual Machine: the key for accurated memory prefetching Yolanda Becerra Jordi Garcia Toni Cortes Nacho Navarro Computer Architecture Department Universitat Politècnica de Catalunya Barcelona, Spain
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
Chapter 1. Introduction to Computers, Programs, and Java
Chapter 1 Introduction to Computers, Programs, and Java 1.1 Introduction Java is the Internet program language Why Java? The answer is that Java enables user to deploy applications on the Internet for
Computer Science 4302 Operating Systems. Student Learning Outcomes
Computer Science 4302 Operating Systems Student Learning Outcomes 1. The student will learn what operating systems are, what they do, and how they are designed and constructed. The student will be introduced
Debugging with TotalView
Tim Cramer 17.03.2015 IT Center der RWTH Aachen University Why to use a Debugger? If your program goes haywire, you may... ( wand (... buy a magic... read the source code again and again and...... enrich
CS 209 Programming in Java #1
CS 209 Programming in Java #1 Introduction Spring, 2006 Instructor: J.G. Neal 1 Topics CS 209 Target Audience CS 209 Course Goals CS 209 Syllabus - See handout Java Features, History, Environment Java
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
Tutorial: Getting Started
9 Tutorial: Getting Started INFRASTRUCTURE A MAKEFILE PLAIN HELLO WORLD APERIODIC HELLO WORLD PERIODIC HELLO WORLD WATCH THOSE REAL-TIME PRIORITIES THEY ARE SERIOUS SUMMARY Getting started with a new platform
Performance Measurement of Dynamically Compiled Java Executions
Performance Measurement of Dynamically Compiled Java Executions Tia Newhall and Barton P. Miller University of Wisconsin Madison Madison, WI 53706-1685 USA +1 (608) 262-1204 {newhall,bart}@cs.wisc.edu
ARM-BASED PERFORMANCE MONITORING FOR THE ECLIPSE PLATFORM
ARM-BASED PERFORMANCE MONITORING FOR THE ECLIPSE PLATFORM Ashish Patel, Lead Eclipse Committer for ARM, IBM Corporation Oliver E. Cole, President, OC Systems, Inc. The Eclipse Test and Performance Tools
PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions. Outline. Performance oriented design
PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions Slide 1 Outline Principles for performance oriented design Performance testing Performance tuning General
Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification
Introduction Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification Advanced Topics in Software Engineering 1 Concurrent Programs Characterized by
For Introduction to Java Programming, 5E By Y. Daniel Liang
Supplement H: NetBeans Tutorial For Introduction to Java Programming, 5E By Y. Daniel Liang This supplement covers the following topics: Getting Started with NetBeans Creating a Project Creating, Mounting,
Performance Improvement In Java Application
Performance Improvement In Java Application Megha Fulfagar Accenture Delivery Center for Technology in India Accenture, its logo, and High Performance Delivered are trademarks of Accenture. Agenda Performance
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
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
1. Overview of the Java Language
1. Overview of the Java Language What Is the Java Technology? Java technology is: A programming language A development environment An application environment A deployment environment It is similar in syntax
STM32JAVA. Embedded Java Solutions for STM32
STM32JAVA Embedded Java Solutions for STM32 What is STM32Java? Solution to develop and to deploy software applications on STM32F0 to STM32F7 microcontrollers using Java Help to reduce the total cost of
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
CHAPTER 10: WEB SERVICES
Chapter 10: Web Services CHAPTER 10: WEB SERVICES Objectives Introduction The objectives are: Provide an overview on how Microsoft Dynamics NAV supports Web services. Discuss historical integration options,
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
Efficient Monitoring and Display of Thread State in Java
Efficient Monitoring and Display of Thread State in Java Steven P. Reiss Department of Computer Science Brown University Providence, RI 02912-1910 401-863-7641, FAX: 401-863-7657 [email protected] Abstract
Multi-core Programming System Overview
Multi-core Programming System Overview Based on slides from Intel Software College and Multi-Core Programming increasing performance through software multi-threading by Shameem Akhter and Jason Roberts,
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
HeapStats: Your Dependable Helper for Java Applications, from Development to Operation
: Technologies for Promoting Use of Open Source Software that Contribute to Reducing TCO of IT Platform HeapStats: Your Dependable Helper for Java Applications, from Development to Operation Shinji Takao,
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
C# and Other Languages
C# and Other Languages Rob Miles Department of Computer Science Why do we have lots of Programming Languages? Different developer audiences Different application areas/target platforms Graphics, AI, List
Validating Java for Safety-Critical Applications
Validating Java for Safety-Critical Applications Jean-Marie Dautelle * Raytheon Company, Marlborough, MA, 01752 With the real-time extensions, Java can now be used for safety critical systems. It is therefore
Chapter 6, The Operating System Machine Level
Chapter 6, The Operating System Machine Level 6.1 Virtual Memory 6.2 Virtual I/O Instructions 6.3 Virtual Instructions For Parallel Processing 6.4 Example Operating Systems 6.5 Summary Virtual Memory General
Holly Cummins IBM Hursley Labs. Java performance not so scary after all
Holly Cummins IBM Hursley Labs Java performance not so scary after all So... You have a performance problem. What next? Goals After this talk you will: Not feel abject terror when confronted with a performance
ODROID Multithreading in Android
Multithreading in Android 1 Index Android Overview Android Stack Android Development Tools Main Building Blocks(Activity Life Cycle) Threading in Android Multithreading via AsyncTask Class Multithreading
Tuning WebSphere Application Server ND 7.0. Royal Cyber Inc.
Tuning WebSphere Application Server ND 7.0 Royal Cyber Inc. JVM related problems Application server stops responding Server crash Hung process Out of memory condition Performance degradation Check if the
Monitoring Java enviroment / applications
Monitoring Java enviroment / applications Uroš Majcen [email protected] Java is Everywhere You Can Expect More. Java in Mars Rover With the help of Java Technology, and the Jet Propulsion Laboratory (JPL),
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 Modular Approach to Teaching Mobile APPS Development
2014 Hawaii University International Conferences Science, Technology, Engineering, Math & Education June 16, 17, & 18 2014 Ala Moana Hotel, Honolulu, Hawaii A Modular Approach to Teaching Mobile APPS Development
Exploiting Dynamic Information in IDEs Eases Software Maintenance
Exploiting Dynamic Information in IDEs Eases Software Maintenance David Röthlisberger Software Composition Group, University of Bern, Switzerland [email protected] Abstract The integrated development
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
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
Control 2004, University of Bath, UK, September 2004
Control, University of Bath, UK, September ID- IMPACT OF DEPENDENCY AND LOAD BALANCING IN MULTITHREADING REAL-TIME CONTROL ALGORITHMS M A Hossain and M O Tokhi Department of Computing, The University of
Reducing Transfer Delay Using Java Class File Splitting and Prefetching
Reducing Transfer Delay Using Java Class File Splitting and Prefetching Chandra Krintz Brad Calder Urs Hölzle Department of Computer Science and Engineering University of California, San Diego ckrintz,calder
Version 14.0. Overview. Business value
PRODUCT SHEET CA Datacom Server CA Datacom Server Version 14.0 CA Datacom Server provides web applications and other distributed applications with open access to CA Datacom /DB Version 14.0 data by providing
JAVA - MULTITHREADING
JAVA - MULTITHREADING http://www.tutorialspoint.com/java/java_multithreading.htm Copyright tutorialspoint.com Java is amulti threaded programming language which means we can develop multi threaded program
