More flexible models using a new version of the translator of Java sources
|
|
- Ruth Ramsey
- 6 years ago
- Views:
Transcription
1 Theoretical and Applied Informatics ISSN Vol.21 (2009), no. 2 pp More flexible models using a new version of the translator of Java sources to timed automatons J2TADD ARTUR RATAJ a a Institute of Theoretical and Applied Informatics of the Polish Academy of Sciences, Bałtycka 5, Gliwice, Poland Received date30 June 2009, Revised date10 September 2009, Accepted date1 October 2009 Abstract: Abstract. Several extensions to the translator J2TADD of Java source code to timed automatons with discrete data are discussed. The changes include support for arrays, reference comparisons, abstract classes and methods, interfaces, the instanceof operator and the so called experiments. Also, more types of statements can be interpreted. Keywords: model checking, programming language, timed automatons, J2TADD, Uppaal, Verics 1. Introduction J2TADD [8, 7] is a translator of a subset of Java into timed automatons extended with discrete data (TADD) [3]. Currently supported output formats are Verics [4] and Uppaal [1]. The previous version, described in [5, 6] had several limitations that decreased the flexibility of specifying models, what was the incentive of enhancing the translator. Main additions, in comparison to the previous versions, are support for arrays, reference comparisons, abstract classes and methods, interfaces, the instanceof operator, and the so called experiments, understood in a similar way as the Prism [2] experiments. The interpreted thread now can consist of more types of statements. The Object.notifyAll() operation can now be translated without the requirement of Uppaal s broadcast channels. 2. Extensions This section describes a number of new features, introduced to J2TADD.
2 Support for arrays The Uppaal[1] model checker supports arrays. To take advantage of this feature, arrays have been implemented in J2TADD as well. The arrays are fully supported in the interpreted thread [5, 6], and indexing of arrays, without array creation, is supported in the compiled TADD threads [5, 6]. The arrays internally are dereferences just like field dereferences are. Thus, wherever a field dereference is possible in the internal assembly language described in [5, 6], an indexing dereference of an array is possible as well. if(index >= 2) if(index == 2) result = element2; else result = element3; else if(index == 0) result = element0; else result = element2; Fig. 1. Simulation of an array of the size 4, using four scalar variables It is considered to add array simulation in the future versions, for model checkers that do not support arrays, by the means of a set of scalar variables, branches and assignments, using bisection as illustrated in the example in Fig Interfaces and abstract methods These are standard methods of objective programming. Enabling them in J2TADD eliminates a substantial restriction put by the translator on the programmer. Thanks to this, Runnable, from standard Java library, can now be defined as an interface as expected, as opposed to a bogus, unused class, as it was in the previous version, where the functionality of Runnable was substituted by the root class Object. If the results of: comparison of references; instanceof operator 2.3. References and instanceof are known after the interpreting step [5, 6], then these expressions can be translated by J2TADD, which simply replaces them by constant expressions false or true, as determined in the interpreting step.
3 Enhanced interpreter As opposed to the previous version, the interpreter now supports the following statements, that previously were enabled only in the compiled TADD threads: if, while, do while, for, switch, break and continue. As loops are enabled, possibility of infinite loops is possible. This would make J2TADD never finish. To avoid that, as well as to detect a computationally very intensive code, it is possible to specify the maximum number of interpreted operations. If exceeded, an error is reported by the translator notifyall() using non broadcast synchronization The method Object.notifyAll() required Uppaal s broadcast channel, so that the notifying thread could notify all waiting threads at once. The current version can translate the method without the need for broadcast channels as well. Let all possibly waiting threads be w 0, w 1,... w N 1, and a notify() statement that notifies the thread w i be n i. The one information available about the waiting threads is the variable that hold the total number of waiting threads c [8, 7]. If c = 0, it is known that no threads are waiting. If c 0, it is known that some threads are waiting, but obviously it is not known which ones. This is why, in the first step of notifyall(), all possibilities n 0, n 1,... n N 1 should be made available. Once one is nondeterministically chosen, let it be n k, then, in the next step of notifyall(), if still c 0 0, then n 0, n 1,... n k 1, n k+1,... n N 1 should be made available, as it is known n k is not already waiting, and so on. This way, the method notifyall() is translated to a special tree. Traversing the tree along transitions makes it possible to choose a sequence being an arbitrary permutation of {n 0, n 1,... n N 1 }, and also escape out of the tree if c = 0. As can be seen, unlike the case of a broadcasting channel, the waiting threads are not notified all at once, but there is some sequence of notifications instead. Yet, the order of the notification does not have any meaning, as the notified threads still need to wait for the monitor [8, 7], that is, they need to wait at least until the notifying thread leaves the critical section. An example of the discussed tree is shown in Fig Experiments Fields, if of integer type or of integer array type, instead of a normal Java initializer, can also support now set initializers. Within such a set, individual values and ranges can be defined. A range definition consists of minimum value, maximum value and step. The grammar of a set initializer is as follows:
4 110 Fig. 2. An example of translation of notifyall(). There are four threads possibly waiting, n i means notify the ith thread, 1 means decrease the value of c by 1 initializer ::= element (# element ) element ::= number range range ::= number number [: number ] where number is an integer identifier. The sets of each such initializer create together a Cartesian product. The product size is S = S 0 S 1... S n (1) where S i is the set of integer values defined by ith set initializer, and S contains all possible combinations of fields with set initializers. J2TADD then produces S output files with generated models for each combination, but also can produce S different Java source files for each combination and each Java class, that contains at least a single integer set initializer within. The source files have the set initializers replaced by concrete values, as necessary to be compiled by a normal Java compiler. This way, not only model checking of the models with different initializers is possible, but also execution of the modeled algorithms by the Java virtual machine. 3. Example In [6] a dining philosophers example is discussed. threads used in that paper is as follows: The code of the interpreted
5 111 s1 public class College3 { s2 s3 public static void main(string args []) { s4 Fork fork0 = new Fork(false); s5 Fork fork1 = new Fork(false); s6 Fork fork2 = new Fork(false); s7 s8 Philosopher p0 = new Philosopher(0, fork0, fork1); s9 Philosopher p1 = new Philosopher(1, fork1, fork2); s10 Philosopher p2 = new Philosopher(2, fork2, fork0); s11 s12 (new Thread(p0)).start(); s13 (new Thread(p1)).start(); s14 (new Thread(p2)).start(); s15 } s16 } As can be seen, the code is redundant and still works only for the case of three philosophers. The code can be replaced when using the current version of J2TADD as shown below: s1 public class College { s2 static final int NUM = 2~10:4#20; s3 s4 public static void main(string args []) { s5 s6 Fork[] forks = new Fork[NUM]; s7 s8 for(int i = 0; i < NUM; ++i) s9 forks[i] = new Fork(false); s10 s11 for(int i = 0; i < NUM; ++i) { s12 Philosopher p = new Philosopher(i, forks[i], forks[(i + 1)%NUM]); s13 (new Thread(p)).start(); s14 } s15 } s16 } The code is cleaner, and the number of philosophers is determined by a single constant. In this example, the constant has a set initializer, that defines four experiments, with the number of philosophers being respectively 2, 6, 10 and 20.
6 112 Feature Int. Comp. access modifiers + + allocation statements + - arithmetic operators arrays, including indexing casts call statements classes 5, including interfaces + + control flow statements: + + blocks, break, continue, do while, if, for, labels, switch, while, return class inheritance, implementation + + dereferences of objects Feature Int. Comp. exceptions initializers, including + + aray initializers instanceof packages + + relational operators Random.nextInt (int) string operations synchronized blocks - + and methods Thread.sleep(int) Thread.start() + - thread control: join(), notify(), notifyall(), wait() virtual methods exact subset is backend dependent, the operators + - * / are supported by all backends 2 in the backends XML, Uppaal 3 if backend supports the operator % 4 non recursive 5 no support for nested classes 6 only if resolvable after the interpreting step 7 try catch constructs are supported if the catch blocks are compiled to empty statements, and assuming no exceptions are actually thrown 8 only if object is known after the interpreting step 9 object comparison only if objects known after the interpreting step 10 argument must be a constant 11 do not cause translation errors, but are removed 12 argument must be either a constant or Random.nextInt(int) 13 notifyall() in the backends XML, Uppaal 14 only if resolvable after the interpreting step Tab. 1. Summary of features of J2TADD, for respectively interpreted and compiled threads.
7 Summary As the former version of J2TADD is described in [5, 6], while the new version is described in this paper, Tab. 1 presents a summary of all Java features supported by J2TADD in a single place. 5. Conclusion The new version of J2TADD overcomes some limitations of the previous version, allowing for definition of more flexible models with a cleaner code. Support for experiments allows for checking of a set of models, that differ in values that initialize field variables, without the need of defining each model with a separate source code. References 1. Behrmann G., David A., Larsen K. G.: A Tutorial on Uppaal. In Formal Methods for the Design of Real-Time Systems: 4th International School on Formal Methods for the Design of Computer, Communication, and Software Systems, SFM-RT 2004, pages , Hinton A., Kwiatkowska M., Norman G., Parker D.: PRISM: A Tool for Automatic Verification of Probabilistic Systems. Lecture Notes in Computer Science, 3920, pp , Janowska A., Janowski P.: Slicing of timed automata with discrete data, Fundamenta Informaticae, vol. 72(1-3), pp , Kacprzak M., Nabiałek W., Niewiadomski A., Penczek W., Półrola A., Szreter M., Woźna B., Zbrzezny A.: VerICS 2007 a Model Checker for Knowledge and Real-Time, Fundamenta Informaticae, vol. 85(1 4), pp , Rataj A., Woźna B., Zbrzeźny A.: A translator of Java programs to TADD, Concurrency, Specification and Programming (CS&P 08), Groß Väter near Berlin, Deutschland, pp , Rataj A., Woźna B., Zbrzeźny A.: A translator of Java programs to TADDs, Fundamenta Informaticae, vol. 93(1 3), pp , Woźna B., Zbrzeźny A.: Towards verification of Java programs in VerICS, Fundamenta Informaticae, vol. 85(1 4), pp , Zbrzeźny A., Woźna B., Orzechowski M., Raimondi F.: Towards verification of Java programs in VerICS, Concurrency, Specification and Programming (CS&P 07), pp , Lagow, Poland 2007.
8 114 Bardziej elastyczne modele z użyciem nowej wersji translatora źródeł Javy do automatów czasowych J2TADD Streszczenie W artykule omawiane jest kilka rozszerzeń w nowej wersji translatora źródeł Javy do automatów czasowych, J2TADD. Zmiany te to między innymi możliwość używania tablic, porównań referencji, abstrakcyjnych klas i metod, interfejsów, operatora instanceof oraz porównań referencji obiektów. Możliwe jest również opisywanie tak zwanych eksperymentów. Nowa wersja J2TADD umożliwia definiowanie bardziej elastycznych modeli z użyciem bardziej klarownego kodu źródłowego.
Verification of Java programs using networks of finite automata with discrete data.
Catholic University in Ružomberok Scientific Issues, Mathematica II, Ružomberok 2009 Verification of Java programs using networks of finite automata with discrete data. Bożena Woźna, Andrzej Zbrzezny Institute
More informationA translator of Java programs to TADDs
Fundamenta Informaticae XX (2009) 1 20 1 IOS Press A translator of Java programs to TADDs Artur Rataj IT&ACS, Polish Academy of Sciences ul. Bałtycka 5, 44-100 Gliwice, Poland email: {arataj@iitis.gliwice.pl}
More informationCS61B, Spring 2003 Discussion #17 Amir Kamil UC Berkeley 5/12/03
CS61B, Spring 2003 Discussion #17 Amir Kamil UC Berkeley 5/12/03 Topics: Threading, Synchronization 1 Threading Suppose we want to create an automated program that hacks into a server. Many encryption
More informationIntroduction to Programming Using Java (98-388)
Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;
More informationerics: A Tool for Verifying Timed Automata and Estelle Specifications
erics: A Tool for Verifying Timed Automata and Estelle Specifications Piotr Dembiński, Agata Janowska, Pawe l Janowski, Wojciech Penczek,5, Agata Pó lrola, Maciej Szreter,Bożena Woźna 4, and Andrzej Zbrzezny
More informationLexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 6 Decaf Language Wednesday, September 7 The project for the course is to write a
More informationJava: Pitfalls and Strategies
Java: Pitfalls and Strategies Pao-Ann Hsiung National Chung Cheng University Chiayi, Taiwan Adapted from Bo Sandén, Copying with Java Threads, IEEE Computer, Vol. 37, No. 4, pp. 20-27, April 2004. Contents
More informationfor (i=1; i<=100000; i++) { x = sqrt (y); // square root function cout << x+i << endl; }
Ex: The difference between Compiler and Interpreter The interpreter actually carries out the computations specified in the source program. In other words, the output of a compiler is a program, whereas
More informationPace University. Fundamental Concepts of CS121 1
Pace University Fundamental Concepts of CS121 1 Dr. Lixin Tao http://csis.pace.edu/~lixin Computer Science Department Pace University October 12, 2005 This document complements my tutorial Introduction
More informationCS111: PROGRAMMING LANGUAGE II
1 CS111: PROGRAMMING LANGUAGE II Computer Science Department Lecture 1: Introduction Lecture Contents 2 Course info Why programming?? Why Java?? Write once, run anywhere!! Java basics Input/output Variables
More informationCOMP 322: Fundamentals of Parallel Programming
COMP 322: Fundamentals of Parallel Programming https://wiki.rice.edu/confluence/display/parprog/comp322 Lecture 28: Java Threads (contd), synchronized statement Vivek Sarkar Department of Computer Science
More informationJava Threads. Written by John Bell for CS 342, Spring 2018
Java Threads Written by John Bell for CS 342, Spring 2018 Based on chapter 9 of Learning Java, Fourth Edition by Niemeyer and Leuck, and other sources. Processes A process is an instance of a running program.
More informationDOWNLOAD PDF CORE JAVA APTITUDE QUESTIONS AND ANSWERS
Chapter 1 : Chapter-wise Java Multiple Choice Questions and Answers Interview MCQs Java Programming questions and answers with explanation for interview, competitive examination and entrance test. Fully
More informationCHETTINAD COLLEGE OF ENGINEERING & TECHNOLOGY JAVA
1. JIT meaning a. java in time b. just in time c. join in time d. none of above CHETTINAD COLLEGE OF ENGINEERING & TECHNOLOGY JAVA 2. After the compilation of the java source code, which file is created
More informationIncremental Runtime Verification of Probabilistic Systems
Incremental Runtime Verification of Probabilistic Systems Vojtěch Forejt 1, Marta Kwiatkowska 1, David Parker 2, Hongyang Qu 1, and Mateusz Ujma 1 1 Department of Computer Science, University of Oxford,
More informationOperational Semantics. One-Slide Summary. Lecture Outline
Operational Semantics #1 One-Slide Summary Operational semantics are a precise way of specifying how to evaluate a program. A formal semantics tells you what each expression means. Meaning depends on context:
More informationPerformance Throughput Utilization of system resources
Concurrency 1. Why concurrent programming?... 2 2. Evolution... 2 3. Definitions... 3 4. Concurrent languages... 5 5. Problems with concurrency... 6 6. Process Interactions... 7 7. Low-level Concurrency
More informationCS 556 Distributed Systems
CS 556 Distributed Systems Tutorial on 4 Oct 2002 Threads A thread is a lightweight process a single sequential flow of execution within a program Threads make possible the implementation of programs that
More informationMultitasking Multitasking allows several activities to occur concurrently on the computer. A distinction is usually made between: Process-based multit
Threads Multitasking Multitasking allows several activities to occur concurrently on the computer. A distinction is usually made between: Process-based multitasking Thread-based multitasking Multitasking
More informationCOMP520 - GoLite Type Checking Specification
COMP520 - GoLite Type Checking Specification Vincent Foley February 26, 2015 1 Declarations Declarations are the primary means of introducing new identifiers in the symbol table. In Go, top-level declarations
More informationWhat is a thread anyway?
Concurrency in Java What is a thread anyway? Smallest sequence of instructions that can be managed independently by a scheduler There can be multiple threads within a process Threads can execute concurrently
More informationContents. 6-1 Copyright (c) N. Afshartous
Contents 1. Classes and Objects 2. Inheritance 3. Interfaces 4. Exceptions and Error Handling 5. Intro to Concurrency 6. Concurrency in Java 7. Graphics and Animation 8. Applets 6-1 Copyright (c) 1999-2004
More informationThread Programming. Comp-303 : Programming Techniques Lecture 11. Alexandre Denault Computer Science McGill University Winter 2004
Thread Programming Comp-303 : Programming Techniques Lecture 11 Alexandre Denault Computer Science McGill University Winter 2004 February 16, 2004 Lecture 11 Comp 303 : Programming Techniques Page 1 Announcements
More informationfor (i=1; i<=100000; i++) { x = sqrt (y); // square root function cout << x+i << endl; }
Ex: The difference between Compiler and Interpreter The interpreter actually carries out the computations specified in the source program. In other words, the output of a compiler is a program, whereas
More informationThe Sun s Java Certification and its Possible Role in the Joint Teaching Material
The Sun s Java Certification and its Possible Role in the Joint Teaching Material Nataša Ibrajter Faculty of Science Department of Mathematics and Informatics Novi Sad 1 Contents Kinds of Sun Certified
More information1 Lexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler
More information3. Java - Language Constructs I
Educational Objectives 3. Java - Language Constructs I Names and Identifiers, Variables, Assignments, Constants, Datatypes, Operations, Evaluation of Expressions, Type Conversions You know the basic blocks
More informationLecture 29: Java s synchronized statement
COMP 322: Fundamentals of Parallel Programming Lecture 29: Java s synchronized statement Vivek Sarkar Department of Computer Science, Rice University vsarkar@rice.edu https://wiki.rice.edu/confluence/display/parprog/comp322
More informationA Short Summary of Javali
A Short Summary of Javali October 15, 2015 1 Introduction Javali is a simple language based on ideas found in languages like C++ or Java. Its purpose is to serve as the source language for a simple compiler
More informationCOMP 181 Compilers. Administrative. Last time. Prelude. Compilation strategy. Translation strategy. Lecture 2 Overview
COMP 181 Compilers Lecture 2 Overview September 7, 2006 Administrative Book? Hopefully: Compilers by Aho, Lam, Sethi, Ullman Mailing list Handouts? Programming assignments For next time, write a hello,
More informationA Model for Concurrent Object-Oriented Programming
A Model for Concurrent Object-Oriented Programming Emil Sekerinski McMaster University Hamilton, Ontario, Canada March 2004 Introduction Objects are a natural unit of concurrency: objects can evolve indepently
More informationMultithreading Pearson Education, Inc. All rights reserved.
1 23 Multithreading 2 23.1 Introduction Multithreading Provides application with multiple threads of execution Allows programs to perform tasks concurrently Often requires programmer to synchronize threads
More informationSpace Exploration EECS /25
1/25 Space Exploration EECS 4315 www.eecs.yorku.ca/course/4315/ Nondeterminism 2/25 Nondeterministic code is code that, even for the same input, can exhibit different behaviours on different runs, as opposed
More informationpublic static boolean isoutside(int min, int max, int value)
See the 2 APIs attached at the end of this worksheet. 1. Methods: Javadoc Complete the Javadoc comments for the following two methods from the API: (a) / @param @param @param @return @pre. / public static
More informationCOMP520 - GoLite Type Checking Specification
COMP520 - GoLite Type Checking Specification Vincent Foley March 5, 2017 1 Introduction This document presents the typing rules for all the language constructs (i.e. declarations, statements, expressions)
More informationSynchronization in Java
Synchronization in Java Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park Synchronization Overview Unsufficient atomicity Data races Locks Deadlock Wait /
More informationPROGRAMMING FUNDAMENTALS
PROGRAMMING FUNDAMENTALS Q1. Name any two Object Oriented Programming languages? Q2. Why is java called a platform independent language? Q3. Elaborate the java Compilation process. Q4. Why do we write
More informationMODEL-BASED DESIGN OF CODE FOR PLC CONTROLLERS
Krzysztof Sacha Warsaw University of Technology, Nowowiejska 15/19, 00-665 Warszawa, Poland k.sacha@ia.pw.edu.pl Keywords: Abstract: Automatic program generation, Model verification, Finite state machine,
More informationLexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2010 Handout Decaf Language Tuesday, Feb 2 The project for the course is to write a compiler
More informationCOMP520 - GoLite Type Checking Specification
COMP520 - GoLite Type Checking Specification Vincent Foley April 8, 2018 1 Introduction This document presents the typing rules for all the language constructs (i.e. declarations, statements, expressions)
More informationModule Contact: Dr Anthony J. Bagnall, CMP Copyright of the University of East Anglia Version 2
UNIVERSITY OF EAST ANGLIA School of Computing Sciences Main Series UG Examination 2014/15 PROGRAMMING 2 CMP-5015Y Time allowed: 2 hours Answer four questions. All questions carry equal weight. Notes are
More informationModule 10: Open Multi-Processing Lecture 19: What is Parallelization? The Lecture Contains: What is Parallelization? Perfectly Load-Balanced Program
The Lecture Contains: What is Parallelization? Perfectly Load-Balanced Program Amdahl's Law About Data What is Data Race? Overview to OpenMP Components of OpenMP OpenMP Programming Model OpenMP Directives
More informationLECTURE 3. Compiler Phases
LECTURE 3 Compiler Phases COMPILER PHASES Compilation of a program proceeds through a fixed series of phases. Each phase uses an (intermediate) form of the program produced by an earlier phase. Subsequent
More informationJava Fundamentals p. 1 The Origins of Java p. 2 How Java Relates to C and C++ p. 3 How Java Relates to C# p. 4 Java's Contribution to the Internet p.
Preface p. xix Java Fundamentals p. 1 The Origins of Java p. 2 How Java Relates to C and C++ p. 3 How Java Relates to C# p. 4 Java's Contribution to the Internet p. 5 Java Applets and Applications p. 5
More informationLecture 5: Methods CS2301
Lecture 5: Methods NADA ALZAHRANI CS2301 1 Opening Problem Find the sum of integers from 1 to 10, from 20 to 30, and from 35 to 45, respectively. 2 Solution public static int sum(int i1, int i2) { int
More informationTowards Promela verification using VerICS
Part 2: Specification Towards Promela verification using VerICS Wojciech Nabia lek 1 and Pawe l Janowski 2 1 Institute of Computer Science, University of Podlasie ul. Sienkiewicza 51, 08-110 Siedlce, Poland
More informationGetting started with Java
Getting started with Java by Vlad Costel Ungureanu for Learn Stuff Programming Languages A programming language is a formal constructed language designed to communicate instructions to a machine, particularly
More informationCOMP 763. Eugene Syriani. Ph.D. Student in the Modelling, Simulation and Design Lab School of Computer Science. McGill University
Eugene Syriani Ph.D. Student in the Modelling, Simulation and Design Lab School of Computer Science McGill University 1 OVERVIEW In the context In Theory: Timed Automata The language: Definitions and Semantics
More informationModeling, Testing and Executing Reo Connectors with the. Reo, Eclipse Coordination Tools
Replace this file with prentcsmacro.sty for your meeting, or with entcsmacro.sty for your meeting. Both can be found at the ENTCS Macro Home Page. Modeling, Testing and Executing Reo Connectors with the
More informationMultithreaded Programming Part II. CSE 219 Stony Brook University, Department of Computer Science
Multithreaded Programming Part II CSE 219 Stony Brook University, Thread Scheduling In a Java application, main is a thread on its own Once multiple threads are made Runnable the thread scheduler of the
More informationM/s. Managing distributed workloads. Language Reference Manual. Miranda Li (mjl2206) Benjamin Hanser (bwh2124) Mengdi Lin (ml3567)
1 M/s Managing distributed workloads Language Reference Manual Miranda Li (mjl2206) Benjamin Hanser (bwh2124) Mengdi Lin (ml3567) Table of Contents 1. Introduction 2. Lexical elements 2.1 Comments 2.2
More informationCore Java - SCJP. Q2Technologies, Rajajinagar. Course content
Core Java - SCJP Course content NOTE: For exam objectives refer to the SCJP 1.6 objectives. 1. Declarations and Access Control Java Refresher Identifiers & JavaBeans Legal Identifiers. Sun's Java Code
More informationCSE P 501 Compilers. Java Implementation JVMs, JITs &c Hal Perkins Winter /11/ Hal Perkins & UW CSE V-1
CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Winter 2008 3/11/2008 2002-08 Hal Perkins & UW CSE V-1 Agenda Java virtual machine architecture.class files Class loading Execution engines
More informationException Handling in Java. An Exception is a compile time / runtime error that breaks off the
Description Exception Handling in Java An Exception is a compile time / runtime error that breaks off the program s execution flow. These exceptions are accompanied with a system generated error message.
More informationwant turn==me wait req2==0
Uppaal2k: Small Tutorial Λ 16 October 2002 1 Introduction This document is intended to be used by new comers to Uppaal and verification. Students or engineers with little background in formal methods should
More informationIntroduction to Java Threads
Object-Oriented Programming Introduction to Java Threads RIT CS 1 "Concurrent" Execution Here s what could happen when you run this Java program and launch 3 instances on a single CPU architecture. The
More informationThe SPIN Model Checker
The SPIN Model Checker Metodi di Verifica del Software Andrea Corradini Lezione 1 2013 Slides liberamente adattate da Logic Model Checking, per gentile concessione di Gerard J. Holzmann http://spinroot.com/spin/doc/course/
More informationJava PathFinder JPF 2 Second Generation of Java Model Checker
Java PathFinder JPF 2 Second Generation of Java Model Checker Guenther Brand Mat. Nr. 9430535 27. 06. 2003 Abstract This essay is based on the papers Java PathFinder, Second Generation of Java Model Checker
More informationModeling and Verification of Priority Assignment in Real-Time Databases Using Uppaal
Modeling and Verification of Priority Assignment in Real-Time Databases Using Uppaal Martin Kot Martin Kot Center for Applied Cybernetics, Department of Computer Science, FEI, Center for Applied VSBCybernetics,
More informationBIT Java Programming. Sem 1 Session 2011/12. Chapter 2 JAVA. basic
BIT 3383 Java Programming Sem 1 Session 2011/12 Chapter 2 JAVA basic Objective: After this lesson, you should be able to: declare, initialize and use variables according to Java programming language guidelines
More informationUser Space Multithreading. Computer Science, University of Warwick
User Space Multithreading 1 Threads Thread short for thread of execution/control B efore create Global During create Global Data Data Executing Code Code Stack Stack Stack A fter create Global Data Executing
More informationComputer Programming: C++
The Islamic University of Gaza Engineering Faculty Department of Computer Engineering Fall 2017 ECOM 2003 Muath i.alnabris Computer Programming: C++ Experiment #7 Arrays Part II Passing Array to a Function
More informationpublic static void negate2(list<integer> t)
See the 2 APIs attached at the end of this worksheet. 1. Methods: Javadoc Complete the Javadoc comments for the following two methods from the API: (a) / @param @param @param @return @pre. / public static
More informationCmpSci 187: Programming with Data Structures Spring 2015
CmpSci 187: Programming with Data Structures Spring 2015 Lecture #13, Concurrency, Interference, and Synchronization John Ridgway March 12, 2015 Concurrency and Threads Computers are capable of doing more
More informationConcurrent Programming
Concurrency Concurrent Programming A sequential program has a single thread of control. Its execution is called a process. A concurrent program has multiple threads of control. They may be executed as
More informationAn overview of Java, Data types and variables
An overview of Java, Data types and variables Lecture 2 from (UNIT IV) Prepared by Mrs. K.M. Sanghavi 1 2 Hello World // HelloWorld.java: Hello World program import java.lang.*; class HelloWorld { public
More informationTemporal Logic and Timed Automata
Information Systems Analysis Temporal Logic and Timed Automata (5) UPPAAL timed automata Paweł Głuchowski, Wrocław University of Technology version 2.3 Contents of the lecture Tools for automatic verification
More informationProgramming in Parallel COMP755
Programming in Parallel COMP755 All games have morals; and the game of Snakes and Ladders captures, as no other activity can hope to do, the eternal truth that for every ladder you hope to climb, a snake
More informationLecture 2. COMP1406/1006 (the Java course) Fall M. Jason Hinek Carleton University
Lecture 2 COMP1406/1006 (the Java course) Fall 2013 M. Jason Hinek Carleton University today s agenda a quick look back (last Thursday) assignment 0 is posted and is due this Friday at 2pm Java compiling
More informationCharacter Stream : It provides a convenient means for handling input and output of characters.
Be Perfect, Do Perfect, Live Perfect 1 1. What is the meaning of public static void main(string args[])? public keyword is an access modifier which represents visibility, it means it is visible to all.
More informationJava SE 8 Programming
Java SE 8 Programming Training Calendar Date Training Time Location 16 September 2019 5 Days Bilginç IT Academy 28 October 2019 5 Days Bilginç IT Academy Training Details Training Time : 5 Days Capacity
More informationCS313D: ADVANCED PROGRAMMING LANGUAGE
CS313D: ADVANCED PROGRAMMING LANGUAGE Computer Science Department Lecture 3: C# language basics Lecture Contents 2 C# basics Conditions Loops Methods Arrays Dr. Amal Khalifa, Spr 2015 3 Conditions and
More informationKU Compilerbau - Programming Assignment
716.077 KU Compilerbau - Programming Assignment Univ.-Prof. Dr. Franz Wotawa, Birgit Hofer Institute for Software Technology, Graz University of Technology April 20, 2011 Introduction During this semester
More informationCS Internet programming Unit- I Part - A 1 Define Java. 2. What is a Class? 3. What is an Object? 4. What is an Instance?
CS6501 - Internet programming Unit- I Part - A 1 Define Java. Java is a programming language expressly designed for use in the distributed environment of the Internet. It was designed to have the "look
More informationJava Threads. Introduction to Java Threads
Java Threads Resources Java Threads by Scott Oaks & Henry Wong (O Reilly) API docs http://download.oracle.com/javase/6/docs/api/ java.lang.thread, java.lang.runnable java.lang.object, java.util.concurrent
More information9/5/17. The Design and Implementation of Programming Languages. Compilation. Interpretation. Compilation vs. Interpretation. Hybrid Implementation
Language Implementation Methods The Design and Implementation of Programming Languages Compilation Interpretation Hybrid In Text: Chapter 1 2 Compilation Interpretation Translate high-level programs to
More informationSome Remarks on Security Protocols Verification Tools
Some Remarks on Security Protocols Verification Tools Mirosław Kurkowski 1, Adam Kozakiewicz 2 and Olga Siedlecka-Lamch 3 1 Institute of Computer Sciences, Cardinal Stefan Wyszynski University Warsaw,
More informationThreads Chate Patanothai
Threads Chate Patanothai Objectives Knowing thread: 3W1H Create separate threads Control the execution of a thread Communicate between threads Protect shared data C. Patanothai Threads 2 What are threads?
More informationAnatomy of a Compiler. Overview of Semantic Analysis. The Compiler So Far. Why a Separate Semantic Analysis?
Anatomy of a Compiler Program (character stream) Lexical Analyzer (Scanner) Syntax Analyzer (Parser) Semantic Analysis Parse Tree Intermediate Code Generator Intermediate Code Optimizer Code Generator
More informationJava Threads. COMP 585 Noteset #2 1
Java Threads The topic of threads overlaps the boundary between software development and operation systems. Words like process, task, and thread may mean different things depending on the author and the
More informationProgramming Languages
Programming Languages Tevfik Koşar Lecture - XXVII May 2 nd, 2006 1 Roadmap Shared Memory Cigarette Smokers Problem Monitors Message Passing Cooperative Operations Synchronous and Asynchronous Sends Blocking
More informationSemantic Analysis. Lecture 9. February 7, 2018
Semantic Analysis Lecture 9 February 7, 2018 Midterm 1 Compiler Stages 12 / 14 COOL Programming 10 / 12 Regular Languages 26 / 30 Context-free Languages 17 / 21 Parsing 20 / 23 Extra Credit 4 / 6 Average
More informationNews and information! Review: Java Programs! Feedback after Lecture 2! Dead-lines for the first two lab assignment have been posted.!
True object-oriented programming: Dynamic Objects Reference Variables D0010E Object-Oriented Programming and Design Lecture 3 Static Object-Oriented Programming UML" knows-about Eckel: 30-31, 41-46, 107-111,
More informationCOM2007 Week 9 Java Concurrency and Alting
COM2007 Week 9 Java Concurrency and Alting Two Learning Outcomes: To provide a comparison of how threads run in Java and also to develop a working example using the AltingChannel constructs. Part 1 is
More informationParallel Programming Languages COMP360
Parallel Programming Languages COMP360 The way the processor industry is going, is to add more and more cores, but nobody knows how to program those things. I mean, two, yeah; four, not really; eight,
More informationCOMP-202. Recursion. COMP Recursion, 2011 Jörg Kienzle and others
COMP-202 Recursion Recursion Recursive Definitions Run-time Stacks Recursive Programming Recursion vs. Iteration Indirect Recursion Lecture Outline 2 Recursive Definitions (1) A recursive definition is
More information7. MULTITHREDED PROGRAMMING
7. MULTITHREDED PROGRAMMING What is thread? A thread is a single sequential flow of control within a program. Thread is a path of the execution in a program. Muti-Threading: Executing more than one thread
More informationCSCI312 Principles of Programming Languages!
CSCI312 Principles of Programming Languages!! Chapter 3 Regular Expression and Lexer Xu Liu Recap! Copyright 2006 The McGraw-Hill Companies, Inc. Clite: Lexical Syntax! Input: a stream of characters from
More informationApplication Development in JAVA. Data Types, Variable, Comments & Operators. Part I: Core Java (J2SE) Getting Started
Application Development in JAVA Duration Lecture: Specialization x Hours Core Java (J2SE) & Advance Java (J2EE) Detailed Module Part I: Core Java (J2SE) Getting Started What is Java all about? Features
More informationTools : The Java Compiler. The Java Interpreter. The Java Debugger
Tools : The Java Compiler javac [ options ] filename.java... -depend: Causes recompilation of class files on which the source files given as command line arguments recursively depend. -O: Optimizes code,
More informationIntroduction to Object-Oriented Programming
Introduction to Object-Oriented Programming Arrays, Part 1 of 2 Christopher Simpkins chris.simpkins@gatech.edu CS 1331 (Georgia Tech) Arrays, Part 1 of 2 1 / 14 Modeling Aggregates As you ve seen, you
More informationFaculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology
Faculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology exam Compiler Construction in4020 July 5, 2007 14.00-15.30 This exam (8 pages) consists of 60 True/False
More informationObject Oriented Programming Exception Handling
Object Oriented Programming Exception Handling Budditha Hettige Department of Computer Science Programming Errors Types Syntax Errors Logical Errors Runtime Errors Syntax Errors Error in the syntax of
More information1.00 Lecture 5. Floating Point Anomalies
1.00 Lecture 5 More on Java Data Types, Control Structures Introduction to Methods Reading for next time: Big Java: 7.1-7.5, 7.8 Floating Point Anomalies Anomalous floating point values: Undefined, such
More informationCOMP284 Scripting Languages Lecture 6: Perl (Part 5) Handouts
COMP284 Scripting Languages Lecture 6: Perl (Part 5) Handouts Ullrich Hustadt Department of Computer Science School of Electrical Engineering, Electronics, and Computer Science University of Liverpool
More informationQuiz on Tuesday April 13. CS 361 Concurrent programming Drexel University Fall 2004 Lecture 4. Java facts and questions. Things to try in Java
CS 361 Concurrent programming Drexel University Fall 2004 Lecture 4 Bruce Char and Vera Zaychik. All rights reserved by the author. Permission is given to students enrolled in CS361 Fall 2004 to reproduce
More informationMIT Specifying Languages with Regular Expressions and Context-Free Grammars. Martin Rinard Massachusetts Institute of Technology
MIT 6.035 Specifying Languages with Regular essions and Context-Free Grammars Martin Rinard Massachusetts Institute of Technology Language Definition Problem How to precisely define language Layered structure
More informationMIT Specifying Languages with Regular Expressions and Context-Free Grammars
MIT 6.035 Specifying Languages with Regular essions and Context-Free Grammars Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Language Definition Problem How to precisely
More information1. Find the output of following java program. class MainClass { public static void main (String arg[])
1. Find the output of following java program. public static void main(string arg[]) int arr[][]=4,3,2,1; int i,j; for(i=1;i>-1;i--) for(j=1;j>-1;j--) System.out.print(arr[i][j]); 1234 The above java program
More informationMid-Term 2 Grades
Mid-Term 2 Grades 100 46 1 HW 9 Homework 9, in untyped class interpreter: Add instanceof Restrict field access to local class Implement overloading (based on argument count) Due date is the same as for
More information