CSCI E 98: Managed Environments for the Execution of Programs

Size: px
Start display at page:

Download "CSCI E 98: Managed Environments for the Execution of Programs"

Transcription

1 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 Hours: On campus on Monday from 4:30-5:30pm and from 7:30-8:30pm by appointment. Online office hours to be arranged. Course Website: (to be updated). Managed Runtime Environments Traditionally, in order to run the computer programs that we write we would first edit the code in a language such as C, then pass it through a compiler to create an executable, and then run that executable directly on the local machine. The compiler would optimize the code based on a potentially sophisticated set of static analyses, tie in any architectureand OS-specific libraries and build a binary that is targeted to a particular platform. Today things have changed. When we program in the vast majority of modern languages (Java, Python, Ruby, Javascript, C#, ActionScript and more), we don t build a platform-specific executable. Instead we either skip the compilation stage entirely or we run a lightweight compilation step, producing a simplified format such as Java Bytecodes. We then pass either the bytecode or the source to a managed runtime environment (or Virtual Machine) that takes care of the actual execution of the program. The environment gives us features that weren t available before, the most obvious of which is garbage collection (or, technically, automatic dynamic memory management). But crucially it lets us focus on the code that we re writing without thinking too much about the minutiae of architecture and OS-specific details. For most application developers, that s where the story ends. Productivity goes up, bugs go down and the system Just Works. This course is aimed at those who want to pull back the curtain and find out what s really going on. Do we no longer need optimizing compilers (hint: we do)? Why do some languages use bytecode? How does the garbage collector figure out what to collect? What happens when we throw concurrency into the mix? And why is the Java VM now orders of magnitude faster than it was fifteen years ago? Just as a great C++ developer needs to understand computer architecture, a great Java developer should understand the advantages and limitations of the virtual machine executing their code to better understand performance bottlenecks, profile traces and some of the more counter-intuitive corners of their chosen language s semantics. 1

2 Students taking this class will build small but significant pieces of a Java virtual machine, learn VM concepts that progress from fundamental principles to the current state of the art, and discuss selected articles, blog posts and library documentation that illustrate how those concepts are being applied by VM developers today. Prerequisites Background. A good understanding of data structure and algorithmic fundamentals. The Java VM uses a stackbased architecture, so students may wish to re-familiarize themselves with stack operations. There will be a review of important concepts in class. Some familiarity with Operating Systems, Compilers or Programming Language design would be useful but not essential. Programming Experience. This course involves a substantial programming project in Java (see Assessment below), and much of the material and examples in the course will use the Java language. It is assumed that students have a good background in developing in Java. Experience in unit testing with JUnit and Mockito would be useful, but not essential since the basics will be covered in class. Computing Environment. It is assumed that students will be able to install, configure and run certain software in their computing environment, including Git, Maven, the Java Development Kit (JDK), and common third-party Java libraries such as JUnit and Mockito. The source code required for assignments will be made available as a Git repository, uses Version 7 of the JDK and will contain a Maven pom.xml file to resolve dependencies. Assignment 0 (see below) will ensure that students have a compatible environment available, and basic guidance on the use of these tools as relevant to the course will be provided in class and during office hours. Lectures There will be thirteen lectures in the course, meeting on Mondays beginning September 8th from 5:30-7:30. Lectures will be streamed live and posted online shortly after class. Students are expected to attend or view all lectures within the period between class meetings. See the Extension School Calendar for important dates and holidays. Readings There is no required text for this course, however readings of relevant online material will be assigned and discussed on forums and in class. Assessment Assessment for the course will consist of five programming assignments and a final exam. There will also be readings relevant to current topics assigned between classes, with credit given for participation in ensuing discussion either online or in class (or both). The final exam will cover all material presented in class, the assigned readings, and experience gained by working through the assignments. 2

3 Assignment Due Date Points Assignment 0: Environment Setup. Week Assignment 1: Java Bytecode Interpretation. Week Assignment 2: Just In Time Compilation. Week Assignment 3: Garbage Collection. Week Assignment 4: Exceptions and Error Handling Week Final Project: Advanced Garbage Collection Week Final Exam Week Participation Week Total Points Available 2000 Each student may use up to four late days over the course of the semester. Each late day extends the deadline for an assignment by 24 hours, and multiple late days may be used on a single assignment. The SimpleJava Virtual Machine The coding projects for this course will use the SimpleJava Virtual Machine. SimpleJava is a subset of the Java language designed to emphasize basic concepts in Virtual Machine design. It favors simplicity over completeness, and so is missing certain features of the full Java language such as long data types, custom class loaders, the Java Native Interface and others. The SimpleJava VM is an implementation of the SimpleJava runtime environment, itself implemented in Java. As with the language itself, the VM emphasizes simplicity of implementation over performance. Its component implementations are chosen for their approachability by students rather than to reflect the current state of the art in JVM implementation. A complete description of the SimpleJava language and VM, including architecture descriptions and API documentation, will appear on the course website and will be discussed in class. The course assignments build upon one another; students will have the option of continuing to use their own implementations or starting each assignment with a full implementation of the previous projects. Grading All of the development projects will require the student to fill in skeleton implementations of the required functionality, adhering to interface specifications in the code. Sample code will be provided that students can run on their completed virtual machine implementation to verify that the output matches that produced by the standard java command in the Oracle JDK. Initial grading of the projects will be performed both using these and other similar code samples, and with a comprehensive suite of unit tests that verify the expected behavior. Testing will focus on the end-to-end behavior of the system, and on the state of the virtual machine s internal data structures before and after the student code runs. The intention is to ensure that the implementation meets the specification, not to enforce aspects of programming style. In cases where the test suite does not pass completely, partial credit will be awarded based on the percentage of the suite that does pass, and on inspection of the code. Note that while JUnit tests are not required as part of the submission, it is strongly recommended that you unit test your code both to help in your own development and to make your progress and approach clear when evaluating code for extra credit. 3

4 Assignment 0: Environment Setup The initial project is aimed simply at ensuring that all students are in a position to build and run the SimpleJava virtual machine, and can submit assignments using the Canvas course website. A Git repository will be posted on the course website containing the code and building instructions, and the submission will be the output of a basic program executed by the SimpleJava VM. It is not anticipated that Assignment 0 should present major difficulties for somebody who is familiar with building and running Java code, but we do recommend working on the assignment early in the assignment period so that any issues that do arise can be fixed with the minimum of stress. Assignment 1: Interpretation Assignment 1 will focus on executing a number of Java bytecode instructions in the SimpleJava interpreter, following the pattern demonstrated in the rest of the interpreter. The instructions will include some stack-based arithmetic operations, some field accesses and method invocations. The semantics of the operations to be implemented, and the design of the interpreter will be discussed in class. Assignment 2: Just In Time Compilation Assignment 2 will cover the profiling decisions made by a JIT compiler in determining what code is worth the overhead of optimization. Note that we will not perform the optimizations themselves (students interested in the details of an optimizing compiler should consider taking CSCI E-95 in the Spring). This project will focus instead on the profiling data and algorithms used to select code for optimization to best takes advantage of a VM s runtime information. Assignment 3: Basic Garbage Collection Assignment 3 is the first of two garbage collection assignments. Students will implement a semi-space copying garbage collector algorithm. The SimpleJava VM s memory management interface is designed to allow students to focus on the algorithm itself in relative isolation from the rest of the VM s components. The design of the algorithm and its dependencies on the VM as a whole will be discussed in class. Assignment 4: Exception Handling Assignment 4 will focus on the implementation of Java s exception semantics. Students will implement the ATHROW instruction (the bytecode equivalent of Java s throw new Exception() idiom), including unwinding the program stack, building the stack trace and checking for declared handlers. The details of exception handling in Java and its impact on virtual machine design will be covered in class. Final Project: Generational Garbage Collection In the final project students will work alone or in pairs to implement a generational garbage collector, based on Appel s Simple Generational Collection algorithm. The heap will be split into two generations (the new space in which objects are allocated, and the old to which objects that have survived one collection will move). Each generation will be managed similarly to the semi-space heap implemented in Assignment 3. Generational collectors in general and the 4

5 algorithm to be exhibits in particular will be discussed in class, and sample code that demonstrates the generational hypotheses will be provided. If the final project is implemented in a pair, students are asked to turn in a one-paragraph statement that describes the division of work. In cases where students choose to work alone on the final project, consideration will be given if a partial credit evaluation is required. Participation At various points during the course, short online readings will be assigned. The intent of the readings is to demonstrate the real-world implications of the concepts discussed in class. When a reading is assigned, there will be a discussion topic created on the course discussion board, followed by an in-class discussion during the lecture following the assignment. Participation credit will be awarded for contributions to the discussion in either case. Student Responsibilities Students are expected to abide by the policies laid out in the Harvard Extension School Student Responsibilities. All development work is expected to be performed individually by students, with the exception of the final project which may be completed in pairs. Topics This section gives a provisional summary of topics to be covered in class. Note that topics will not map one-to-one with lectures. Introduction and Overview Course overview and syllabus. Overview of relevant background, including operating system, computer architecture and data structure topics. VM rationale and history. High-level VM component design. SimpleJava introduction. Language and Bytecode Design Bytecode vs. source code. Designing a language to target a virtual machine. Designing a bytecode instruction set to maximize performance and portability. 5

6 Classloading and Runtime Libraries Bringing code into the runtime environment. Advantages and disadvantages of dynamic classloading. Code verification. Optimizing the connection between the runtime library and VM. Object Representation Objects in traditionally-compiled and managed runtime environments. Data layout strategies. Object header optimization. Interpretation Stack machine architecture. Interpretation for Java bytecode. Dynamic dispatch for method invocation. Design of the SimpleJava interpreter. State of the art in interpreter design. Compilation Just In Time vs. Ahead Of Time. Profiling and selecting code for optimization. Allowing Interpreted code to run alongside JIT code. Introduction to Memory Management Manual memory management using malloc and free Reference counting and conservative GC for traditional languages. Bump pointer vs. free list allocation. Mark and sweep algorithms. Copying algorithms. 6

7 Advanced Garbage Collection The generational hypotheses and generational collection. Remembered sets, card tables and related data structures. Multi-region garbage collectors. Barriers, stack maps and other JIT contributions to GC. Exception Handling Java s language and bytecode-level exception model. Implementing both general and resource constrained exceptions. Optimizing null pointer and array bounds checks. Threading and Concurrency Memory consistency models and their impact on VM design. Thread models and mapping to the Operating System. Monitors, locks and other synchronization mechanisms. Concurrency impact on other VM components. Concurrent Garbage Collection Unique challenges for concurrent garbage collection. Parallel vs. concurrent collection. Minimizing GC pause times. Concurrent mark/sweep and copy phases. Concurrent GC barriers. Native Interfaces Designing a safe native interface. Native code impact on garbage collection and JIT compilation. Debugging and profiling interfaces. 7

8 Special Topics Weak, Soft and Phantom reference semantics and implementation. Finalization. Non-Uniform Memory Access (NUMA) architectures. Optimizing VM startup time. VM impact on cache behavior. Schedule The table below gives an approximate schedule of topics for each class period. Note that the schedule may change based on lecture pace and student interest. Students will be responsible only for material that is presented in class. Class Date September 8th September 15th September 22nd September 29th October 6th October 13th October 20th October 27th November 3rd November 10th November 17th November 24th December 1st December 8th December 15th Topic (provisional) Introduction and Overview Bytecode, Classloading, Runtime Libraries Object Representation, Interpretation JIT Compilation Memory Management and Simple Garbage Collection Columbus Day Generational Garbage Collection Advanced Garbage Collection Exception Handling Threading and Concurrency Memory Models and Distribution Concurrent Garbage Collection Native Interfaces Special Topics and Review Finals Week 8

General Introduction

General Introduction Managed Runtime Technology: General Introduction Xiao-Feng Li (xiaofeng.li@gmail.com) 2012-10-10 Agenda Virtual machines Managed runtime systems EE and MM (JIT and GC) Summary 10/10/2012 Managed Runtime

More information

Jonathan Worthington Scarborough Linux User Group

Jonathan Worthington Scarborough Linux User Group Jonathan Worthington Scarborough Linux User Group Introduction What does a Virtual Machine do? Hides away the details of the hardware platform and operating system. Defines a common set of instructions.

More information

Cloud Computing. Up until now

Cloud Computing. Up until now Cloud Computing Lecture 11 Virtualization 2011-2012 Up until now Introduction. Definition of Cloud Computing Grid Computing Content Distribution Networks Map Reduce Cycle-Sharing 1 Process Virtual Machines

More information

Garbage Collection in the Java HotSpot Virtual Machine

Garbage Collection in the Java HotSpot Virtual Machine http://www.devx.com Printed from http://www.devx.com/java/article/21977/1954 Garbage Collection in the Java HotSpot Virtual Machine Gain a better understanding of how garbage collection in the Java HotSpot

More information

Fachbereich Informatik und Elektrotechnik SunSPOT. Ubiquitous Computing. Ubiquitous Computing, Helmut Dispert

Fachbereich Informatik und Elektrotechnik SunSPOT. Ubiquitous Computing. Ubiquitous Computing, Helmut Dispert Ubiquitous Computing Ubiquitous Computing The Sensor Network System Sun SPOT: The Sun Small Programmable Object Technology Technology-Based Wireless Sensor Networks a Java Platform for Developing Applications

More information

Replication on Virtual Machines

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

More information

Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters

Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.

More information

Networks and Services

Networks and Services Networks and Services Dr. Mohamed Abdelwahab Saleh IET-Networks, GUC Fall 2015 TOC 1 Infrastructure as a Service 2 Platform as a Service 3 Software as a Service Infrastructure as a Service Definition Infrastructure

More information

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16 Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz Michel.Schinz@epfl.ch Assistant: Iulian Dragos INR 321, 368 64

More information

Validating Java for Safety-Critical Applications

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

More information

.NET Performance and Debugging Workshop

.NET Performance and Debugging Workshop DNWSH - Version: 2.1 01 October 2016.NET Performance and Debugging Workshop .NET Performance and Debugging Workshop DNWSH - Version: 2.1 8 days Course Description: The.NET Performance and Debugging Workshop

More information

Restraining Execution Environments

Restraining Execution Environments Restraining Execution Environments Segurança em Sistemas Informáticos André Gonçalves Contents Overview Java Virtual Machine: Overview The Basic Parts Security Sandbox Mechanisms Sandbox Memory Native

More information

Language Based Virtual Machines... or why speed matters. by Lars Bak, Google Inc

Language Based Virtual Machines... or why speed matters. by Lars Bak, Google Inc Language Based Virtual Machines... or why speed matters by Lars Bak, Google Inc Agenda Motivation for virtual machines HotSpot V8 Dart What I ve learned Background 25+ years optimizing implementations

More information

Software Thread Level Speculation for the Java Language and Virtual Machine Environment

Software Thread Level Speculation for the Java Language and Virtual Machine Environment Software Thread Level Speculation for the Java Language and Virtual Machine Environment Christopher J.F. Pickett and Clark Verbrugge School of Computer Science, McGill University Montréal, Québec, Canada

More information

enterprise professional expertise distilled

enterprise professional expertise distilled Oracle JRockit The Definitive Guide Develop and manage robust Java applications with Oracle's high-performance Java Virtual Machine Marcus Hirt Marcus Lagergren PUBLISHING enterprise professional expertise

More information

02 B The Java Virtual Machine

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

More information

Memory Management in Java

Memory Management in Java CMSC 433 Programming Language Technologies and Paradigms Spring 2006 Memory Management Memory Management in Java Local variables live on the Allocated at method invocation time Deallocated when method

More information

Tool - 1: Health Center

Tool - 1: Health Center Tool - 1: Health Center Joseph Amrith Raj http://facebook.com/webspherelibrary 2 Tool - 1: Health Center Table of Contents WebSphere Application Server Troubleshooting... Error! Bookmark not defined. About

More information

What s Cool in the SAP JVM (CON3243)

What s Cool in the SAP JVM (CON3243) What s Cool in the SAP JVM (CON3243) Volker Simonis, SAP SE September, 2014 Public Agenda SAP JVM Supportability SAP JVM Profiler SAP JVM Debugger 2014 SAP SE. All rights reserved. Public 2 SAP JVM SAP

More information

Instrumentation Software Profiling

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

More information

9/11/15. What is Programming? CSCI 209: Software Development. Discussion: What Is Good Software? Characteristics of Good Software?

9/11/15. What is Programming? CSCI 209: Software Development. Discussion: What Is Good Software? Characteristics of Good Software? What is Programming? CSCI 209: Software Development Sara Sprenkle sprenkles@wlu.edu "If you don't think carefully, you might think that programming is just typing statements in a programming language."

More information

Java and the JVM. Martin Schöberl

Java and the JVM. Martin Schöberl Java and the JVM Martin Schöberl Overview History and Java features Java technology The Java language A first look into the JVM Disassembling of.class files Java and the JVM 2 History of a Young Java 1992

More information

Java Garbage Collection Basics

Java Garbage Collection Basics Java Garbage Collection Basics Overview Purpose This tutorial covers the basics of how Garbage Collection works with the Hotspot JVM. Once you have learned how the garbage collector functions, learn how

More information

Embedded Java too fat and too slow?

Embedded Java too fat and too slow? Embedded Java too fat and too slow? Abstract In software developer communities it is one of the most often discussed questions: Is Java really to fat and too slow?. For embedded devices this discussion

More information

Oracle JRockit JVM. Diagnostics Guide R27.6. April 2009

Oracle JRockit JVM. Diagnostics Guide R27.6. April 2009 Oracle JRockit JVM Diagnostics Guide R27.6 April 2009 Oracle JRockit JVM Diagnostics Guide, R27.6 Copyright 2007, 2008, Oracle and/or its affiliates. All rights reserved. This software and related documentation

More information

Comp215: Performance 2: Java Internals

Comp215: Performance 2: Java Internals Comp215: Performance 2: Java Internals Mack Joyner, Dan S. Wallach (Rice University) Copyright 2016, Mack Joyner, Dan S. Wallach. All rights reserved. Recall: Collision Resolution Chaining: 0 Store all

More information

The Design of the Inferno Virtual Machine. Introduction

The Design of the Inferno Virtual Machine. Introduction The Design of the Inferno Virtual Machine Phil Winterbottom Rob Pike Bell Labs, Lucent Technologies {philw, rob}@plan9.bell-labs.com http://www.lucent.com/inferno Introduction Virtual Machine are topical

More information

Mission-Critical Java. An Oracle White Paper Updated October 2008

Mission-Critical Java. An Oracle White Paper Updated October 2008 Mission-Critical Java An Oracle White Paper Updated October 2008 Mission-Critical Java The Oracle JRockit family of products is a comprehensive portfolio of Java runtime solutions that leverages the base

More information

Programming Language Concepts for Software Developers

Programming Language Concepts for Software Developers Programming Language Concepts for Software Developers Peter Sestoft IT University of Copenhagen, Denmark sestoft@itu.dk Abstract This note describes and motivates our current plans for an undergraduate

More information

Habanero Extreme Scale Software Research Project

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

More information

JVM memory model. Global Overview

JVM memory model. Global Overview JVM memory model The leitmotiv of JAVA is its famous WOTA: write once, run anywhere. In order to apply it, Sun Microsystems created the Java Virtual Machine, an abstraction of the underlying OS that interprets

More information

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program

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

More information

Monitoring, Tracing, Debugging (Under Construction)

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.

More information

Developing Embedded Software in Java Part 1: Technology and Architecture

Developing Embedded Software in Java Part 1: Technology and Architecture Developing Embedded Software in Java Part 1: Technology and Architecture by Michael Barr Embedded Systems Conference Europe The Netherlands November 16-18, 1999 Course #300 Sun s introduction of the Java

More information

Eclipse Visualization and Performance Monitoring

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

More information

Programming Languages

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:

More information

1. THE JAVA PROGRAMMING LANGUAGE

1. THE JAVA PROGRAMMING LANGUAGE 1. THE JAVA PROGRAMMING LANGUAGE What is Java? Java programming language is a high-level language that can be characterized by all of the following buzzwords: Compiled and Interpreted Architecture neutral

More information

Virtual Machine Learning: Thinking Like a Computer Architect

Virtual Machine Learning: Thinking Like a Computer Architect Virtual Machine Learning: Thinking Like a Computer Architect Michael Hind IBM T.J. Watson Research Center March 21, 2005 CGO 05 Keynote 2005 IBM Corporation What is this talk about? Virtual Machines? 2

More information

Optimising Cloud Computing with SBSE

Optimising Cloud Computing with SBSE Optimising Cloud Computing with SBSE David R. White & Jeremy Singer {david.r.white, jeremy.singer}@glasgow.ac.uk University of Glasgow Monday 25 July 2011 OUTLINE VIRTUAL MACHINES OPPORTUNITIES FOR SBSE

More information

Memory Protection in the Java Virtual Machine

Memory Protection in the Java Virtual Machine 1 / 31 Memory Protection in the Java Virtual Machine Philip W. L. Fong Department of Computer Science University of Calgary Calgary, Alberta, Canada CPSC 525/625 (Fall 2016) Requirement Evolution Useful

More information

System Structures. Services Interface Structure

System Structures. Services Interface Structure System Structures Services Interface Structure Operating system services (1) Operating system services (2) Functions that are helpful to the user User interface Command line interpreter Batch interface

More information

ORACLE INSTANCE ARCHITECTURE

ORACLE INSTANCE ARCHITECTURE ORACLE INSTANCE ARCHITECTURE ORACLE ARCHITECTURE Oracle Database Instance Memory Architecture Process Architecture Application and Networking Architecture 2 INTRODUCTION TO THE ORACLE DATABASE INSTANCE

More information

Waratek Cloud VM for Java. Technical Architecture Overview

Waratek Cloud VM for Java. Technical Architecture Overview Waratek Cloud VM for Java Technical Architecture Overview White Paper No. 12062400 June 2012 COPYRIGHT Copyright 2012 Waratek Limited. All Rights Reserved. June 2012 RESTRICTED RIGHTS LEGEND Information

More information

4. The Android System

4. The Android System 4. The Android System 4. The Android System System-on-Chip Emulator Overview of the Android System Stack Anatomy of an Android Application 73 / 303 4. The Android System Help Yourself Android Java Development

More information

Hardware/Software Co-Design of a Java Virtual Machine

Hardware/Software Co-Design of a Java Virtual Machine Hardware/Software Co-Design of a Java Virtual Machine Kenneth B. Kent University of Victoria Dept. of Computer Science Victoria, British Columbia, Canada ken@csc.uvic.ca Micaela Serra University of Victoria

More information

IBM SDK, Java Technology Edition Version 1. IBM JVM messages IBM

IBM SDK, Java Technology Edition Version 1. IBM JVM messages IBM IBM SDK, Java Technology Edition Version 1 IBM JVM messages IBM IBM SDK, Java Technology Edition Version 1 IBM JVM messages IBM Note Before you use this information and the product it supports, read the

More information

Memory management. The memory manager. Explicit deallocation. Advanced Compiler Construction Michel Schinz

Memory management. The memory manager. Explicit deallocation. Advanced Compiler Construction Michel Schinz Memory management Memory management Advanced Compiler Construction Michel Schinz 2014 04 10 The memory of a computer is a finite resource. Typical programs use a lot of memory over their lifetime, but

More information

Lecture 1 Introduction to Android

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

More information

A JVM Does What? Eva Andreasson Product Manager, Azul Systems

A JVM Does What? Eva Andreasson Product Manager, Azul Systems A JVM Does What? Eva Andreasson Product Manager, Azul Systems Presenter Eva Andreasson Innovator & Problem solver Implemented the Deterministic GC of JRockit Real Time Awarded patents on GC heuristics

More information

Building Applications Using Micro Focus COBOL

Building Applications Using Micro Focus COBOL Building Applications Using Micro Focus COBOL Abstract If you look through the Micro Focus COBOL documentation, you will see many different executable file types referenced: int, gnt, exe, dll and others.

More information

NetBeans Profiler is an

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

More information

Clojure and Android. Daniel Solano Gómez. Clojure/conj 2011. Sattvik Software & Technology Resources, Ltd. Co.

Clojure and Android. Daniel Solano Gómez. Clojure/conj 2011. Sattvik Software & Technology Resources, Ltd. Co. Sattvik Software & Technology Resources, Ltd. Co. Clojure/conj 2011 Clojure in Small Places Sattvik Software & Technology Resources, Ltd. Co. Clojure/conj 2011 Clojure to go Sattvik Software & Technology

More information

CS 300 Data Structures Syllabus - Fall 2014

CS 300 Data Structures Syllabus - Fall 2014 CS 300 Data Structures Syllabus - Fall 2014 Catalog Description Data structures are fundamental to advanced, efficient programming. Topics including asymptotic analysis, stacks, queues, linked lists, trees,

More information

Using jvmstat and visualgc to Solve Memory Management Problems

Using jvmstat and visualgc to Solve Memory Management Problems Using jvmstat and visualgc to Solve Memory Management Problems java.sun.com/javaone/sf 1 Wally Wedel Sun Software Services Brian Doherty Sun Microsystems, Inc. Analyze JVM Machine Memory Management Problems

More information

Parallel Algorithm Engineering

Parallel Algorithm Engineering Parallel Algorithm Engineering Kenneth S. Bøgh PhD Fellow Based on slides by Darius Sidlauskas Outline Background Current multicore architectures UMA vs NUMA The openmp framework Examples Software crisis

More information

Practical Performance Understanding the Performance of Your Application

Practical Performance Understanding the Performance of Your Application Neil Masson IBM Java Service Technical Lead 25 th September 2012 Practical Performance Understanding the Performance of Your Application 1 WebSphere User Group: Practical Performance Understand the Performance

More information

Real-time Java Processor for Monitoring and Test

Real-time Java Processor for Monitoring and Test Real-time Java Processor for Monitoring and Test Martin Zabel, Thomas B. Preußer, Rainer G. Spallek Technische Universität Dresden {zabel,preusser,rgs}@ite.inf.tu-dresden.de Abstract This paper introduces

More information

Chapter 3: Operating-System Structures. Common System Components

Chapter 3: Operating-System Structures. Common System Components Chapter 3: Operating-System Structures System Components Operating System Services System Calls System Programs System Structure Virtual Machines System Design and Implementation System Generation 3.1

More information

School of Computing and Information Sciences. Course Title: Computer Programming III Date: April 9, 2014

School of Computing and Information Sciences. Course Title: Computer Programming III Date: April 9, 2014 Course Title: Computer Date: April 9, 2014 Course Number: Number of Credits: 3 Subject Area: Programming Subject Area Coordinator: Tim Downey email: downeyt@cis.fiu.edu Catalog Description: Programming

More information

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. 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

More information

Performance Tools for Parallel Java Environments

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

More information

https://runtimeverification.com Grigore Rosu Founder, President and CEO Professor of Computer Science, University of Illinois

https://runtimeverification.com Grigore Rosu Founder, President and CEO Professor of Computer Science, University of Illinois https://runtimeverification.com Grigore Rosu Founder, President and CEO Professor of Computer Science, University of Illinois Runtime Verification, Inc. (RV): startup company aimed at bringing the best

More information

Course Syllabus. COSC 1437 Programming Fundamentals II. Revision Date: August 21, 2013

Course Syllabus. COSC 1437 Programming Fundamentals II. Revision Date: August 21, 2013 Course Syllabus COSC 1437 Programming Fundamentals II Revision Date: August 21, 2013 Catalog Description: This course contains further applications of programming techniques in the C++ programming language.

More information

Architecture of software systems

Architecture of software systems Architecture of software systems Course 10: Data structures, memory management, garbage collector, references David Šišlák david.sislak@fel.cvut.cz Data structures» primitives: boolean, byte, char, int,

More information

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces Software Engineering, Lecture 4 Decomposition into suitable parts Cross cutting concerns Design patterns I will also give an example scenario that you are supposed to analyse and make synthesis from The

More information

Development of Java ME

Development of Java ME Y39PDA Development of Java ME application České vysoké učení technické v Praze Fakulta Elektrotechnická Content What is Java ME Low Level a High Level API What is JSR LBS Java ME app. life-cycle 2/29 Is

More information

Exploratory Efforts to Manage Power-Aware Memories using Software Generated Hints

Exploratory Efforts to Manage Power-Aware Memories using Software Generated Hints 1 Exploratory Efforts to Manage Power-Aware Memories using Software Generated Hints Mohammad Hammoud and Rami Melhem Department of Computer Science University of Pittsburgh Abstract This report presents

More information

Virtual Machine-Assisted Collaborative Junk Object Detection

Virtual Machine-Assisted Collaborative Junk Object Detection Virtual Machine-Assisted Collaborative Junk Object Detection by Ming Matthew Ma A thesis presented to the University of Waterloo in fulfillment of the thesis requirement for the degree of Master of Applied

More information

Online Recruitment System 1. INTRODUCTION

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

More information

Lecture 17: Mobile Computing Platforms: Android. Mythili Vutukuru CS 653 Spring 2014 March 24, Monday

Lecture 17: Mobile Computing Platforms: Android. Mythili Vutukuru CS 653 Spring 2014 March 24, Monday Lecture 17: Mobile Computing Platforms: Android Mythili Vutukuru CS 653 Spring 2014 March 24, Monday Mobile applications vs. traditional applications Traditional model of computing: an OS (Linux / Windows),

More information

HeapStats: Your Dependable Helper for Java Applications, from Development to Operation

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,

More information

Tuning WebSphere Application Server ND 7.0. Royal Cyber Inc.

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

More information

Mobile Application Development Android

Mobile Application Development Android Mobile Application Development Android MTAT.03.262 Satish Srirama satish.srirama@ut.ee Goal Give you an idea of how to start developing Android applications Introduce major Android application concepts

More information

A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler

A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler Hiroshi Inoue, Hiroshige Hayashizaki, Peng Wu and Toshio Nakatani IBM Research Tokyo IBM Research T.J. Watson Research Center April

More information

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts

More information

n Introduction n Art of programming language design n Programming language spectrum n Why study programming languages? n Overview of compilation

n Introduction n Art of programming language design n Programming language spectrum n Why study programming languages? n Overview of compilation Lecture Outline Programming Languages CSCI-4430 & CSCI-6430, Spring 2016 www.cs.rpi.edu/~milanova/csci4430/ Ana Milanova Lally Hall 314, 518 276-6887 milanova@cs.rpi.edu Office hours: Wednesdays Noon-2pm

More information

Chapter 3 Operating-System Structures

Chapter 3 Operating-System Structures Contents 1. Introduction 2. Computer-System Structures 3. Operating-System Structures 4. Processes 5. Threads 6. CPU Scheduling 7. Process Synchronization 8. Deadlocks 9. Memory Management 10. Virtual

More information

VOC Documentation. Release 0.1. Russell Keith-Magee

VOC Documentation. Release 0.1. Russell Keith-Magee VOC Documentation Release 0.1 Russell Keith-Magee February 07, 2016 Contents 1 About VOC 3 1.1 The VOC Developer and User community................................ 3 1.2 Frequently Asked Questions.......................................

More information

JRuby Now and Future Charles Oliver Nutter JRuby Guy Sun Microsystems

JRuby Now and Future Charles Oliver Nutter JRuby Guy Sun Microsystems JRuby Now and Future Charles Oliver Nutter JRuby Guy Sun Microsystems Except where otherwise noted, the content of this presentation is licensed under the Creative Commons Attribution Share Alike 3.0 United

More information

Java and Real Time Storage Applications

Java and Real Time Storage Applications Java and Real Time Storage Applications Gary Mueller Janet Borzuchowski 1 Flavors of Java for Embedded Systems Software Java Virtual Machine(JVM) Compiled Java Hardware Java Virtual Machine Java Virtual

More information

- Applet java appaiono di frequente nelle pagine web - Come funziona l'interprete contenuto in ogni browser di un certo livello? - Per approfondire

- Applet java appaiono di frequente nelle pagine web - Come funziona l'interprete contenuto in ogni browser di un certo livello? - Per approfondire - Applet java appaiono di frequente nelle pagine web - Come funziona l'interprete contenuto in ogni browser di un certo livello? - Per approfondire il funzionamento della Java Virtual Machine (JVM): -

More information

Dotnet Online Course - Smart Mind Online Training, Hyderabad. Dotnet Online Training Course Content

Dotnet Online Course - Smart Mind Online Training, Hyderabad. Dotnet Online Training Course Content Faculty: Real time and certified Dotnet Online Training Course Content Introduction to.net Online Training NET FUNDAMENTALS Why Dot Net? The Dot Net initiative Introduction to Dot Net frameworks Advantages

More information

CS 261 C and Assembly Language Programming. Course Syllabus

CS 261 C and Assembly Language Programming. Course Syllabus CS 261 C and Assembly Language Programming Course Syllabus Spring 2016 Lecture: Tuesdays and Thursdays 9:10AM to 10:25 in VSCI 255 3 Semester Hours Instructor: Dick Lang, Ph.D. dick_lang@vancouver.wsu.edu

More information

Section 1.4. Java s Magic: Bytecode, Java Virtual Machine, JIT,

Section 1.4. Java s Magic: Bytecode, Java Virtual Machine, JIT, J A V A T U T O R I A L S : Section 1.4. Java s Magic: Bytecode, Java Virtual Machine, JIT, JRE and JDK This section clearly explains the Java s revolutionary features in the programming world. Java basic

More information

4D as a Web Application Platform

4D as a Web Application Platform 4D as a Web Application Platform 4D is a powerful, flexible, and very scalable Web application platform. This white paper examines the common requirements for Web application servers, and discusses the

More information

2 Introduction to Java. Introduction to Programming 1 1

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

More information

Java Real-Time Distributed Processing over Chorus/OS

Java Real-Time Distributed Processing over Chorus/OS Java Real-Time Distributed Processing over Chorus/OS Christophe Lizzi CS Technologies Informatiques lizzi@csti.fr CNAM, CEDRIC lab. lizzi@cnam.fr Outline Motivations Our vision Real-time Java Operating

More information

02-201: Programming for Scientists

02-201: Programming for Scientists 1. Course Information 1.1 Course description 02-201: Programming for Scientists Carl Kingsford Fall 2015 Provides a practical introduction to programming for students with little or no prior programming

More information

Techniques for Real-System Characterization of Java Virtual Machine Energy and Power Behavior

Techniques for Real-System Characterization of Java Virtual Machine Energy and Power Behavior Techniques for Real-System Characterization of Java Virtual Machine Energy and Power Behavior Gilberto Contreras Margaret Martonosi Department of Electrical Engineering Princeton University 1 Why Study

More information

Armed E-Bunny: A Selective Dynamic Compiler for Embedded Java Virtual Machine Targeting ARM Processors

Armed E-Bunny: A Selective Dynamic Compiler for Embedded Java Virtual Machine Targeting ARM Processors 2005 ACM Symposium on Applied Computing Armed E-Bunny: A Selective Dynamic Compiler for Embedded Java Virtual Machine Targeting ARM Processors Mourad Debbabi Computer Security Research Group CIISE, Concordia

More information

Bringing Performance and Scalability to. Dynamic Languages. Mario Wolczko Architect Virtual Machine Research Group Oracle Labs. Insert Picture Here

Bringing Performance and Scalability to. Dynamic Languages. Mario Wolczko Architect Virtual Machine Research Group Oracle Labs. Insert Picture Here Bringing Performance and Scalability to Insert Picture Here Dynamic Languages Mario Wolczko Architect Virtual Machine Research Group Oracle Labs 1 Copyright 2012, Oracle and/or its affiliates. All rights

More information

Extreme Performance with Java

Extreme Performance with Java Extreme Performance with Java QCon NYC - June 2012 Charlie Hunt Architect, Performance Engineering Salesforce.com sfdc_ppt_corp_template_01_01_2012.ppt In a Nutshell What you need to know about a modern

More information

Copyright is owned by the Author of the thesis. Permission is given for a copy to be downloaded by an individual for the purpose of research and

Copyright is owned by the Author of the thesis. Permission is given for a copy to be downloaded by an individual for the purpose of research and Copyright is owned by the Author of the thesis. Permission is given for a copy to be downloaded by an individual for the purpose of research and private study only. The thesis may not be reproduced elsewhere

More information

ELEC 377. Operating Systems. Week 1 Class 3

ELEC 377. Operating Systems. Week 1 Class 3 Operating Systems Week 1 Class 3 Last Class! Computer System Structure, Controllers! Interrupts & Traps! I/O structure and device queues.! Storage Structure & Caching! Hardware Protection! Dual Mode Operation

More information

Introduction to Programming System Design. CSCI 455x (4 Units)

Introduction to Programming System Design. CSCI 455x (4 Units) Introduction to Programming System Design CSCI 455x (4 Units) Description This course covers programming in Java and C++. Topics include review of basic programming concepts such as control structures,

More information

Pro.NET Performance. Apress' Sasha Goldshtein. Dima Zurbalev Ido Flatow

Pro.NET Performance. Apress' Sasha Goldshtein. Dima Zurbalev Ido Flatow Pro.NET Performance Sasha Goldshtein Dima Zurbalev Ido Flatow Apress' Contents Foreword About the Authors About the Technical Reviewers Acknowledgments Introduction xv xvii xix xxi xxiii Chapter 1: Performance

More information

A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler

A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler Hiroshi Inoue, Hiroshige Hayashizaki, Peng Wu and Toshio Nakatani IBM Research Tokyo IBM Research T.J. Watson Research Center April

More information

1. Overview of the Java Language

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

More information

Chapter 2 System Structures

Chapter 2 System Structures Chapter 2 System Structures Operating-System Structures Goals: Provide a way to understand an operating systems Services Interface System Components The type of system desired is the basis for choices

More information

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 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

More information