Efficiency of Subtype Test in Object Oriented Languages with Generics

Size: px
Start display at page:

Download "Efficiency of Subtype Test in Object Oriented Languages with Generics"

Transcription

1 Efficiency of Subtype Tt in Object Oriented Languag with Generics Alexandre Terrasa Université du Québec à Montréal Jean Privat Université du Québec à Montréal ABSTRACT In a programming language, the choice of a generics typing policy impacts both typing tt mantics and type safety. In this paper, we compare the cost of the generic policy chon and analyze its impacts on the subtype tt performance. To make this comparison we implement two compilers for the Nit language. One appli covariant policy using a homogeneous implementation and the cond appli an erad policy and implementation. We compare the time efficiency of our solution against engin for C++, C#, Eiffel, Java and Scala. Rults show that our implementations give the bt performanc compared to existing solutions. We also compare covariant and erad polici on existing Nit programs using our two compilers. Rults show that covariance do not imply significant overhead regarding subtype tt performanc. Due to the small difference between the costs of the different polici, the choice of a policy by a language digner should not be influenced by performance considerations. Categori and Subject Dcriptors D.3.3 [Programming Languag]: Language Constructs and Featur; D.3.4 [Programming Languag]: Procsors Compilers General Terms Experimentation, Languag, Subtyping, Performance Keywords generics, typing policy, covariance, erasure, generics implementation, homogeneous, heterogeneous, subtype tt, multiple inheritance 1. INTRODUCTION Genericity is an important feature of statically typed object oriented languag, pecially for librari and reusable components. Several languag provide genericity featur and generic typing policy vary between them. In a programming language, the generics typing policy specifi the rul regarding type parameters, type arguments and generic class. The choice of a typing policy impacts both typing tt mantics and type safety. In this paper, we compare the runtime cost of the chon generics policy and its impacts on the subtype tt performanc. Comparing objectively the typing polici is not an easy task since each policy has different rul. Indeed, changing a language policy has dramatic effects becau: i) it chang the exprsivens of the language; ii) it chang the mantics of the program: implicit casts can be removed or added at different plac; iii) the mantics of the subtype tt instanceof or explicit casts depends on the policy. 1.1 Generics Typing Polici Basically, at runtime, one can consider three famili of typing polici: invariance, covariance, and erasure. The choice of a policy affects the mantics and the number of subtype tts to be performed at runtime. Invariance. There is no subtyping relationship between the generic variations of a class. Invariant typing policy guarante that static typing is enough to ensure the dynamic type safety. This is the policy applied by C++: A, B, G A, G B : G A <: G B A = B Covariance. A subtyping relationship exists between two generic variations bad on the relationship of the type arguments: A, B, G A, G B : G A <: G B A <: B To ensure type safety, languag may u two different approach. The first, ud by C# with its variant generic interfac, is to introduce limitations and static rul to ensure type safety at compile time. The cond, ud by Eiffel, delegat the checks at runtime and add some covariant casts to ensure type safety.

2 Erasure. The typ arguments are not considered and all generic variations of a class are subtyp of each other. This is the policy applied at runtime by Java and Scala: G A, G B : G A <: G B Erasure can be en as the way to do genericity without generic class. To ensure type safety, the compiler automatically adds erasure casts to change the type of the method argument or the return type according to the static bounds specified. While erasure can avoid some covariance casts, erasure casts reprent an overhead that is not required by the covariant policy. 1.2 Generics Implementations Invariant and covariant generic polici can be implemented by both heterogeneous and homogeneous implementation. The main difference between the approach is whether the generic variations of a class share the same implementation or not. Heterogeneous. With the heterogeneous implementation the compiler generat a customized version of the compiled class for each generic variation. In each customized variation of a class, typ parameters are replaced by concrete typ. Since each customized version is considered as a distinct class subtyp tts can be rolved in the same way than with non-generic typ. This is the implementation ud for C++ templat and SmartEiffel. Homogeneous. With the homogeneous implementation all the generic variations of a class share the same compiled code. Therefore, referenc to type parameters and open typ [7] must be rolved at runtime. This is the implementation ud by EiffelStudio and C#. Erad. The erad implementation behave like implementations without genericity. At compile time, all referenc to type parameters in the class body are replaced by their static bounds. The same compiled version of a generic class is shared by all its instanc. Erasure casts are done using the static bounds in the compiled class. Subtyping tts with erad genericity behave exactly like non-generic subtype tts, only the class type is taken into account in subtype tt. The erad policy rults from an erad implementation. This is the implementation ud by Java and Scala. 1.3 The Nit Language Comparing generics typing polici and implementations is a difficult task and we had two difficult constraints to solve: Having real-world programs that behave exactly the same way with both polici. This is a difficult task. Having two compilers that generate the same machine code except for what is related to the polici and the typing implementation. This is easier becau we can implement them. We ba our study on the Nit language 1. Nit is an evolution of the PRM language which was dedicated to exhaustive asssments of various implementation techniqu and compilation schem [4, 8]. Nit is an object oriented language with static typing. Its featur include nullable typ [6] and virtual typ [9]. The Nit specification stat that the policy involved is covariant (the same was true in PRM). However, the main parate compiler, nitc, implements genericity with an unsafe erasure policy (i.e., without automatic casts) and has a lot of TODO and FIXME in its source-code. There are two other engin, ud for education purpos, nit, a naive and really inefficient interpreter, and, a global compiler with heavy customization. Both implement the real covariant mantic but on a subt of the language. Conquently, most of the existing Nit programs, including and nit, behave exactly the same way either with a covariant policy or with an erad policy. With the Nit language, we have a tt platform to compare polici and implementations. To make this comparison we created two new implementations of the Nit compiler. follows the covariant policy using a homogeneous implementation. -e us an erad implementation and policy. Both engin were digned to provide maximum scalability for tting. 1.4 Comparing Polici and Implementations In the rt of this paper, Section 2 prents the micro benchmarks ud to verify that our solution is in the same magnitude of existing implementations. We compare the time efficiency of our solution against implementations ud in other languag and compilers using generated type hierarchi. Rults with compilers for C++, C#, Eiffel, Java, Scala and Nit show that our implementations give good performanc compared to existing solutions. Section 3 compar covariant and erad polici on Nit programs and discuss the performanc of the covariant compiler versus an erad compiler. Rults show that covariance do not imply significant overhead regarding subtype tt performanc. Finally, Section 4 prents our conclusions and future work. 2. LANGUAGES COMPARISON In this ction we compare the behavior of multipl engin (1 compilers and 2 virtual machin) for the languag C++, C#, Eiffel, Java, Scala and Nit on some unrealistic micro-benchmarks. Unlike the study propod by Garcia [5] that provid a comprehensive study of faciliti for generic programming in the languag, this evaluation aims to compare the implementation of subtype tt for generics with all other mechanisms being different. This evaluation aims to answer veral qutions: i) Do the Nit implementations have performanc of the same order compared to other existing solutions? ii) How different are 1

