A Deep Dive into the Void
|
|
- Kenneth Richard
- 6 years ago
- Views:
Transcription
1 A Deep Dive into the Void Java ready Advanced null Type Annotations Stephan Herrmann GK Software
2 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 2 An Old Problem 1965 Tony Hoare introduced Null references in ALGOL W simply because it was so easy to implement Photograph by Rama, Wikimedia Commons, Cc-by-sa-2.0-fr
3 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 3 Still Leading the Charts
4 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 4 An Expensive Problem The Billion Dollar Mistake Photograph by Rama, Wikimedia Commons, Cc-by-sa-2.0-fr
5 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 5 Many Steps to a Solution do nothing: booooooooom recognize patterns booooooom local flow analysis Since ALGOL W Since Eclipse boooom method contracts boom type checking Since Eclipse Juno / Java Since Eclipse Luna / Java 2014
6 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 7 Alternative Strategy Optional a polite way of saying: this value could be missing supports null-less programming doesn't help against existing nulls viable option for from-scratch clean-room new software requires all software to be re-written
7 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # Obviously Correct Typechecking for null analysis Two kinds of types those that include null those that don't This is OK: These are type errors: Dog? barkandreturn(dog dog) { dog.bark(); return null; } Dog barkandreturn(dog? dog) { dog.bark(); return null; }
8 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 9 Typesystem Construction Kit Strategy Richer types add more information Richer type checking new typing rules Stronger guarantees proven absence of errors no methodnotunderstood no ClassCastException JSR 30 org.eclipse.jdt.annotation_2.0 ECJ checks nullness compatibility & flow Stronger guarantees no NPE no SWTExecption(thread)
9 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 10 Ternary or Boolean? get 3 kinds of types green, red, legacy Interfacing with legacy code like using raw types in Java 5+ Null Null type type safety (type (type annotations): The The expression of of type type 'List<String>' needs needs unchecked conversion to to conform to to '@NonNull List<@NonNull String>' Nirwana: per class / interface per package (use package-info.java) let the compiler complain about And back to 2014
10 Where is: Everywhere? DefaultLocation declarations TYPE_USE PARAMETER RETURN_TYPE FIELD TYPE_PARAMETER TYPE_BOUND TYPE_ARGUMENT }) class Foo <T extends Bar> { Foo<String> stringfoo; Bar[][] bars; Bar getbar(string name) { return bar; } } Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 11
11 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 12 Where is: Everywhere? DefaultLocation Not supported non-null by construction new throws, catch argument this receiver in method reference would need runtime evaluation instanceof & cast void void make(@a Foo Foo this) Object::toString no usefull interpretation prefix of static Integer.MAX_VALUE future type declaration
12 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 13 Where is: Everywhere? Wildcards Wildcards and and the the use use of of type type variables variables are are always always excluded excluded from from NonNullByDefault. NonNullByDefault. DefaultLocation Not supported No default local variables better covered by flow analysis on type variables & wildcards these obtain nullness via other channels
13 Where is: Everywhere? DefaultLocation declarations TYPE_USE PARAMETER RETURN_TYPE FIELD TYPE_PARAMETER TYPE_BOUND TYPE_ARGUMENT }) class Foo <T extends Bar> { Foo<String> stringfoo; Bar[][] bars; Bar getbar(string name) { return bar; } } Default default Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 14
14 Where is: Everywhere? DefaultLocation declarations TYPE_USE PARAMETER RETURN_TYPE FIELD TYPE_PARAMETER TYPE_BOUND TYPE_ARGUMENT }) class Foo <T extends Bar> { Foo<String> stringfoo; Bar[][] bars; Bar getbar(string name) { return bar; } } Default default Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 15
15 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 16 Great Expectations ECJ will not make your program null safe It will hurt pin-point design decisions you failed to make contradictory assumptions type checker will need your help a false positive? rules & obligations Application development free to move obligations around Tension in API design strict for effective null checking flexible for wide range of re-use
16 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 17 Generic API The classic declaration Unconstrained type parameter: public interface List<T> { } Client side Free to choose the type argument: List<@NonNull Person> List<@Nullable Person> Implementer No knowledge about free type variable T Must assume the worst need to check on dereference cannot assign null to a T variable
17 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 1 Constraining Type Parameters Admit types: annotated type bound class MyGenericClass1<T Object> legal String Object X X annotated Admit types: type parameter (declaration) we can't say <T Object> class MyGenericClass2<@Nullable T> (interpreted as both upper and lower bound)
18 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 19 Puzzle 1 Legal or class Tricky<T> { } void foo(t t) {} void test() { foo(null); } where apply type parameter? no method parameter? generally yes but not to a type variable Null type mismatch (type annotations): 'null' is is not not compatible to to the the free type variable 'T' 'T' Wildcards Wildcards and and the the use use of of type type variables variables are are always always excluded excluded from from NonNullByDefault. NonNullByDefault.
19 Puzzle 2 What is class Tricky<T> { void foo(@nullable T t) {} void test() { foo(null); } } You said 'T' could mean anything so what T? e.g., if T String? variant of whatever T represents String Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 20
20 Stephan Herrmann: A Deep Dive into the Void - EclipseCon Europe 2014 # 21 DEMO Double Inference External Annotations
Using null type annotations in practice
Using null type annotations in practice Till Brychcy, Mercateo What they are, why and when to use them @Nullable vs. java.util.optional Configuration choices Switching from declaration annotations to type
More informationCSE 331 Software Design and Implementation. Lecture 14 Generics 2
CSE 331 Software Design and Implementation Lecture 14 Generics 2 James Wilcox / Winter 2016 Hi, I m James! Big picture Last time: Generics intro Subtyping and Generics Using bounds for more flexible subtyping
More informationAdvances in Programming Languages
O T Y H Advances in Programming Languages APL8: ESC/Java2 David Aspinall (including slides by Ian Stark and material adapted from ESC/Java2 tutorial by David Cok, Joe Kiniry and Erik Poll) School of Informatics
More informationThe Hack programming language:
The Hack programming language: Types for PHP Andrew Kennedy Facebook Facebook s PHP Codebase 350,000 files >10,000,000 LoC (www.facebook.com & internally) 1000s of commits per day, 2 releases per day Anecdotally,
More informationCSE 331 Software Design and Implementation. Lecture 14 Generics 2
CSE 331 Software Design and Implementation Lecture 14 Generics 2 Zach Tatlock / Spring 2018 Big picture Last time: Generics intro Subtyping and Generics Using bounds for more flexible subtyping Using wildcards
More informationCS61B Lecture #25: Java Generics. Last modified: Thu Oct 18 21:04: CS61B: Lecture #25 1
CS61B Lecture #25: Java Generics Last modified: Thu Oct 18 21:04:53 2018 CS61B: Lecture #25 1 The Old Days Java library types such as List didn t used to be parameterized. All Lists were lists of Objects.
More informationOperators and Expressions
Operators and Expressions Conversions. Widening and Narrowing Primitive Conversions Widening and Narrowing Reference Conversions Conversions up the type hierarchy are called widening reference conversions
More informationCS61B Lecture #25: Java Generics. Last modified: Thu Oct 19 19:36: CS61B: Lecture #25 1
CS61B Lecture #25: Java Generics Last modified: Thu Oct 19 19:36:29 2017 CS61B: Lecture #25 1 The Old Days Java library types such as List didn t used to be parameterized. All Lists were lists of Objects.
More informationThe Checker Framework: pluggable static analysis for Java
The Checker Framework: pluggable static analysis for Java http://checkerframework.org/ Werner Dietl University of Waterloo https://ece.uwaterloo.ca/~wdietl/ Joint work with Michael D. Ernst and many others.
More informationAnnouncements. Lecture 15 Generics 2. Announcements. Big picture. CSE 331 Software Design and Implementation
CSE 331 Software Design and Implementation Lecture 15 Generics 2 Announcements Leah Perlmutter / Summer 2018 Announcements Quiz 5 is due tomorrow Homework 6 due tomorrow Section tomorrow! Subtyping now
More informationCSE 331 Software Design and Implementation. Lecture 15 Generics 2
CSE 331 Software Design and Implementation Lecture 15 Generics 2 Leah Perlmutter / Summer 2018 Announcements Announcements Quiz 5 is due tomorrow Homework 6 due tomorrow Section tomorrow! Subtyping now
More informationExercise 8 Parametric polymorphism November 18, 2016
Concepts of Object-Oriented Programming AS 2016 Exercise 8 Parametric polymorphism November 18, 2016 Task 1 Consider the following Scala classes: class A class B extends A class P1[+T] class P2[T
More informationOutline. Java Models for variables Types and type checking, type safety Interpretation vs. compilation. Reasoning about code. CSCI 2600 Spring
Java Outline Java Models for variables Types and type checking, type safety Interpretation vs. compilation Reasoning about code CSCI 2600 Spring 2017 2 Java Java is a successor to a number of languages,
More information1 Shyam sir JAVA Notes
1 Shyam sir JAVA Notes 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
More informationJava Generics -- an introduction. Based on https://docs.oracle.com/javase/tutorial/java/generics/why.html
Java Generics -- an introduction Based on https://docs.oracle.com/javase/tutorial/java/generics/why.html Generics vs. Templates Templates in C++ are compiled into unique code based on the types passed
More informationAdvances in Programming Languages
Advances in Programming Languages Lecture 12: Practical Tools for Java Correctness Ian Stark School of Informatics The University of Edinburgh Friday 31 November 2014 Semester 1 Week 7 http://www.inf.ed.ac.uk/teaching/courses/apl
More informationMixed projects: Java + Kotlin. Svetlana Isakova
Mixed projects: Java + Kotlin Svetlana Isakova Compilation of a mixed project *.kt kotlinc *.class *.jar *.java javac *.class Nullability Nullability Type =? Java Kotlin Nullability annotations @Nullable
More informationSrikanth Sankaran IBM India. Stephan Herrmann GK Software. Noopur Gupta. IBM India. EclipseCon NA 2014 JDT Embraces Lambda Expressions
Srikanth Sankaran IBM India Stephan Herrmann GK Software Noopur Gupta IBM India EclipseCon NA 2014 JDT Embraces Lambda Expressions 1 Java 8 features: JSR335 - Project Lambda Lambda Expressions & Method
More informationMetadata Features in Java SE 8
Metadata Features in Java SE 8 Joel Borggrén-Franck Java Platform Group Oracle @joelbf Metadata Features in Java SE 8 Joel Borggrén-Franck Java Platform Group Oracle @joelbf First, a message from our lawyers:
More informationCode verification. CSE 331 University of Washington. Michael Ernst
Code verification CSE 331 University of Washington Michael Ernst Specification and verification To find an error, compare two things Mental model Verification Specification Program Example input & output
More informationObjects and Iterators
Objects and Iterators Can We Have Data Structures With Generic Types? What s in a Bag? All our implementations of collections so far allowed for one data type for the entire collection To accommodate a
More informationCS61B Lecture #23. Today: Java support for generic programming. Readings for today: A Java Reference, Chapter 10.
CS61B Lecture #23 Announcements: Josh s office hours are now back in his office. HW6 now due Saturday. Partial solar eclipse tomorrow, starting at 1:52PM. Next one in August, 2017. See http://www.timeanddate.com/eclipse/list.html
More informationCS61B Lecture #24. Today: Java support for generic programming. Readings for today: A Java Reference, Chapter 10.
CS61B Lecture #24 Today: Java support for generic programming Readings for today: A Java Reference, Chapter 10. Readings for Monday: Data Structures, 6.4. Last modified: Fri Oct 19 19:33:03 2012 CS61B:
More informationStatus Report. JSR-305: Annotations for Software Defect Detection. William Pugh Professor
JSR-305: Annotations for Software Defect Detection William Pugh Professor Status Report Univ. of Maryland pugh@cs.umd.edu http://www.cs.umd.edu/~pugh/ 1 This JSR is under active development Slides have
More informationProgram Verification (6EC version only)
Program Verification (6EC version only) Erik Poll Digital Security Radboud University Nijmegen Overview Program Verification using Verification Condition Generators JML a formal specification language
More informationArgument Passing All primitive data types (int etc.) are passed by value and all reference types (arrays, strings, objects) are used through refs.
Local Variable Initialization Unlike instance vars, local vars must be initialized before they can be used. Eg. void mymethod() { int foo = 42; int bar; bar = bar + 1; //compile error bar = 99; bar = bar
More informationCSE 331. Generics (Parametric Polymorphism)
CSE 331 Generics (Parametric Polymorphism) slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D. Notkin, R. Mercer, Wikipedia http://www.cs.washington.edu/331/ 1 Parametric polymorphism
More informationTypes and Type Inference
CS 242 2012 Types and Type Inference Notes modified from John Mitchell and Kathleen Fisher Reading: Concepts in Programming Languages, Revised Chapter 6 - handout on Web!! Outline General discussion of
More informationPrinciples of Software Construction: Objects, Design, and Concurrency (Part 2: Designing (Sub )Systems)
Principles of Software Construction: Objects, Design, and Concurrency (Part 2: Designing (Sub )Systems) More Analysis for Functional Correctness Jonathan Aldrich Charlie Garrod School of Computer Science
More informationJSR-305: Annotations for Software Defect Detection
JSR-305: Annotations for Software Defect Detection William Pugh Professor Univ. of Maryland pugh@cs.umd.edu http://www.cs.umd.edu/~pugh/ 1 Why annotations? Static analysis can do a lot can even analyze
More informationJava Design Goals. Lecture 32: Java. Java Original implementations slow! Exceptions & Subtyping. - void method readfiles() throws IOException {...}!
Java Design Goals Lecture 32: Java CSC 131 Fall, 2014 Kim Bruce Portability across platforms Reliability Safety (no viruses) Dynamic Linking Multithreaded execution Simplicity and Familiarity Efficiency
More informationChecked and Unchecked Exceptions in Java
Checked and Unchecked Exceptions in Java Introduction In this article from my free Java 8 course, I will introduce you to Checked and Unchecked Exceptions in Java. Handling exceptions is the process by
More informationOracle Corporation
1 2011 Oracle Corporation Making heads and tails of Project Coin, Small language changes in JDK 7 Joseph D. Darcy Presenting with LOGO 2 2011 Oracle Corporation Project Coin is a suite of language and
More informationStatic program checking and verification
Chair of Software Engineering Software Engineering Prof. Dr. Bertrand Meyer March 2007 June 2007 Slides: Based on KSE06 With kind permission of Peter Müller Static program checking and verification Correctness
More informationCSE 331 Software Design & Implementation
CSE 331 Software Design & Implementation Hal Perkins Autumn 2013 Generics (Polymorphism) (Slides by Mike Ernst and David Notkin) 1 Varieties of abstraction Abstraction over computation: procedures int
More informationToday. Instance Method Dispatch. Instance Method Dispatch. Instance Method Dispatch 11/29/11. today. last time
CS2110 Fall 2011 Lecture 25 Java program last time Java compiler Java bytecode (.class files) Compile for platform with JIT Interpret with JVM Under the Hood: The Java Virtual Machine, Part II 1 run native
More informationLecture 13: Subtyping
Lecture 13: Subtyping Polyvios Pratikakis Computer Science Department, University of Crete Type Systems and Programming Languages Pratikakis (CSD) Subtyping CS546, 2018-2019 1 / 15 Subtyping Usually found
More informationExercise 13 Self-Study Exercise Sheet
Concepts of Object-Oriented Programming AS 2017 Exercise 13 Self-Study Exercise Sheet NOTE: This exercise sheet will not be discussed in an exercise session. We publish it now together with the solution
More informationConcepts of Object-Oriented Programming Peter Müller
Concepts of Object-Oriented Programming Peter Müller Chair of Programming Methodology Autumn Semester 2017 1.2 Introduction Core Concepts 2 Meeting the Requirements Cooperating Program Parts with Well-Defined
More informationUsing Type Annotations to Improve Your Code
Using Type Annotations to Improve Your Code Birds-of-a-Feather Session Werner Dietl, University of Waterloo Michael Ernst, University of Washington Open for questions Survey: Did you attend the tutorial?
More informationCollections, Maps and Generics
Collections API Collections, Maps and Generics You've already used ArrayList for exercises from the previous semester, but ArrayList is just one part of much larger Collections API that Java provides.
More informationDD2460 Software Safety and Security: Part III Exercises session 2: Type + Jif
DD2460 Software Safety and Security: Part III Exercises session 2: Type + Jif Gurvan Le Guernic adapted from Aslan Askarov DD2460 (III, E2) February 22 st, 2012 1 Noninterference type systems challenge
More informationPrinciples of Programming Languages
Principles of Programming Languages Lesson 14 Type Checking Collaboration and Management Dana Fisman www.cs.bgu.ac.il/~ppl172 1 Type Checking We return to the issue of type safety we discussed informally,
More informationPolymorphic (Generic) Programming in Java
Polymorphic (Generic) Programming in Java We have used the fact that Java classes are arranged as a tree with the built in class Object at the root to write generic or polymorphic code such as the following
More informationCOE318 Lecture Notes Week 10 (Nov 7, 2011)
COE318 Software Systems Lecture Notes: Week 10 1 of 5 COE318 Lecture Notes Week 10 (Nov 7, 2011) Topics More about exceptions References Head First Java: Chapter 11 (Risky Behavior) The Java Tutorial:
More informationData Structure. Recitation IV
Data Structure Recitation IV Topic Java Generics Java error handling Stack Lab 2 Java Generics The following code snippet without generics requires casting: List list = new ArrayList(); list.add("hello");
More informationCS/ENGRD 2110 SPRING 2018
1 The fattest knight at King Arthur's round table was Sir Cumference. He acquired his size from too much pi. CS/ENGRD 2110 SPRING 2018 Lecture 6: Consequence of type, casting; function equals http://courses.cs.cornell.edu/cs2110
More informationStatic Analysis in C/C++ code with Polyspace
1 Static Analysis in C/C++ code with Polyspace Yongchool Ryu Application Engineer gary.ryu@mathworks.com 2016 The MathWorks, Inc. 2 Agenda Efficient way to find problems in Software Category of Static
More informationExercise 12 Initialization December 15, 2017
Concepts of Object-Oriented Programming AS 2017 Exercise 12 Initialization December 15, 2017 Task 1 Consider a Java class Vector, representing a 2 dimensional vector: public class Vector { public Number!
More informationRules and syntax for inheritance. The boring stuff
Rules and syntax for inheritance The boring stuff The compiler adds a call to super() Unless you explicitly call the constructor of the superclass, using super(), the compiler will add such a call for
More informationSchool of Computer Science CPS109 Course Notes 5 Alexander Ferworn Updated Fall 15
Table of Contents 1 INTRODUCTION... 1 2 IF... 1 2.1 BOOLEAN EXPRESSIONS... 3 2.2 BLOCKS... 3 2.3 IF-ELSE... 4 2.4 NESTING... 5 3 SWITCH (SOMETIMES KNOWN AS CASE )... 6 3.1 A BIT ABOUT BREAK... 7 4 CONDITIONAL
More informationEngineering Abstractions in Model Checking and Testing. Michael Achenbach Klaus Ostermann
Engineering Abstractions in Model Checking and Testing Michael Achenbach Klaus Ostermann 1 This Talk What is abstraction engineering? How can we integrate abstractions with current tools? What more is
More informationStronger vs Weaker (one more time!) Requires more? Promises more? (stricter specifications on what the effects entail)
Final review Stronger vs Weaker (one more time!) Requires more? Promises more? (stricter specifications on what the effects entail) Stronger vs Weaker (one more time!) Requires more? weaker Promises more?
More informationTypes and Type Inference
Types and Type Inference Mooly Sagiv Slides by Kathleen Fisher and John Mitchell Reading: Concepts in Programming Languages, Revised Chapter 6 - handout on the course homepage Outline General discussion
More informationConcepts of Object-Oriented Programming Peter Müller
Concepts of Object-Oriented Programming Peter Müller Chair of Programming Methodology Autumn Semester 2017 1.2 Introduction Core Concepts 2 Meeting the Requirements Cooperating Program Parts with Well-Defined
More informationCSCE 314 Programming Languages
CSCE 314 Programming Languages! Java Generics II Dr. Hyunyoung Lee!!! 1 Type System and Variance Within the type system of a programming language, variance refers to how subtyping between complex types
More informationSuper-Classes and sub-classes
Super-Classes and sub-classes Subclasses. Overriding Methods Subclass Constructors Inheritance Hierarchies Polymorphism Casting 1 Subclasses: Often you want to write a class that is a special case of an
More informationAgenda. Objects and classes Encapsulation and information hiding Documentation Packages
Preliminaries II 1 Agenda Objects and classes Encapsulation and information hiding Documentation Packages Inheritance Polymorphism Implementation of inheritance in Java Abstract classes Interfaces Generics
More information8 Understanding Subtyping
Object-Oriented Design Lecture 8 CS 3500 Fall 2010 (Pucella) Friday/Tuesday, Oct 8/12, 2010 8 Understanding Subtyping Subtpying is a great way to enable client-side reuse, requiring a client to write a
More informationJavarifier: inference of reference immutability
print(object x) { print(@readonly Object x) { Javarifier: inference of reference immutability Jaime Quinonez Matthew S. Tschantz Michael D. Ernst MIT Security code in JDK 1.1 class Class { private Object[]
More informationESC/Java2 Warnings David Cok, Joe Kiniry, and Erik Poll Eastman Kodak Company, University College Dublin, and Radboud University Nijmegen
ESC/Java2 Warnings David Cok, Joe Kiniry, and Erik Poll Eastman Kodak Company, University College Dublin, and Radboud University Nijmegen David Cok, Joe Kiniry & Erik Poll - ESC/Java2 & JML Tutorial p.1/??
More informationCSCI 261 Computer Science II
CSCI 261 Computer Science II Department of Mathematics and Computer Science Lecture 2 Exception Handling New Topic: Exceptions in Java You should now be familiar with: Advanced object-oriented design -
More informationPreventing Errors Before They Happen The Checker Framework
Preventing Errors Before They Happen The Checker Framework http://checkerframework.org/ Twitter: @CheckerFrmwrk Live demo: http://eisop.uwaterloo.ca/live Werner Dietl, University of Waterloo Michael Ernst,
More informationCS108, Stanford Handout #8. Java Generics
CS108, Stanford Handout #8 Fall, 2007-08 Nick Parlante Java Generics Java generics (added in version 5) are a mixed bag. Some uses of generics are simple to understand and make the code cleaner. They are
More informationCSCI 136 Written Exam #0 Fundamentals of Computer Science II Spring 2013
CSCI 136 Written Exam #0 Fundamentals of Computer Science II Spring 2013 Name: This exam consists of 5 problems on the following 7 pages. You may use your single-side hand-written 8 ½ x 11 note sheet during
More informationLecture Overview. [Scott, chapter 7] [Sebesta, chapter 6]
1 Lecture Overview Types 1. Type systems 2. How to think about types 3. The classification of types 4. Type equivalence structural equivalence name equivalence 5. Type compatibility 6. Type inference [Scott,
More informationIntroduction to Typed Racket. The plan: Racket Crash Course Typed Racket and PL Racket Differences with the text Some PL Racket Examples
Introduction to Typed Racket The plan: Racket Crash Course Typed Racket and PL Racket Differences with the text Some PL Racket Examples Getting started Find a machine with DrRacket installed (e.g. the
More informationCS558 Programming Languages
CS558 Programming Languages Winter 2017 Lecture 7b Andrew Tolmach Portland State University 1994-2017 Values and Types We divide the universe of values according to types A type is a set of values and
More information5/23/2015. Core Java Syllabus. VikRam ShaRma
5/23/2015 Core Java Syllabus VikRam ShaRma Basic Concepts of Core Java 1 Introduction to Java 1.1 Need of java i.e. History 1.2 What is java? 1.3 Java Buzzwords 1.4 JDK JRE JVM JIT - Java Compiler 1.5
More informationExercise 13 Self-Study Exercise Sheet
Concepts of Object-Oriented Programming AS 2018 Exercise 13 Self-Study Exercise Sheet NOTE: This exercise sheet will not be discussed in an exercise session. We publish it now together with the solution
More informationAdvances in Programming Languages
T O Y H Advances in Programming Languages APL14: Practical tools for Java Correctness David Aspinall (slides originally by Ian Stark) School of Informatics The University of Edinburgh Friday 12 November
More informationAnnouncements. Lecture 14 Generics 1. Announcements. CSE 331 Software Design and Implementation. Leah Perlmutter / Summer 2018
CSE 331 Software Design and Implementation Lecture 14 Generics 1 Announcements Leah Perlmutter / Summer 2018 Announcements Quiz 5 is due Thursday Homework 6 due Thursday Midterm grades and feedback will
More informationCSE 331 Software Design and Implementation. Lecture 14 Generics 1
CSE 331 Software Design and Implementation Lecture 14 Generics 1 Leah Perlmutter / Summer 2018 Announcements Announcements Quiz 5 is due Thursday Homework 6 due Thursday Midterm grades and feedback will
More informationCSE Lecture 7: Polymorphism and generics 16 September Nate Nystrom UTA
CSE 3302 Lecture 7: Polymorphism and generics 16 September 2010 Nate Nystrom UTA 2 Polymorphism poly = many morph = shape Allow a variable to contain values with different types 3 Subtype polymorphism
More informationJava Programming Best Practices Part V. Timothy Fagan Ishi Systems, Inc.
Java Programming Best Practices Part V Timothy Fagan Ishi Systems, Inc. Agenda Why do we need best practices? The Importance of Type-safety When and How to Use @SuppressWarnings Summary Why do we need
More informationReview: Object Diagrams for Inheritance. Type Conformance. Inheritance Structures. Car. Vehicle. Truck. Vehicle. conforms to Object
Review: Diagrams for Inheritance - String makemodel - int mileage + (String, int) Class #3: Inheritance & Polymorphism Software Design II (CS 220): M. Allen, 25 Jan. 18 + (String, int) + void
More informationEclipse and Java 8. Daniel Megert Platform and JDT Lead Eclipse PMC Member IBM Rational Zurich Research Lab
Eclipse and Java 8 Daniel Megert Platform and JDT Lead Eclipse PMC Member IBM Rational Zurich Research Lab Eclipse and Java 8 New Java language features Eclipse features for Java 8 (demo) Behind the scenes
More informationJava Overview An introduction to the Java Programming Language
Java Overview An introduction to the Java Programming Language Produced by: Eamonn de Leastar (edeleastar@wit.ie) Dr. Siobhan Drohan (sdrohan@wit.ie) Department of Computing and Mathematics http://www.wit.ie/
More informationExperimental New Directions for JavaScript
Experimental New Directions for JavaScript Andreas Rossberg, V8/Google Motivation Broad need for (more) scalable JavaScript Usability, esp. maintainability Performance, esp. predictability ES6 opens up
More informationIndex COPYRIGHTED MATERIAL
Index COPYRIGHTED MATERIAL Note to the Reader: Throughout this index boldfaced page numbers indicate primary discussions of a topic. Italicized page numbers indicate illustrations. A abstract classes
More informationJava Programming. Atul Prakash
Java Programming Atul Prakash Java Language Fundamentals The language syntax is similar to C/ C++ If you know C/C++, you will have no trouble understanding Java s syntax If you don't, it will be easier
More informationDetecting and preventing null pointer errors with pluggable type-checking
print(@readonly Object x) { List lst; Detecting and preventing null pointer errors with pluggable type-checking CSE 331 University of Washington Motivation java.lang.nullpointerexception
More informationCOMP 110/L Lecture 24. Kyle Dewey
COMP 110/L Lecture 24 Kyle Dewey Outline this instanceof Casting equals() protected interface this this Refers to whatever instance the given instance method is called on. this Refers to whatever instance
More informationCS/ENGRD 2110 FALL Lecture 6: Consequence of type, casting; function equals
1 CS/ENGRD 2110 FALL 2017 Lecture 6: Consequence of type, casting; function equals http://courses.cs.cornell.edu/cs2110 Overview ref in JavaHyperText 2 Quick look at arrays array Casting among classes
More informationInheritance. Notes Chapter 6 and AJ Chapters 7 and 8
Inheritance Notes Chapter 6 and AJ Chapters 7 and 8 1 Inheritance you know a lot about an object by knowing its class for example what is a Komondor? http://en.wikipedia.org/wiki/file:komondor_delvin.jpg
More informationAn introduction to formal specifications and JML. Invariant properties
An introduction to formal specifications and JML Invariant properties Yves Ledru Université Grenoble-1 Laboratoire d Informatique de Grenoble Yves.Ledru@imag.fr 2013 Page 1 Invariant properties Invariants
More informationDetecting and preventing null pointer errors with pluggable type-checking
print(@readonly Object x) { List lst; Detecting and preventing null pointer errors with pluggable type-checking Michael Ernst CSE 331 University of Washington Motivation java.lang.nullpointerexception
More informationCSE 331 Software Design and Implementation. Lecture 16 Checker Framework
CSE 331 Software Design and Implementation Lecture 16 Checker Framework Zach Tatlock / Winter 2016 Motivation java.lang.nullpointerexception Problem: Your code has bugs Who discovers the problems? If you
More informationUnderstanding C/C++ Strict Aliasing
Understanding C/C++ Strict Aliasing or - Why won't the #$@##@^% compiler let me do what I need to do! by Patrick Horgan There's a lot of confusion about strict aliasing rules. The main source of people's
More informationAnnouncements. Specifications. Outline. Specifications. HW1 is due Thursday at 1:59:59 pm
Announcements HW1 is due Thursday at 1:59:59 pm Specifications 2 Outline Specifications Benefits of specifications Specification conventions Javadoc JML PoS specifications Specifications A specification
More informationImplements vs. Extends When Defining a Class
Implements vs. Extends When Defining a Class implements: Keyword followed by the name of an INTERFACE Interfaces only have method PROTOTYPES You CANNOT create on object of an interface type extends: Keyword
More informationCS/ENGRD 2110 FALL Lecture 6: Consequence of type, casting; function equals
CS/ENGRD 2110 FALL 2018 Lecture 6: Consequence of type, casting; function equals http://courses.cs.cornell.edu/cs2110 Overview references in 2 Quick look at arrays: array Casting among classes cast, object-casting
More informationLecture 19 Checker Framework
CSE 331 Software Design and Implementation Motivation Lecture 19 Checker Framework java.lang.nullpointerexception Zach Tatlock / Spring 2018 Problem: Your code has bugs Who discovers the problems? If you
More informationData Structures. 02 Exception Handling
David Drohan Data Structures 02 Exception Handling JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch ISBN 0132162709 2012 Pearson Education, Inc., Upper Saddle River, NJ.
More informationCSC 172 Data Structures and Algorithms. Lecture 3 Spring 2018 TuTh 3:25 pm 4:40 pm
CSC 172 Data Structures and Algorithms Lecture 3 Spring 2018 TuTh 3:25 pm 4:40 pm Agenda Administrative aspects Java Generics Chapter 1 ADMINISTRATIVE ASPECTS Workshops Workshops Workshops begin on this
More informationThinking Functionally
Thinking Functionally Dan S. Wallach and Mack Joyner, Rice University Copyright 2016 Dan S. Wallach, All Rights Reserved Reminder: Fill out our web form! Fill this out ASAP if you haven t already. http://goo.gl/forms/arykwbc0zy
More informationDeclarations and Access Control SCJP tips
Declarations and Access Control www.techfaq360.com SCJP tips Write code that declares, constructs, and initializes arrays of any base type using any of the permitted forms both for declaration and for
More informationComp215: Thinking Generically
Comp215: Thinking Generically Dan S. Wallach (Rice University) Copyright 2015, Dan S. Wallach. All rights reserved. Functional APIs On Wednesday, we built a list of Objects. This works. But it sucks. class
More informationJava Review: Objects
Outline Java review Abstract Data Types (ADTs) Interfaces Class Hierarchy, Abstract Classes, Inheritance Invariants Lists ArrayList LinkedList runtime analysis Iterators Java references 1 Exam Preparation
More informationSemantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler so far
Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Statically vs. Dynamically typed languages
More information