3 the measured behaviors with a large variety of polici, implementations, languag, and engin? iii) How do a specific execution engine rpond to a strs tt on subtyping mechanisms for generics? 2.1 The Engin We compare the following compilers and virtual machine. g++ provid the heterogeneous implementation of the invariant policy of C++. We u the version GNU gcc g++ (Debian ) linux-x86-64 with GNU. clang++ also provid the heterogeneous implementation for C++. We u the version Debian clang version (tags/release 3/final) (bad on LLVM 3.) - linuxx Both g++ and clang++ u the same implementation of the subtype tt shared in libstdc++ version Debian GNU linux-x Both are also ud with the -O2 optimization level. javac version is ud to compile Java programs. They are run on the OpenJDK Runtime (IcedTea ) (7u ) following the erad policy and implementation of Java. gcj, the GNU compiler for Java, version is also ud to compile Java programs. scalac version Scala programs are run on the same runtime environment than Java programs. The policy ud is covariant but us an erad implementation. is the compiler for Mono C# version C# programs are executed on the Mono JIT compiler version C# provid a covariant and homogeneous implementation of the covariant policy. is the Eiffel Studio compiler. It provid a homogeneous implementation of the Eiffel covariant policy. We u the version ISE EiffelStudio GPL Edition - linux-x It is ud with the -finalize optimization level. is the SmartEiffel compiler. It provid an heterogeneous implementation of the Eiffel covariant policy. We u the version Relea 2.4 (svn snaphsot 938) - linux-x It is ud with the -no_check optimization level. compiler provid a heterogeneous implementation for Nit covariant policy using a global compilation procs and customization. compiler provid an homogeneous implementation of the Nit covariant policy using a parate compilation procs with global linking. The generated C by both Nit engin is compiled with gcc version GNU gcc g++ (Debian ) linux-x86-64 with GNU with the -O2 optimization level. The version is the Git commit 7e44894eb766bf5d4d58c2a45356c f. 2.2 The Micro-Benchmarks The objective of the micro-benchmarks is to measure subtyping mechanisms of generics. In order to do so, the programs must, during their execution, u subtyping for generics heavily, and the other mechanisms of the language minimally. Our main constraint is that the programs must be equivalent as much as possible for all languag involved. For this reason, we u the lowt common denominator for the policy and keep to minimum the u of librari and other specific mechanisms. The tt programs are automatically generated by a script. The generation is deterministic and the same program is generated in all languag. Each generated program is made of three parts: A simple type hierarchy. The height of the hierarchy is determined by a parameter of the script. A loop of iterations. A subtype tt done at each iteration. The tt protocol. Micro-benchmarks are launched on a Intel i7-264m with a x86 64 machine installed with a Debian GNU/Linux operating system. The tt protocol is the following: 6 concutive executions of each configuration are performed, the first execution is discarded, and the minimum, maximum and average ur time of the 5 executions are kept. Ur time is measured with the GNU time command. The big loop. The big loop is done by a function and is divided into two for loops doing 5. iterations each. The el part is not executed but prevents loop optimizations. static public void t e s t ( Root a, Root b, int loops, int s t a r t ) { int x = s t a r t ; for ( int i = ; i < l o o p s ; i ++) { for ( int j = ; j < l o o p s ; j++) { i f (TYPE TEST && x >= ) { } el { x = x i + j ; a = b ; } } } System. out. p r i n t l n ( x ) ; } Figure 1 giv the performanc of each engin with a dry loop: no subtype tt is done in the loop. The TYPE_TEST placeholder is replaced by true. We tried to put every engine on the same footing but the Java JVM appli hard to control common cas optimizations [2]. Other engin reach the same performanc on the dry loop. The rults measure only the time ud by the dry loop and can be ud to approximate time consumed by subtype tts in further rults.

4 The type tt. Three kinds of type hierarchi are generated depending on the micro-benchmark objectiv. The generated type hierarchi are simple. The h parameter of the script determin the height of the hierarchy. More specifically, the following class are generated: A root class R, without attribute. A total of h linear generic subclass C i of R. Each generic subclass take only one type parameter. For the experimentation, we ud three configurations: h=2; h=4 ; h=8. In the loop, the TYPE_TEST placeholder is replaced by a tt between an instance of the deept type in the hierarchy against the middle type of the type hierarchy. Rults given in Figure 2 show subtype tt performanc regarding the height of the hierarchy: R :> C 1 R :> C 2 R :> :> C h R The same type hierarchy is ud to bench failed subtype tts. In the loop, the TYPE_TEST placeholder is replaced by the negation of the tt between an instance of the penultimate type against the last type. Rults are given in Figure 3. Rults given in Figure 4 show subtype tt performanc regarding covariance: R :> C 1 C 1 R :> C 1 C 2 R :> :> C 1 C h R Rults given in Figure 5 show subtype tt performanc regarding generic type nting level: R :> C 1 R :> C 1 C 1 R :> :> C 1 C 1 C 1 Note: In C++, class are generated fully virtual: method and specialization are all declared using the virtual keyword. In Java and C#, we u interfac instead of class to ensure the virtual machine will rely on its implementation of multiple-inheritance type tts. Same for Scala using traits. 2.3 Discussion Implementations bad on function calls are slower. The functions ud in the subtype tt implementation of g++, clang++ and EiffelStudio are ls efficient than switch ud in and SmartEiffel or than the tabl ud in. Not all the implementations of the subtype tt are time constant. g++, clang++ and EiffelStudio performanc vary with hierarchy depth. EiffelStudio performanc vary with generic typ nting and covariance depth. Failed tts are slower than succsful on in the Java JVM becau of common cas optimizations. Java us a last type checked cache for subtyping tts against interfac. In the ca of a failed tt, the cache is invalidated then the rult is calculated again and stored in the cache. Finally, Nit engin give the bt performanc on the subtype tt. The homogeneous implementation appears to be time constant on generic type hierarchy depth, nting and with covariance. The customized heterogeneous implementation of is faster than the homogeneous implementation thanks to customization. 3. THE REAL COST OF COVARIANCE In this ction we try to determine what is the real cost of covariance compared to erasure. Therefore, we confront the two politics: covariant and erad, and their rpective implementations in Nit compilers. 3.1 The Engin To make this comparison we u two implementations of the Nit compiler. is a covariant implementation using an homogeneous reprentation bad on the C# approach [7] but adapted to multiple inheritance. -e is an erad implementation bad on the Java implementation adapted to multiple inheritance. Both engin were digned to provide maximum scalability for tting and include many options. Considering policy, covariance and erasure tts can be enabled or disabled. The compilation schema of and -e is truly parate with a global linking pha. Truly parate means that each Nit module is compiled to an object file (.o) that is independent of any Nit program that may u it. On the global linking pha, tabl and some global rvic are computed in a parate object fil (the program one). Numbers and tabl of the global pha are associated with symbols that are required by compiled modul and provided by the global program. The standard linker is enough to produce a final executable. No global optimization is done on the generated machine code; the only global optimization is concerned with the construction of the various tabl. Attribute accsing and msage nding are implemented with coloring [3]. The GC ud is Boehm [1]. In practice,, and -e are combined into a single executable program called. The activation of the parate or the erasure engine is done with two options: --parate for, or --erasure for -e. In addition to and -e, we digned two other engin where casts can be disabled. u engine is executed with the additional option --no-check-covariance. This produc compiled programs that are possibly unsafe and may behave in a unspecified way. u is ud to measure the overhead of the covariant casts. -eu engine is -e executed with the additional options --no-check-covariance and --no-check-erasure-cast. Thus the implicit casts of the erasure policy are removed and the compiled programs are also possibly unsafe. -eu is ud to measure the overhead of tho casts. Moreover, u can be en as the neart approximation possible to a safe typing policy, as in C#, applied to Nit programs. It is near becau the complete runtime type information is prerved (no erasure) and no implicit casts are added. It is an approximation becau the unsafe rul still apply: (i) the existing behavior of instanceof and explicit casts must not change, otherwi the Nit programs will not behave correctly; (ii) the size of the subtype relationship is

5 g++ clang++ java gcj scala g++ clang++ java gcj scala Figure 1: Time efficiency of each engine on the dry loop g++ clang++ java gcj scala h = h = h = g++ clang++ java gcj scala Figure 2: Time efficiency of each engine considering variations of the depth of the type hierarchy. g++ clang++ java gcj scala h = h = h = g++ clang++ java gcj scala Figure 3: Time efficiency of each engine considering variations of the depth of the type hierarchy with failing subtype tts.

6 h = h = h = Figure 4: Time efficiency of each engine considering covariant subtype tts. h = h = h = Figure 5: Time efficiency of each engine considering different generic type nting levels. larger; (iii) the existing programs keep their exprsivens and really adapting them to a safe policy may require complex rewriting, some workarounds and numerous additional explicit casts. 3.2 The Tt Corpus The tt corpus consists of five programs (most of them are available in the Nit project repository):, nit, shoot, bintre and pep8analysis. is the compiler ud to implement erad and covariant genericity. The program is compiled once but executed in two different ways. The first way, nit_metrics.nit, do the global compilation of the nit_metrics program (a program that comput and displays static metrics about programs). The cond way, --parate.nit, is the parate compilation of itlf using the covariant-homogeneous implementation. Note: the two executions share the same front-end (parsing, model building, mantic verification) but this whole frontend procs only requir, in both cas, ls than 15% of total compilation time. The program is the same but the two executions are quite different. nit is the really slow and naive interpreter executed with nit -- tt_parr.nit -n rapid_type_analysis.nit. First argument, tt_parr.nit, is a small tt program that pars a Nit source file, then builds and displays its AST. The source file tted here is the Nit module implementing the RTA algorithm. Note: -n is intended to tt_parr (not the interpreter) and skips the display part. shoot is a basic shoot em up game with a complete OO game logic in a 2D environement. This program extensively us floating-point arithmetic and nted heterogeneous collections to store the game elements. For obvious reason, the version executed is headls (no display) and has no frame rate limitation. A total of 3. fram are computed. The full graphical version is not yet published. bintre is a simplistic adaptation of GCBench 2 of Hans 2 bench/applet/gcbench.java

7 Boehm except that the tre are implemented by a generic class. pep8analyzer 3 is a static analyzer that detects bugs and bad programming practic in Pep/8 4 programs. The arguments of the execution is a t of programs written by students of the cour on asmbly languag. 3.3 Generic Policy Impact We consider here the impact of the chon policy on the amount of subtype tts compiled according to the policy, and performed at runtime. We first compare the number of subtype tts compiled by both engin including implicit and explicit tts. Then we execute the compiled program and count the number and the kinds of tts performed during execution. Figure 6 giv the number of tts or casts performed at runtime. With, an important proportion of all tts are generated by the compiler to ensure safety in generic covariant calls. Since the Nit specification do not allow covariance on a parameter of a method typ with a rolved type, all implicit tts are against unrolved generic typ. -e requir more subtype tts than becau of erasure casts. This mak n, becau reads are more numerous than writ in real programs. Only a few tts on unrolved typ are required, which is becau unrolved typ for -e consist only of type tts against virtual typ, all other typ being erad. Metrics for -eu and u can be derived by removing all the implicit tts while keeping the explicit on. 3.4 Rults and Discussion The experimental protocol ud is the same than for microbenchmarks (Section 2.2). As shown in figure 7, without any consideration of generic policy, performanc are comparable between all engin. -e performs better than in almost all cas, but only for a maximum of 5.8% in nit. This behavior can be explained becau while -e has the most dynamic type tts, tho are ntially on rolved typ. However, in shoot, there is so much erasure tts that nit-e is 9,5% slower than. On the unsafe versions for -e and, we can conclude that the cost of the checks are not a major overhead. For u, it go from 1.4% in shoot to 9.1% in bintre. Since the latter ca is the least realistic program, this is not a major concern. 4. CONCLUSION In this paper, we compare the cost of the generics policy chon by a language and analyze its impacts on the subtype tt performanc. To make this comparison we create two compilers for the Nit language: applying covariant policy using a homogeneous implementation. -e applying an erad policy with erad implementation Pep/8 is a virtual CISC procsor digned to teach computer architecture and asmbly language programming principl. https://code.google.com/p/pep8-1/ We compare the time efficiency of our solution in Nit against engin for C++, C#, Eiffel, Java and Scala. Rults show that our implementations give the bt performanc compared to existing solutions. Subtyping tt implementations bad on function calls are slower than switch or tabl bad implementations. Unlike our implementations, not all the other implementations of the subtype tt are time constant with generics. We compare covariant and erad polici on existing Nit programs using and -e. We first look at the number of subtype tts compiled by both engin including implicit and explicit tts and the number of tts actually executed. Rults show that erad -e requir more subtype tts than covariant becau of erasure casts. We then look at time efficiency between the two engin and rults show that covariance do not imply significant overhead regarding subtype tt performanc. Due to the small difference between the costs of the different polici, the choice of a policy by a language digner should not be influenced by performance considerations. 5. REFERENCES [1] H.-J. Boehm and M. Spertus. Garbage collection in the next C++ standard. In Proceedings of the 29 international symposium on Memory management, ISMM 9, pag 3 38, New York, NY, USA, 29. ACM. [2] C. Click and J. Ro. Fast subtype checking in the HotSpot JVM. Proceedings of the 22 joint ACM-ISCOPE conference on Java Grande - JGI 2, pag 96 17, 22. [3] R. Ducournau. Coloring, a versatile technique for implementing object-oriented languag. Software: Practice and Experience, 41(6): , May 211. [4] R. Ducournau, F. Morandat, and J. Privat. Empirical asssment of object-oriented implementations with multiple inheritance and static typing. ACM SIGPLAN Notic, 44(1):41 6, Oct. 29. [5] R. Garcia, J. J. Arvi, A. Lumsdaine, J. Siek, and J. Willcock. An extended comparative study of language support for generic programming. Journal of Functional Programming, 17(2):145 25, 27. [6] J. Gélinas, E. Gagnon, and J. Privat. Prévention de déréférencement de référenc null dans un langagea objets. Langag et Modèl à Objets, Volume L-3:5 16, 29. [7] A. Kennedy and D. Syme. Dign and implementation of generics for the.net Common language runtime. In Proceedings of the ACM SIGPLAN 21 conference on Programming language dign and implementation - PLDI 1, pag 1 12, New York, New York, USA, 21. ACM Prs. [8] J. Privat and R. Ducournau. Raffinement de class dans l langag à objets statiquement typés. RSTI-L OBJET, 25. [9] M. Torgern. Virtual typ are statically safe. In 5th Workshop on Foundations of Object-Oriented Languag, pag 1 9, 1998.

8 explicit covariant explicit covariant erasure r. unr. 153M 1M 149M 159M.7M 66M.8M 956M.4M r. unr 269M 15M 21M 28M.3M 7M.1M 131M.3M nit r. unr 54M 14M 156M 64M 3.1M 53M.8M 14M.6M shoot r. unr. 38M 5.8M 38M 5.4M 134M bintree r. unr M 143 7M 4M 5 pep8analysis r. unr. 4.5M 17M 98M 14M M.4M 22M Figure 6: Metrics on dynamic executed subtype tts. The first two lin are for and the last three lin are for -e. explicit corrponds to the number of explicit subtype tts and casts requted by the developer; covariance reprents the covariance casts inrted by the compiler to ensure safety in covariant generic calls; erasure are casts added by the erasure compiler; r. corrponds to subtype tts against rolved typ such as List<Integer> or Map<String, Integer>; unr. is for tts against open typ [7] such as List<E> or E. -e u -eu nit shoot bintree pep8analysis e u -eu nit shoot bintre pep8analysis Figure 7: Time efficiency of compiled Nit programs according to the ud generics policy.

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111 Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo

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

Checking Access to Protected Members in the Java Virtual Machine

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/

More information

Group number 24 Joni Saarinen Daniel Kullberg

Group number 24 Joni Saarinen Daniel Kullberg C# Group number 24 Joni Saarinen Daniel Kullberg C# (pronounced C sharp) is a multi paradigm programming language developed by Microsoft. It is primarily an imperative language but support for functional

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

Objectif. Participant. Prérequis. Remarque. Programme. C# 3.0 Programming in the.net Framework. 1. Introduction to the.

Objectif. Participant. Prérequis. Remarque. Programme. C# 3.0 Programming in the.net Framework. 1. Introduction to the. Objectif This six-day instructor-led course provides students with the knowledge and skills to develop applications in the.net 3.5 using the C# 3.0 programming language. C# is one of the most popular programming

More information

Java Application Developer Certificate Program Competencies

Java Application Developer Certificate Program Competencies Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle

More information

Effective Java Programming. efficient software development

Effective Java Programming. efficient software development Effective Java Programming efficient software development Structure efficient software development what is efficiency? development process profiling during development what determines the performance of

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

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

Course 10550A: Programming in Visual Basic with Microsoft Visual Studio 2010 OVERVIEW

Course 10550A: Programming in Visual Basic with Microsoft Visual Studio 2010 OVERVIEW Course 10550A: Programming in Visual Basic with Microsoft Visual Studio 2010 OVERVIEW About this Course This course teaches you Visual Basic language syntax, program structure, and implementation by using

More information

CSCI E 98: Managed Environments for the Execution of Programs

CSCI E 98: Managed Environments for the Execution of Programs CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office

More information

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014 CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections

More information

Chapter 1 Fundamentals of Java Programming

Chapter 1 Fundamentals of Java Programming Chapter 1 Fundamentals of Java Programming Computers and Computer Programming Writing and Executing a Java Program Elements of a Java Program Features of Java Accessing the Classes and Class Members The

More information

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

More information

Object oriented programming. Lecture 13: Object orientation. Object oriented programming. Introduction. OO and ADT:s. Introduction

Object oriented programming. Lecture 13: Object orientation. Object oriented programming. Introduction. OO and ADT:s. Introduction Lecture 13: Object orientation Introduction, types of OO languages Key concepts: Encapsulation, Inheritance, Dynamic binding & polymorphism Other design issues Smalltalk OO support in C++ and Java Object

More information

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

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,

More information

Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007

Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 The Java Type System By now, you have seen a fair amount of Java. Time to study in more depth the foundations of the language,

More information

Applications to Computational Financial and GPU Computing. May 16th. Dr. Daniel Egloff +41 44 520 01 17 +41 79 430 03 61

Applications to Computational Financial and GPU Computing. May 16th. Dr. Daniel Egloff +41 44 520 01 17 +41 79 430 03 61 F# Applications to Computational Financial and GPU Computing May 16th Dr. Daniel Egloff +41 44 520 01 17 +41 79 430 03 61 Today! Why care about F#? Just another fashion?! Three success stories! How Alea.cuBase

More information

Fundamentals of Java Programming

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

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

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

Can You Trust Your JVM Diagnostic Tools?

Can You Trust Your JVM Diagnostic Tools? Can You Trust Your JVM Diagnostic Tools? Isaac Sjoblom, Tim S. Snyder, and Elena Machkasova Computer Science Discipline University of Minnesota Morris Morris, MN 56267 sjobl014@umn.edu, snyde479@umn.edu,

More information

Java (12 Weeks) Introduction to Java Programming Language

Java (12 Weeks) Introduction to Java Programming Language Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short

More information

Java (Micro) Performance Measuring

Java (Micro) Performance Measuring Java (Micro) Performance Measuring trendscope.com How to measure and test the performance of Java applications Java (Micro) Performance Measuring Thomas Uhrig Akt. Themen des Software-Engineerings 1 of

More information

C++ for Game Programmers

C++ for Game Programmers C++ for Game Programmers Course Description C++ has become one of the favourite programming language for game programmers. Reasons for wide spread acceptability of C++ are plenty, but primary reasons are,

More information

Java Review (Essentials of Java for Hadoop)

Java Review (Essentials of Java for Hadoop) Java Review (Essentials of Java for Hadoop) Have You Joined Our LinkedIn Group? What is Java? Java JRE - Java is not just a programming language but it is a complete platform for object oriented programming.

More information

Lecture Notes on Programming Languages

Lecture Notes on Programming Languages Lecture Notes on Programming Languages 1 Lecture 09: Support for Object-Oriented Programming This lecture discusses how programming languages support object-oriented programming. Topics to be covered include:

More information

Course: Introduction to Java Using Eclipse Training

Course: Introduction to Java Using Eclipse Training Course: Introduction to Java Using Eclipse Training Course Length: Duration: 5 days Course Code: WA1278 DESCRIPTION: This course introduces the Java programming language and how to develop Java applications

More information

C# 5.0 Programming in the.net Framework 6 days Course

C# 5.0 Programming in the.net Framework 6 days Course 50150B - Version: 2.1-17/09/2016 C# 5.0 Programming in the.net Framework 6 days Course Course Description This six-day instructor-led course provides students with the knowledge and skills to develop applications

More information

Chapter 12. Support for. Oi t Programming

Chapter 12. Support for. Oi t Programming Chapter 12 Support for Object-Oriented Oi t Programming Chapter 12 Topics Introduction Object-Oriented Programming Design Issues for Object-Oriented Languages Support for Object-Oriented Programming g

More information

10266A: Programming in C# with Microsoft Visual Studio 2010

10266A: Programming in C# with Microsoft Visual Studio 2010 10266A: Programming in C# with Microsoft Visual Studio 2010 Course Overview The course focuses on the C# program structure, language syntax, and implementation details with.net Framework 4.0. This course

More information

Glossary of Object Oriented Terms

Glossary of Object Oriented Terms Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction

More information

using java 1.5 generics

using java 1.5 generics Weiss_3e_04 Page 131 Wednesday, January 12, 2005 3:05 PM 4.7 implementing generic components using java 1.5 generics 131 4.7 implementing generic components using java 1.5 generics We have already seen

More information

Chapter 12. Support for Object-Oriented Programming ISBN

Chapter 12. Support for Object-Oriented Programming ISBN Chapter 12 Support for Object-Oriented Programming ISBN 0-321-33025-0 Chapter 12 Topics Introduction Object-Oriented Programming Design Issues for Object-Oriented Languages Support for Object-Oriented

More information

1/20/2016 INTRODUCTION

1/20/2016 INTRODUCTION INTRODUCTION 1 Programming languages have common concepts that are seen in all languages This course will discuss and illustrate these common concepts: Syntax Names Types Semantics Memory Management We

More information

Java Interview Questions and Answers

Java Interview Questions and Answers 1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java

More information

.NET and J2EE Intro to Software Engineering

.NET and J2EE Intro to Software Engineering .NET and J2EE Intro to Software Engineering David Talby This Lecture.NET Platform The Framework CLR and C# J2EE Platform And Web Services Introduction to Software Engineering The Software Crisis Methodologies

More information

Java in Education. Choosing appropriate tool for creating multimedia is the first step in multimedia design

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

More information

IT Fresher Training Program. Course Contents

IT Fresher Training Program. Course Contents IT Fresher Training Program Course Contents Following courses are covered as a part of Fresher Training program Introduction to.net C# ASP.NET Core Java Advance Java Concept Overview SQL Server & MySQL

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

14/05/2013 Ed Merks EDL V1.0 1

14/05/2013 Ed Merks EDL V1.0 1 14/05/2013 Ed Merks EDL V1.0 1 Java Performance is Complex Write once run everywhere Java is slow because it s interpreted No, there are Just In Time (JIT) compilers Different hardware and platforms Different

More information

Computing Concepts with Java Essentials

Computing Concepts with Java Essentials 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann

More information

C Compiler Targeting the Java Virtual Machine

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

More information

C# 3.0 Programming in the.net Framework (MS50150)

C# 3.0 Programming in the.net Framework (MS50150) Duration: 6 days Course Description: This course provides students with the knowledge and skills to develop applications in the.net Framework 3.5 using the C# 3.0 programming language. The C# 3.0 revision

More information

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Handout 1 CS603 Object-Oriented Programming Fall 15 Page 1 of 11 Handout 1 Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Java

More information

An Exception Monitoring System for Java

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, chang@sookmyung.ac.kr Abstract. Exception

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

Programming and Software Development CTAG Alignments

Programming and Software Development CTAG Alignments Programming and Software Development CTAG Alignments This document contains information about four Career-Technical Articulation Numbers (CTANs) for Programming and Software Development Career-Technical

More information

SL-110: Fundamentals of Java Revision 15 October Sun Educational Services Instructor-Led Course Description

SL-110: Fundamentals of Java Revision 15 October Sun Educational Services Instructor-Led Course Description Sun Educational Services Instructor-Led Course Description Fundamentals of Java SL-110 The Fundamentals of the Java course provides students, with little or no programming experience, with the basics of

More information

AP Computer Science Java Subset

AP Computer Science Java Subset APPENDIX A AP Computer Science Java Subset The AP Java subset is intended to outline the features of Java that may appear on the AP Computer Science A Exam. The AP Java subset is NOT intended as an overall

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

Oracle Solaris Studio Code Analyzer

Oracle Solaris Studio Code Analyzer Oracle Solaris Studio Code Analyzer The Oracle Solaris Studio Code Analyzer ensures application reliability and security by detecting application vulnerabilities, including memory leaks and memory access

More information

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

Link-Time Static Analysis for Efficient Separate Compilation of Object-Oriented Languages

Link-Time Static Analysis for Efficient Separate Compilation of Object-Oriented Languages Link-Time Static Analysis for Efficient Separate Compilation of Object-Oriented Languages Jean Privat Roland Ducournau LIRMM CNRS/Université Montpellier II France Program Analysis for Software Tools and

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

The C Programming Language course syllabus associate level

The C Programming Language course syllabus associate level TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming

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

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

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm

More information

RTAP Database Lifecycle Management

RTAP Database Lifecycle Management SYSTEMS INC. RTAP Database Lifecycle Management Abstract: This paper will describe the typical RTAP database lifecycle and how the tessernet Systems Inc. tools can make this process easier to manage and

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

Colligens: A Tool to Support the Development of Preprocessor-based Software Product Lines in C

Colligens: A Tool to Support the Development of Preprocessor-based Software Product Lines in C Colligens: A Tool to Support the Development of Preprocessor-based Software Product Lines in C Flávio Medeiros 1, Thiago Lima 2, Francisco Dalton 2, Márcio Ribeiro 2, Rohit Gheyi 1, Baldoino Fonseca 2

More information

Dynamic Web Programming BUILDING WEB APPLICATIONS USING ASP.NET, AJAX AND JAVASCRIPT

Dynamic Web Programming BUILDING WEB APPLICATIONS USING ASP.NET, AJAX AND JAVASCRIPT Dynamic Web Programming BUILDING WEB APPLICATIONS USING ASP.NET, AJAX AND JAVASCRIPT AGENDA 1. Introduction to Web Applications and ASP.net 1.1 History of Web Development 1.2 Basic ASP.net processing (ASP

More information

C# Programming in the.net Framework 2.0

C# Programming in the.net Framework 2.0 C# Programming in the.net Framework 2.0 50152: C# Programming in the.net Framework 2.0 (5 Days) About this Course This five-day instructor-led course provides students with the knowledge and skills to

More information

C# and Other Languages

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

More information

Chapter 12 Programming Concepts and Languages

Chapter 12 Programming Concepts and Languages Chapter 12 Programming Concepts and Languages Chapter 12 Programming Concepts and Languages Paradigm Publishing, Inc. 12-1 Presentation Overview Programming Concepts Problem-Solving Techniques The Evolution

More information

Java Programming. Binnur Kurt binnur.kurt@ieee.org. Istanbul Technical University Computer Engineering Department. Java Programming. Version 0.0.

Java Programming. Binnur Kurt binnur.kurt@ieee.org. Istanbul Technical University Computer Engineering Department. Java Programming. Version 0.0. Java Programming Binnur Kurt binnur.kurt@ieee.org Istanbul Technical University Computer Engineering Department Java Programming 1 Version 0.0.4 About the Lecturer BSc İTÜ, Computer Engineering Department,

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

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

Design by Contract beyond class modelling

Design by Contract beyond class modelling Design by Contract beyond class modelling Introduction Design by Contract (DbC) or Programming by Contract is an approach to designing software. It says that designers should define precise and verifiable

More information

What Is Specific in Load Testing?

What Is Specific in Load Testing? What Is Specific in Load Testing? Testing of multi-user applications under realistic and stress loads is really the only way to ensure appropriate performance and reliability in production. Load testing

More information

Programming with the Microsoft.NET Framework Using Microsoft Visual Studio 2005 (VB)

Programming with the Microsoft.NET Framework Using Microsoft Visual Studio 2005 (VB) Programming with the Microsoft.NET Framework Using Microsoft Visual Studio 2005 (VB) Course Number: 4995 Length: 5 Day(s) Certification Exam There are no exams associated with this course. Course Overview

More information

Expansion of a Framework for a Data- Intensive Wide-Area Application to the Java Language

Expansion of a Framework for a Data- Intensive Wide-Area Application to the Java Language Expansion of a Framework for a Data- Intensive Wide-Area Application to the Java Sergey Koren Table of Contents 1 INTRODUCTION... 3 2 PREVIOUS RESEARCH... 3 3 ALGORITHM...4 3.1 APPROACH... 4 3.2 C++ INFRASTRUCTURE

More information

pbuilder Debian Conference 2004

pbuilder Debian Conference 2004 pbuilder Debian Conference 2004 Junichi Uekawa May 2004 1 Introduction pbuilder[1] is a tool that is used for Building Debian packages in a clean environment inside chroot 1. In this paper, the background

More information

Enterprise Service Bus

Enterprise Service Bus We tested: Talend ESB 5.2.1 Enterprise Service Bus Dr. Götz Güttich Talend Enterprise Service Bus 5.2.1 is an open source, modular solution that allows enterprises to integrate existing or new applications

More information

Java Memory and Intro to OOP

Java Memory and Intro to OOP + Java Memory and Intro to OOP + What is Java? Programming language Standard libraries ex. Math.random() Tools: compiler, runtime, others + What is the compiler? AKA javac A compiler is a program that

More information

Programming Languages & Tools

Programming Languages & Tools 4 Programming Languages & Tools Almost any programming language one is familiar with can be used for computational work (despite the fact that some people believe strongly that their own favorite programming

More information

A Java-based system support for distributed applications on the Internet

A Java-based system support for distributed applications on the Internet A Java-based system support for distributed applications on the Internet D. Hagimont 1, D. Louvegnies 2 SIRAC Project INRIA, 655 av. de l Europe, 38330 Montbonnot Saint-Martin, France Abstract: We have

More information

Object Oriented Database Management System for Decision Support System.

Object Oriented Database Management System for Decision Support System. International Refereed Journal of Engineering and Science (IRJES) ISSN (Online) 2319-183X, (Print) 2319-1821 Volume 3, Issue 6 (June 2014), PP.55-59 Object Oriented Database Management System for Decision

More information

Leveraging the Eclipse TPTP* Agent Infrastructure

Leveraging the Eclipse TPTP* Agent Infrastructure 2005 Intel Corporation; made available under the EPL v1.0 March 3, 2005 Eclipse is a trademark of Eclipse Foundation, Inc 1 Leveraging the Eclipse TPTP* Agent Infrastructure Andy Kaylor Intel Corporation

More information

INTRODUCTION TO JAVA PROGRAMMING LANGUAGE

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,

More information

Test What You ve Built

Test What You ve Built Test What You ve Built About Your Presenter IBM i Professional for 16 Years. Primary Focus is IBM i Engineering / Programming Well Versed in 2E. Well Versed in RPG (All Flavors) Well Versed in CM Products

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

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali Software development life cycle Software life cycle: Software Engineering - II ITNP92 - Object Oriented Software Design Dr Andrea Bracciali Module Co-ordinator 4B86 abb@cs.stir.ac.uk Spring 2014 (elicitation)

More information

Syntax Check of Embedded SQL in C++ with Proto

Syntax Check of Embedded SQL in C++ with Proto Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, 2010. Vol. 2. pp. 383 390. Syntax Check of Embedded SQL in C++ with Proto Zalán Szűgyi, Zoltán Porkoláb

More information

A Thread Monitoring System for Multithreaded Java Programs

A Thread Monitoring System for Multithreaded Java Programs A Thread Monitoring System for Multithreaded Java Programs Sewon Moon and Byeong-Mo Chang Department of Computer Science Sookmyung Women s University, Seoul 140-742, Korea wonsein@nate.com, chang@sookmyung.ac.kr

More information

Construction Principles and Design Patterns. Flyweight, Bridge, Builder

Construction Principles and Design Patterns. Flyweight, Bridge, Builder Construction Principles and Design Patterns Flyweight, Bridge, Builder 1 The Flyweight Design Pattern: Structure Use: To avoid employing a large number of objects with similar state When objects with intrinsic

More information

Python, C++ and SWIG

Python, C++ and SWIG Robin Dunn Software Craftsman O Reilly Open Source Convention July 21 25, 2008 Slides available at http://wxpython.org/oscon2008/ Python & C++ Comparisons Each is a general purpose programming language,

More information

1 How to Monitor Performance

1 How to Monitor Performance 1 How to Monitor Performance Contents 1.1. Introduction... 1 1.1.1. Purpose of this How To... 1 1.1.2. Target Audience... 1 1.2. Performance - some theory... 1 1.3. Performance - basic rules... 3 1.4.

More information

EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!)

EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!) EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!) ALON ZAKAI (MOZILLA) @kripken JavaScript..? At the LLVM developer's conference..? Everything compiles into LLVM bitcode The web is everywhere, and

More information

Course 10266A: Programming in C# with Microsoft Visual Studio 2010 OVERVIEW

Course 10266A: Programming in C# with Microsoft Visual Studio 2010 OVERVIEW Course 10266A: Programming in C# with Microsoft Visual Studio 2010 OVERVIEW About this Course The course focuses on C# program structure, language syntax, and implementation detailswith.net Framework 4.0.

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

NVIDIA CUDA GETTING STARTED GUIDE FOR MAC OS X

NVIDIA CUDA GETTING STARTED GUIDE FOR MAC OS X NVIDIA CUDA GETTING STARTED GUIDE FOR MAC OS X DU-05348-001_v6.5 August 2014 Installation and Verification on Mac OS X TABLE OF CONTENTS Chapter 1. Introduction...1 1.1. System Requirements... 1 1.2. About

More information

AP Computer Science A - Syllabus Overview of AP Computer Science A Computer Facilities

AP Computer Science A - Syllabus Overview of AP Computer Science A Computer Facilities AP Computer Science A - Syllabus Overview of AP Computer Science A Computer Facilities The classroom is set up like a traditional classroom on the left side of the room. This is where I will conduct my

More information

11.1 inspectit. 11.1. inspectit

11.1 inspectit. 11.1. inspectit 11.1. inspectit Figure 11.1. Overview on the inspectit components [Siegl and Bouillet 2011] 11.1 inspectit The inspectit monitoring tool (website: http://www.inspectit.eu/) has been developed by NovaTec.

More information

PERFORMANCE MONITORING OF JAVA COMPONENT-ORIENTED DISTRIBUTED APPLICATIONS

PERFORMANCE MONITORING OF JAVA COMPONENT-ORIENTED DISTRIBUTED APPLICATIONS PERFORMANCE MONITORING OF JAVA COMPONENT-ORIENTED DISTRIBUTED APPLICATIONS Adrian Mos, John Murphy Performance Engineering Lab, Dublin City University Glasnevin, Dublin 9, Ireland Tel: +353 1 700-8762,

More information

Dsc+Mock: A Test Case + Mock Class Generator in Support of Coding Against Interfaces

Dsc+Mock: A Test Case + Mock Class Generator in Support of Coding Against Interfaces Dsc+Mock: A Test Case + Mock Class Generator in Support of Coding Against Interfaces Mainul Islam, Christoph Csallner Computer Science and Engineering Department University of Texas at Arlington Arlington,

More information

Chapter 1. Dr. Chris Irwin Davis Email: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages

Chapter 1. Dr. Chris Irwin Davis Email: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming

More information

Outline. hardware components programming environments. installing Python executing Python code. decimal and binary notations running Sage

Outline. hardware components programming environments. installing Python executing Python code. decimal and binary notations running Sage Outline 1 Computer Architecture hardware components programming environments 2 Getting Started with Python installing Python executing Python code 3 Number Systems decimal and binary notations running

More information