Designing for Modularity with Java 9

Size: px
Start display at page:

Download "Designing for Modularity with Java 9"

Transcription

1 Designing for Modularity with Java 9 Paul Sander

2 Today's journey Module primer Services & DI Modular design Layers & loading

3 Designing for Modularity with Java 9 What if we forget about the classpath... embrace modules... want to create truly modular software?

4 Designing for Modularity with Java 9 What if we forget about the classpath... embrace modules... want to create truly modular software? Design Constraints Patterns

5 A Module Primer module easytext.cli { requires easytext.analysis; module easytext.analysis { exports analysis.api; opens impl; easytext.cli easytext.analysis analysis.api reflection only! impl other

6 A Module Primer module easytext.cli { requires easytext.analysis; module easytext.analysis { exports analysis.api; Modules define dependencies opens impl; explicitly easytext.cli easytext.analysis analysis.api reflection only! impl other

7 A Module Primer module easytext.cli { Packages are encapsulated by default requires easytext.analysis; module easytext.analysis { exports analysis.api; opens impl; easytext.cli easytext.analysis analysis.api reflection only! impl other

8 A Module Primer module easytext.cli { requires easytext.analysis; Packages can be opened for deep reflection at run-time module easytext.analysis { exports analysis.api; opens impl; easytext.cli easytext.analysis analysis.api reflection only! impl other

9 Services

10 EasyText example easytext.gui easytext.cli analysis.api easytext.analysis.kincaid easytext.analysis.coleman

11 EasyText example easytext.gui easytext.cli analysis.api easytext.analysis.kincaid easytext.analysis.coleman

12 Encapsulation vs. decoupling Even with interfaces, an instance has to be created Analyzer i = new KincaidAnalyzer();

13 Encapsulation vs. decoupling Even with interfaces, an instance has to be created Analyzer i = new KincaidAnalyzer(); We need to export our implementation! :-( module easytext.kincaid { exports easytext.analysis.kincaid;

14 Reflection isn t a workaround Class myimpl = Class.forName( ); MyInterface i = myimpl.newinstance(); Package needs to be open module easytext.kincaid { opens easytext.analysis.kincaid;

15 Services to the rescue easytext.gui easytext.cli uses uses Module System provides provides easytext.analysis.kincaid easytext.analysis.coleman

16 Providing a service module easytext.analyzer.kincaid { requires easytext.analysis.api; provides javamodularity.easytext.analysis.api.analyzer with javamodularity.easytext.analysis.kincaid.kincaidanalyzer;

17 Implementing a service Just a plain Java class Not exported! public class KincaidAnalyzer implements Analyzer { public KincaidAnalyzer() public double analyze(list<list<string>> sentences) {

18 Consuming a service module easytext.cli { requires easytext.analysis.api; uses javamodularity.easytext.analysis.api.analyzer;

19 Consuming a service module easytext.cli { requires easytext.analysis.api; uses javamodularity.easytext.analysis.api.analyzer; Iterable<Analyzer> analyzers = ServiceLoader.load(Analyzer.class); for (Analyzer analyzer: analyzers) { System.out.println( analyzer.getname() + ": " + analyzer.analyze(sentences));

20 Finding the right service ServiceLoader supports streams Lazy instantiation of services ServiceLoader<Analyzer> analyzers = ServiceLoader.load(Analyzer.class); analyzers.stream().filter(provider -> ).map(serviceloader.provider::get).foreach(analyzer -> System.out.println(analyzer.getName()));

21 Add new analyses by adding provider modules on the module path

22 Dependency Injection

23 Providing a Guice service Provider module should export a Guice Module public class ColemanModule extends AbstractModule protected void configure() { Multibinder.newSetBinder(binder(), Analyzer.class).addBinding().to(ColemanAnalyzer.class);

24 Providing a Guice service Consumers must be able to compile against the Guice module Service impl package must be open module easytext.algorithm.coleman { requires easytext.algorithm.api; requires guice; requires guice.multibindings; javamodularity easytext algorithm coleman ColemanAnalyzer.java guice ColemanModule.java module-info.java exports javamodularity.easytext.algorithm.coleman.guice; opens javamodularity.easytext.algorithm.coleman;

25 Consuming a Guice service public class Main { public static void main(string... args) { Injector injector = Guice.createInjector( new ColemanModule(), new KincaidModule()); CLI cli = injector.getinstance(cli.class); cli.analyze(args[0]);

26 Consuming a Guice service Require the implementation Guice modules Open package for Guice injection module easytext.cli { requires easytext.algorithm.api; requires guice; requires easytext.algorithm.coleman; requires easytext.algorithm.kincaid; opens javamodularity.easytext.cli;

27 Consuming a Guice service Now we public class CLI { private final Set<Analyzer> public CLI(Set<Analyzer> analyzers) { this.analyzers = analyzers;

28 Injecting a service algorithm.coleman Create binding guice

29 Injecting a service Requires Guice module algorithm.coleman cli Create binding guice

30 Injecting a service Requires Guice module algorithm.coleman cli Create injector Create binding guice

31 Injecting a service Requires Guice module algorithm.coleman cli Create injector Create binding Inject instance guice

32 Services vs Guice Benefits of using vs using an API Developers might be more familiar the model Downsides of using Guice Requires more coupling Adding an implementation requires code changes

33 Services *and* Guice module easytext.algorithm.coleman { requires easytext.algorithm.api; requires guice; requires guice.multibindings; exports javamodularity.easytext.algorithm.coleman.guice; opens javamodularity.easytext.algorithm.coleman;

34 Services *and* Guice module easytext.algorithm.coleman { requires easytext.algorithm.api; requires guice; requires guice.multibindings; exports javamodularity.easytext.algorithm.coleman.guice; opens javamodularity.easytext.algorithm.coleman; provides com.google.inject.abstractmodule with javamodularity.easytext.algorithm.coleman.guice.colemanmodule

35 Services *and* Guice module easytext.cli { requires easytext.algorithm.api; requires guice; requires easytext.algorithm.coleman; requires easytext.algorithm.kincaid; opens javamodularity.easytext.cli;

36 Services *and* Guice module easytext.cli { requires easytext.algorithm.api; requires guice; requires easytext.algorithm.coleman; requires easytext.algorithm.kincaid; opens javamodularity.easytext.cli; uses com.google.inject.abstractmodule

37 Modular Design

38 Naming Modules... is hard

39 Naming Modules... is hard Application modules Short & memorable <application>.<component> e.g. easytext.gui

40 Naming Modules... is hard Application modules vs. Library modules Short & memorable <application>.<component> e.g. easytext.gui Uniqueness Reverse DNS com.mycompany.ourlib 'Root package'

41 API Modules

42 API Modules Module with exported API only When multiple implementations are expected Can also contain 'default' implementation

43 API Modules Module with exported API only When multiple implementations are expected Can also contain 'default' implementation API modules export: Interfaces (Abstract) classes Exceptions Etc.

44 Small Modules vs. All-in-one

45 Small Modules vs. All-in-one Small modules Composability Reusability

46 Small Modules vs. All-in-one Small modules Composability? Reusability?? All-in-one modules? Ease-of-use?

47 Small Modules vs. All-in-one Why choose? Use aggregator modules

48 Small Modules vs. All-in-one Why choose? Use aggregator modules Module without code, using implied readability: module mylib { requires transitive mylib.one; requires transitive mylib.two; requires transitive mylib.three;

49 Small Modules vs. All-in-one Why choose? Use aggregator modules Module without code, using implied readability: mylib module mylib { requires transitive mylib.one; requires transitive mylib.two; requires transitive mylib.three; mylib.one mylib.three mylib.two

50 Small Modules vs. All-in-one Why choose? Use aggregator modules mylib application mylib.one mylib.three mylib.two

51 Small Modules vs. All-in-one Why choose? Use aggregator modules mylib application mylib.one mylib.three mylib.two

52 Small Modules vs. All-in-one Why choose? Use aggregator modules mylib application mylib.one mylib.three Implied readability mylib.two

53 Small Modules vs. All-in-one mylib.extra mylib.core

54 Small Modules vs. All-in-one mylib.extra application mylib.core

55 Small Modules vs. All-in-one mylib.extra application mylib.core

56 Small Modules vs. All-in-one mylib.extra application mylib.core

57 Breaking cycles Non-modular JARs can have cyclic dependencies Modules can not

58 Breaking cycles

59 Breaking cycles public class Author { private String name; private List<Book> books; public Author(String name) { this.name = name; //..

60 Breaking cycles public class Author { private String name; private List<Book> books; public class Book { public Author author; public String title; public Author(String name) { this.name = name; //.. public void printbook() { System.out.printf( "%s, by %s\n\n%s", title, author.getname(), text);

61 Breaking cycles public class Author { private String name; private List<Book> books; public class Book { public Author author; public String title; public Author(String name) { this.name = name; //.. public void printbook() { System.out.printf( "%s, by %s\n\n%s", title, author.getname(), text);

62 Breaking cycles public class Author { private String name; private List<Book> books; public class Book { public Author author; public String title; public Author(String name) { this.name = name; //.. public void printbook() { System.out.printf( "%s, by %s\n\n%s", title, author.getname(), text);

63 Breaking cycles: abstraction

64 Breaking cycles: abstraction public class Author //.. implements Named { public String getname() { return this.name;

65 Breaking cycles: abstraction public class Author implements Named { //.. public String getname() { return this.name; public interface Named { String getname();

66 Optional dependencies Requires means compile-time and run-time dependency What if we want an optional dependency? Use it if available at run-time Otherwise, run without

67 Optional dependencies Requires means compile-time and run-time dependency What if we want an optional dependency? Use it if available at run-time Otherwise, run without Compile-time only dependencies: module framework { requires static fastjsonlib;

68 Optional dependencies Requires means compile-time and run-time dependency What if we want an optional dependency? Use it if available at run-time Otherwise, run without Compile-time only dependencies: module framework { requires static fastjsonlib; Resolve fastjsonlib if available at run-time, ignore if not

69 Optional dependencies Avoid run-time exceptions!

70 Optional dependencies Avoid run-time exceptions! try { Class<?> clazz = Class.forName("javamodularity.fastjsonlib.FastJson"); FastJson instance = (FastJson) clazz.getconstructor().newinstance(); System.out.println("Using FastJson"); catch (ReflectiveOperationException e) { System.out.println("Oops, we need a fallback!");

71 Optional dependencies Better yet: use services for optional dependencies module framework { requires json.api; uses json.api.json; ServiceLoader.load(Json.class).stream().filter(this::isFast).findFirst();

72 Layers and dynamic module loading

73 ModuleLayer Module path mods easytext.algorithm.api easytext.algorithm.coleman easytext.algorithm.kincaid easytext.algorithm.naivesyllablecounter easytext.algorithm.nextgensyllablecounter easytext.cli easytext.gui

74 ModuleLayer Module path mods easytext.algorithm.api easytext.algorithm.coleman easytext.algorithm.kincaid easytext.algorithm.naivesyllablecounter easytext.algorithm.nextgensyllablecounter easytext.cli easytext.gui boot layer api coleman... at run-time kincaid gui

75 ModuleLayer Immutable boot layer App & platform modules api coleman... One version of a module kincaid gui No dynamic loading?

76 ModuleLayer boot layer Create layers at run-time api Layers form hierarchy... gui Multiple versions in layers

77 ModuleLayer layer 1 coleman parent boot layer Create layers at run-time api Layers form hierarchy... gui Multiple versions in layers

78 ModuleLayer layer 1 coleman layer 2 kincaid syllable. counter parent parent Create layers at run-time api boot layer Layers form hierarchy... gui Multiple versions in layers

79 ModuleLayer Demo

80 Thank you. Paul Sander

Migrating to Java 9 Modules

Migrating to Java 9 Modules Migrating to Java 9 Modules By Sander Mak @Sander_Mak Migrating to Java 9 Java 8 java -cp.. -jar myapp.jar Java 9 java -cp.. -jar myapp.jar Today's journey Running on Java 9 Java 9 modules Migrating to

More information

Migrating to Java 9 Modules. Paul Bakker

Migrating to Java 9 Modules. Paul Bakker Migrating to Java 9 Modules Paul Bakker Why care about modules? lib/nebula-4.0.12.jar:lib/netflix-gradle-lint-8.6.1.jar:lib/gretty-2.0.0.jar:lib/gradle-infamous-plugin-1.28.jar:lib/java-semver-0.9.0.jar:lib/guava-20.0.jar:lib/

More information

PASS4TEST IT 인증시험덤프전문사이트

PASS4TEST IT 인증시험덤프전문사이트 PASS4TEST IT 인증시험덤프전문사이트 http://www.pass4test.net 일년동안무료업데이트 Exam : 1z0-809 Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z0-809 Exam's Question and Answers 1 from

More information

Big Modular Java with Guice

Big Modular Java with Guice Big Modular Java with Guice Jesse Wilson Dhanji Prasanna May 28, 2009 Post your questions for this talk on Google Moderator: code.google.com/events/io/questions Click on the Tech Talks Q&A link. 2 How

More information

Jigsaw and OSGi: What the Heck Happens Now?

Jigsaw and OSGi: What the Heck Happens Now? Jigsaw and OSGi: What the Heck Happens Now? Neil Bartlett neil.bartlett@paremus.com Jigsaw and OSGi: WTF Happens Now? Neil Bartlett neil.bartlett@paremus.com Agenda WTF is a Module System? How do OSGi

More information

Index. Decomposability, 13 Deep reflection, 136 Dependency hell, 19 --describe-module, 39

Index. Decomposability, 13 Deep reflection, 136 Dependency hell, 19 --describe-module, 39 Index A --add-exports option, 28, 134 136, 142, 192 Apache Maven compatibility, 214 Compiler plugin, 212, 214 goals, 209 JDeps plugin goals, 210 options, 211 JEP 223 New Version-String scheme, 209 Automatic

More information

JAVA Modules Java, summer semester 2018

JAVA Modules Java, summer semester 2018 JAVA Modules Modules a module explicitely defines what is provided but also what is required why? the classpath concept is fragile no encapsulation 2 Modules a module explicitely defines what is provided

More information

Dependency Injection & Design Principles Recap Reid Holmes

Dependency Injection & Design Principles Recap Reid Holmes Material and some slide content from: - Krzysztof Czarnecki - Ian Sommerville - Head First Design Patterns Dependency Injection & Design Principles Recap Reid Holmes REID HOLMES - SE2: SOFTWARE DESIGN

More information

Patterns and Best Practices for dynamic OSGi Applications

Patterns and Best Practices for dynamic OSGi Applications Patterns and Best Practices for dynamic OSGi Applications Kai Tödter, Siemens Corporate Technology Gerd Wütherich, Freelancer Martin Lippert, akquinet it-agile GmbH Agenda» Dynamic OSGi applications» Basics»

More information

Lecture 3. COMP1006/1406 (the Java course) Summer M. Jason Hinek Carleton University

Lecture 3. COMP1006/1406 (the Java course) Summer M. Jason Hinek Carleton University Lecture 3 COMP1006/1406 (the Java course) Summer 2014 M. Jason Hinek Carleton University today s agenda assignments 1 (graded) & 2 3 (available now) & 4 (tomorrow) a quick look back primitive data types

More information

ECE 122. Engineering Problem Solving with Java

ECE 122. Engineering Problem Solving with Java ECE 122 Engineering Problem Solving with Java Lecture 17 Inheritance Overview Problem: Can we create bigger classes from smaller ones without having to repeat information? Subclasses: a class inherits

More information

Dependency Injection with Guice

Dependency Injection with Guice Author: Assaf Israel - Technion 2013 Dependency Injection with Guice Technion Institute of Technology 236700 1 Complex Dependency Injection Deep dependencies (with no default) A depends on B, which depends

More information

Modular Java EE in the cloud

Modular Java EE in the cloud Modular Java EE in the cloud A practical guide to mixing java EE and OSGi Jfokus 2013 Practical Guide to Modularity in the Cloud Age Jfokus 2013 Bert Ertman Fellow at Luminis in the Netherlands JUG Leader

More information

Agenda. Why OSGi. What is OSGi. How OSGi Works. Apache projects related to OSGi Progress Software Corporation. All rights reserved.

Agenda. Why OSGi. What is OSGi. How OSGi Works. Apache projects related to OSGi Progress Software Corporation. All rights reserved. OSGi Overview freeman.fang@gmail.com ffang@apache.org Apache Servicemix Commiter/PMC member Apache Cxf Commiter/PMC member Apache Karaf Commiter/PMC member Apache Felix Commiter Agenda Why OSGi What is

More information

Dependency Injection & Design Principles Recap Reid Holmes

Dependency Injection & Design Principles Recap Reid Holmes Material and some slide content from: - Krzysztof Czarnecki - Ian Sommerville - Head First Design Patterns Dependency Injection & Design Principles Recap Reid Holmes REID HOLMES - SE2: SOFTWARE DESIGN

More information

Project Jigsaw: Modular services

Project Jigsaw: Modular services Project Jigsaw: Modular services Jigsaw team 12 June 2012 Copyright 2012 Oracle and/or its affiliates All rights reserved 1 Terms Service interface: An interface or class Service interface module: A module

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecture 14: Design Workflow Department of Computer Engineering Sharif University of Technology 1 UP iterations and workflow Workflows Requirements Analysis Phases Inception Elaboration

More information

OOPs Concepts. 1. Data Hiding 2. Encapsulation 3. Abstraction 4. Is-A Relationship 5. Method Signature 6. Polymorphism 7. Constructors 8.

OOPs Concepts. 1. Data Hiding 2. Encapsulation 3. Abstraction 4. Is-A Relationship 5. Method Signature 6. Polymorphism 7. Constructors 8. OOPs Concepts 1. Data Hiding 2. Encapsulation 3. Abstraction 4. Is-A Relationship 5. Method Signature 6. Polymorphism 7. Constructors 8. Type Casting Let us discuss them in detail: 1. Data Hiding: Every

More information

Design patterns using Spring and Guice

Design patterns using Spring and Guice Design patterns using Spring and Guice Dhanji R. Prasanna MANNING contents 1 Dependency 2 Time preface xv acknowledgments xvii about this book xix about the cover illustration xxii injection: what s all

More information

Day 4. COMP1006/1406 Summer M. Jason Hinek Carleton University

Day 4. COMP1006/1406 Summer M. Jason Hinek Carleton University Day 4 COMP1006/1406 Summer 2016 M. Jason Hinek Carleton University today s agenda assignments questions about assignment 2 a quick look back constructors signatures and overloading encapsulation / information

More information

What is Inheritance?

What is Inheritance? Inheritance 1 Agenda What is and Why Inheritance? How to derive a sub-class? Object class Constructor calling chain super keyword Overriding methods (most important) Hiding methods Hiding fields Type casting

More information

Certified Core Java Developer VS-1036

Certified Core Java Developer VS-1036 VS-1036 1. LANGUAGE FUNDAMENTALS The Java language's programming paradigm is implementation and improvement of Object Oriented Programming (OOP) concepts. The Java language has its own rules, syntax, structure

More information

BBM 102 Introduction to Programming II Spring Abstract Classes and Interfaces

BBM 102 Introduction to Programming II Spring Abstract Classes and Interfaces BBM 102 Introduction to Programming II Spring 2017 Abstract Classes and Interfaces 1 Today Abstract Classes Abstract methods Polymorphism with abstract classes Example project: Payroll System Interfaces

More information

Guice. Java DI Framework

Guice. Java DI Framework Guice Java DI Framework Agenda Intro to dependency injection Cross-cutting concerns and aspectoriented programming More Guice What is DI? Dependency injection is a design pattern that's like a "super factory".

More information

Кирилл Розов Android Developer

Кирилл Розов Android Developer Кирилл Розов Android Developer Dependency Injection Inversion of Control (IoC) is a design principle in which custom-written portions of a computer program receive the flow of control from a generic framework

More information

The GoF Design Patterns Reference

The GoF Design Patterns Reference The GoF Design Patterns Reference Version.0 / 0.0.07 / Printed.0.07 Copyright 0-07 wsdesign. All rights reserved. The GoF Design Patterns Reference ii Table of Contents Preface... viii I. Introduction....

More information

BBM 102 Introduction to Programming II Spring 2017

BBM 102 Introduction to Programming II Spring 2017 BBM 102 Introduction to Programming II Spring 2017 Abstract Classes and Interfaces Instructors: Ayça Tarhan, Fuat Akal, Gönenç Ercan, Vahid Garousi Today Abstract Classes Abstract methods Polymorphism

More information

Day 3. COMP 1006/1406A Summer M. Jason Hinek Carleton University

Day 3. COMP 1006/1406A Summer M. Jason Hinek Carleton University Day 3 COMP 1006/1406A Summer 2016 M. Jason Hinek Carleton University today s agenda assignments 1 was due before class 2 is posted (be sure to read early!) a quick look back testing test cases for arrays

More information

Java Class Design. Eugeny Berkunsky, Computer Science dept., National University of Shipbuilding

Java Class Design. Eugeny Berkunsky, Computer Science dept., National University of Shipbuilding Java Class Design Eugeny Berkunsky, Computer Science dept., National University of Shipbuilding eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Objectives Implement encapsulation Implement inheritance

More information

Programming Language Concepts Object-Oriented Programming. Janyl Jumadinova 28 February, 2017

Programming Language Concepts Object-Oriented Programming. Janyl Jumadinova 28 February, 2017 Programming Language Concepts Object-Oriented Programming Janyl Jumadinova 28 February, 2017 Three Properties of Object-Oriented Languages: Encapsulation Inheritance Dynamic method binding (polymorphism)

More information

Core Java - SCJP. Q2Technologies, Rajajinagar. Course content

Core Java - SCJP. Q2Technologies, Rajajinagar. Course content Core Java - SCJP Course content NOTE: For exam objectives refer to the SCJP 1.6 objectives. 1. Declarations and Access Control Java Refresher Identifiers & JavaBeans Legal Identifiers. Sun's Java Code

More information

Classes and Objects 3/28/2017. How can multiple methods within a Java class read and write the same variable?

Classes and Objects 3/28/2017. How can multiple methods within a Java class read and write the same variable? Peer Instruction 8 Classes and Objects How can multiple methods within a Java class read and write the same variable? A. Allow one method to reference a local variable of the other B. Declare a variable

More information

JUNIT 5 EXTENSIONS 1. 1

JUNIT 5 EXTENSIONS 1. 1 JUNIT EXTENSIONS 1. 1 MARC PHILIPP Software Engineer @ LogMeIn in Karlsruhe, Germany JUnit Maintainer since 2012 Twitter: @marcphilipp Web: marcphilipp.de 1. 2 JUNIT IS RELEASED! Release date: September

More information

1. Find the output of following java program. class MainClass { public static void main (String arg[])

1. Find the output of following java program. class MainClass { public static void main (String arg[]) 1. Find the output of following java program. public static void main(string arg[]) int arr[][]=4,3,2,1; int i,j; for(i=1;i>-1;i--) for(j=1;j>-1;j--) System.out.print(arr[i][j]); 1234 The above java program

More information

Design Patterns. Dependency Injection. Oliver Haase

Design Patterns. Dependency Injection. Oliver Haase Design Patterns Dependency Injection Oliver Haase 1 Motivation A simple, motivating example (by Martin Fowler): public interface MovieFinder { /** * returns all movies of this finder s source * @return

More information

I Got My Mojo Workin'

I Got My Mojo Workin' I Got My Mojo Workin' Gary Murphy Hilbert Computing, Inc. http://www.hilbertinc.com/ glm@hilbertinc.com Gary Murphy I Got My Mojo Workin' Slide 1 Agenda Quick overview on using Maven 2 Key features and

More information

CS/B.TECH/CSE(New)/SEM-5/CS-504D/ OBJECT ORIENTED PROGRAMMING. Time Allotted : 3 Hours Full Marks : 70 GROUP A. (Multiple Choice Type Question)

CS/B.TECH/CSE(New)/SEM-5/CS-504D/ OBJECT ORIENTED PROGRAMMING. Time Allotted : 3 Hours Full Marks : 70 GROUP A. (Multiple Choice Type Question) CS/B.TECH/CSE(New)/SEM-5/CS-504D/2013-14 2013 OBJECT ORIENTED PROGRAMMING Time Allotted : 3 Hours Full Marks : 70 The figures in the margin indicate full marks. Candidates are required to give their answers

More information

2.8. Decision Making: Equality and Relational Operators

2.8. Decision Making: Equality and Relational Operators Page 1 of 6 [Page 56] 2.8. Decision Making: Equality and Relational Operators A condition is an expression that can be either true or false. This section introduces a simple version of Java's if statement

More information

Abstract Classes and Interfaces

Abstract Classes and Interfaces Abstract Classes and Interfaces Reading: Reges and Stepp: 9.5 9.6 CSC216: Programming Concepts Sarah Heckman 1 Abstract Classes A Java class that cannot be instantiated, but instead serves as a superclass

More information

Liberate your components with OSGi services

Liberate your components with OSGi services Liberate your components with OSGi services One products journey through the Modularity Maturity Model Alasdair Nottingham (not@uk.ibm.com) WebSphere Application Server V8.5 Liberty Profile Development

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecturer: Raman Ramsin Lecture 10: Analysis Packages 1 Analysis Workflow: Packages The analysis workflow consists of the following activities: Architectural analysis Analyze a use

More information

Spring Framework 5.0 on JDK 8 & 9

Spring Framework 5.0 on JDK 8 & 9 Spring Framework 5.0 on JDK 8 & 9 Juergen Hoeller Spring Framework Lead Pivotal 1 Spring Framework 5.0 (Overview) 5.0 GA as of September 28 th, 2017 one week after JDK 9 GA! Embracing JDK 9 as well as

More information

8.1 Inheritance. 8.1 Class Diagram for Words. 8.1 Words.java. 8.1 Book.java 1/24/14

8.1 Inheritance. 8.1 Class Diagram for Words. 8.1 Words.java. 8.1 Book.java 1/24/14 8.1 Inheritance superclass 8.1 Class Diagram for Words! Inheritance is a fundamental technique used to create and organize reusable classes! The child is- a more specific version of parent! The child inherits

More information

Week 5-1: ADT Design

Week 5-1: ADT Design Week 5-1: ADT Design Part1. ADT Design Define as class. Every obejects are allocated in heap space. Encapsulation : Data representation + Operation Information Hiding : Object's representation part hides,

More information

Seasar2.3. Yasuo Higa Seasar Foundation/Chief Committer Translated by:h.ozawa

Seasar2.3. Yasuo Higa Seasar Foundation/Chief Committer   Translated by:h.ozawa Seasar2.3 Yasuo Higa Seasar Foundation/Chief Committer http://www.seasar.org/en 1 I want to ask this question to every developer in the world, DO YOU REALLY WANT TO WRITE CONFIGURATION FILES? Seasar2 saves

More information

CPSC 324 Topics in Java Programming

CPSC 324 Topics in Java Programming CPSC 324 Topics in Java Programming Lecture 24 Today Final exam review Java packages and jar files Reminder Group projects on Thursday! Reading Assignment Core: Ch. 10 pp. 493-500 (Jar files) Core: Ch.

More information

A final method is a method which cannot be overridden by subclasses. A class that is declared final cannot be inherited.

A final method is a method which cannot be overridden by subclasses. A class that is declared final cannot be inherited. final A final variable is a variable which can be initialized once and cannot be changed later. The compiler makes sure that you can do it only once. A final variable is often declared with static keyword

More information

Lecture 7: Classes and Objects CS2301

Lecture 7: Classes and Objects CS2301 Lecture 7: Classes and Objects NADA ALZAHRANI CS2301 1 What is OOP? Object-oriented programming (OOP) involves programming using objects. An object represents an entity in the real world that can be distinctly

More information

Interfaces (1/2) An interface forms a contract between the object and the outside world.

Interfaces (1/2) An interface forms a contract between the object and the outside world. Interfaces (1/2) An interface forms a contract between the object and the outside world. For example, the buttons on remote controls for some machine. As you can see, an interface is a reference type,

More information

Challenges updating your code to work with Java 9 Jigsaw

Challenges updating your code to work with Java 9 Jigsaw Challenges updating your code to work with Java 9 Jigsaw Uwe Schindler Apache Lucene PMC & Apache Software Foundation Member uschindler@apache.org https://www.thetaphi.de, http://blog.thetaphi.de @ThetaPh1

More information

Interfaces. An interface forms a contract between the object and the outside world.

Interfaces. An interface forms a contract between the object and the outside world. Interfaces An interface forms a contract between the object and the outside world. For example, the buttons on the television set are the interface between you and the electrical wiring on the other side

More information

Pieter van den Hombergh Thijs Dorssers Stefan Sobek. February 10, 2017

Pieter van den Hombergh Thijs Dorssers Stefan Sobek. February 10, 2017 Inheritance and Inheritance and Pieter van den Hombergh Thijs Dorssers Stefan Sobek Fontys Hogeschool voor Techniek en Logistiek February 10, 2017 /FHTenL Inheritance and February 10, 2017 1/45 Topics

More information

Introduction to Software Testing Chapter 2.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt

Introduction to Software Testing Chapter 2.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt Introduction to Software Testing Chapter 2.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt www.introsoftwaretesting.com OO Software and Designs Emphasis on modularity and reuse puts complexity

More information

Pieter van den Hombergh Thijs Dorssers Stefan Sobek. January 11, 2018

Pieter van den Hombergh Thijs Dorssers Stefan Sobek. January 11, 2018 Inheritance and Inheritance and Pieter van den Hombergh Thijs Dorssers Stefan Sobek Java Inheritance Example I Visibility peekabo Constructors Fontys Hogeschool voor Techniek en Logistiek January 11, 2018

More information

Object Oriented Programming is a programming method that combines: Advantage of Object Oriented Programming

Object Oriented Programming is a programming method that combines: Advantage of Object Oriented Programming Overview of OOP Object Oriented Programming is a programming method that combines: a) Data b) Instructions for processing that data into a self-sufficient object that can be used within a program or in

More information

Admin. CS 112 Introduction to Programming. Recap: OOP Analysis. Software Design and Reuse. Recap: OOP Analysis. Inheritance

Admin. CS 112 Introduction to Programming. Recap: OOP Analysis. Software Design and Reuse. Recap: OOP Analysis. Inheritance Admin CS 112 Introduction to Programming q Class project Inheritance Yang (Richard) Yang Computer Science Department Yale University 308A Watson, Phone: 432-6400 Email: yry@cs.yale.edu 2 Recap: OOP Analysis

More information

Java Object Oriented Design. CSC207 Fall 2014

Java Object Oriented Design. CSC207 Fall 2014 Java Object Oriented Design CSC207 Fall 2014 Design Problem Design an application where the user can draw different shapes Lines Circles Rectangles Just high level design, don t write any detailed code

More information

Chapter 5. Inheritance

Chapter 5. Inheritance Chapter 5 Inheritance Objectives Know the difference between Inheritance and aggregation Understand how inheritance is done in Java Learn polymorphism through Method Overriding Learn the keywords : super

More information

15CS45 : OBJECT ORIENTED CONCEPTS

15CS45 : OBJECT ORIENTED CONCEPTS 15CS45 : OBJECT ORIENTED CONCEPTS QUESTION BANK: What do you know about Java? What are the supported platforms by Java Programming Language? List any five features of Java? Why is Java Architectural Neutral?

More information

Architecture using Functional Programming concepts < + >

Architecture using Functional Programming concepts < + > Architecture using Functional Programming concepts < + > Jorge Castillo @JorgeCastilloPr 1 2 Kotlin and Functional Programming FP means concern separation (declarative computations vs runtime execution),

More information

CSE 421 Course Overview and Introduction to Java

CSE 421 Course Overview and Introduction to Java CSE 421 Course Overview and Introduction to Java Computer Science and Engineering College of Engineering The Ohio State University Lecture 1 Learning Objectives Knowledgeable in how sound software engineering

More information

Systems Programming. Bachelor in Telecommunication Technology Engineering Bachelor in Communication System Engineering Carlos III University of Madrid

Systems Programming. Bachelor in Telecommunication Technology Engineering Bachelor in Communication System Engineering Carlos III University of Madrid Systems Programming Bachelor in Telecommunication Technology Engineering Bachelor in Communication System Engineering Carlos III University of Madrid Leganés, 21st of March, 2014. Duration: 75 min. Full

More information

OSGi on the Server. Martin Lippert (it-agile GmbH)

OSGi on the Server. Martin Lippert (it-agile GmbH) OSGi on the Server Martin Lippert (it-agile GmbH) lippert@acm.org 2009 by Martin Lippert; made available under the EPL v1.0 October 6 th, 2009 Overview OSGi in 5 minutes Apps on the server (today and tomorrow)

More information

Object-Oriented Concepts and Design Principles

Object-Oriented Concepts and Design Principles Object-Oriented Concepts and Design Principles Signature Specifying an object operation or method involves declaring its name, the objects it takes as parameters and its return value. Known as an operation

More information

Java Fundamentals (II)

Java Fundamentals (II) Chair of Software Engineering Languages in Depth Series: Java Programming Prof. Dr. Bertrand Meyer Java Fundamentals (II) Marco Piccioni static imports Introduced in 5.0 Imported static members of a class

More information

CS111: PROGRAMMING LANGUAGE II

CS111: PROGRAMMING LANGUAGE II 1 CS111: PROGRAMMING LANGUAGE II Computer Science Department Lecture 8(b): Abstract classes & Polymorphism Lecture Contents 2 Abstract base classes Concrete classes Polymorphic processing Dr. Amal Khalifa,

More information

Introduction to Programming Using Java (98-388)

Introduction to Programming Using Java (98-388) Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;

More information

Object Oriented Programming. Java-Lecture 11 Polymorphism

Object Oriented Programming. Java-Lecture 11 Polymorphism Object Oriented Programming Java-Lecture 11 Polymorphism Abstract Classes and Methods There will be a situation where you want to develop a design of a class which is common to many classes. Abstract class

More information

Appendix: Assorted Sweets

Appendix: Assorted Sweets Appendix: Assorted Sweets You re probably looking at this page right now because I referred you to it earlier in this book. While writing, I had to decide which examples fit in this book and which don

More information

Atelier Java - J2. Marwan Burelle. EPITA Première Année Cycle Ingénieur.

Atelier Java - J2. Marwan Burelle.   EPITA Première Année Cycle Ingénieur. marwan.burelle@lse.epita.fr http://wiki-prog.kh405.net Plan 1 2 Plan 1 2 Notions of interfaces describe what an object must provide without describing how. It extends the types name strategy to provide

More information

Ryerson University Department of Electrical & Computer Engineering COE618 Midterm Examination February 26, 2013

Ryerson University Department of Electrical & Computer Engineering COE618 Midterm Examination February 26, 2013 Ryerson University Department of Electrical & Computer Engineering COE618 Midterm Examination February 26, 2013 Name: Student # : Time: 90 minutes Instructions This exam contains 6 questions. Please check

More information

Inheritance and Interfaces

Inheritance and Interfaces Inheritance and Interfaces Object Orientated Programming in Java Benjamin Kenwright Outline Review What is Inheritance? Why we need Inheritance? Syntax, Formatting,.. What is an Interface? Today s Practical

More information

INF 212 ANALYSIS OF PROG. LANGS PLUGINS. Instructors: Crista Lopes Copyright Instructors.

INF 212 ANALYSIS OF PROG. LANGS PLUGINS. Instructors: Crista Lopes Copyright Instructors. INF 212 ANALYSIS OF PROG. LANGS PLUGINS Instructors: Crista Lopes Copyright Instructors. Modules as conceptual units Modules as physical components Software modules as physical components Source components

More information

OSGi in Action. RICHARD S. HALL KARL PAULS STUART McCULLOCH DAVID SAVAGE CREATING MODULAR APPLICATIONS IN JAVA MANNING. Greenwich (74 w. long.

OSGi in Action. RICHARD S. HALL KARL PAULS STUART McCULLOCH DAVID SAVAGE CREATING MODULAR APPLICATIONS IN JAVA MANNING. Greenwich (74 w. long. OSGi in Action CREATING MODULAR APPLICATIONS IN JAVA RICHARD S. HALL KARL PAULS STUART McCULLOCH DAVID SAVAGE 11 MANNING Greenwich (74 w. long.) contents foreword xiv preface xvii acknowledgments xix about

More information

Spring % of course grade

Spring % of course grade Name SOLUTION Final Score 10 ID Extra Credit Section (circle one): MW 8:30-9:50 TTh 9:30-10:50 TTh 11:00-12:20 10% of course grade 2 1. Anonymous Inner Classes In lecture we walked through the following:

More information

Formatting Output & Enumerated Types & Wrapper Classes

Formatting Output & Enumerated Types & Wrapper Classes Formatting Output & Enumerated Types & Wrapper Classes Quick review of last lecture September 8, 2006 ComS 207: Programming I (in Java) Iowa State University, FALL 2006 Instructor: Alexander Stoytchev

More information

Day 2. COMP 1006/1406A Summer M. Jason Hinek Carleton University

Day 2. COMP 1006/1406A Summer M. Jason Hinek Carleton University Day 2 COMP 1006/1406A Summer 2016 M. Jason Hinek Carleton University today s agenda a quick look back (Monday s class) assignments a1 is due on Monday a2 will be available on Monday and is due the following

More information

Inheritance. Inheritance Reserved word protected Reserved word super Overriding methods Class Hierarchies Reading for this lecture: L&L

Inheritance. Inheritance Reserved word protected Reserved word super Overriding methods Class Hierarchies Reading for this lecture: L&L Inheritance Inheritance Reserved word protected Reserved word super Overriding methods Class Hierarchies Reading for this lecture: L&L 9.1 9.4 1 Inheritance Inheritance allows a software developer to derive

More information

Outline. Object Oriented Programming. Course goals. Staff. Course resources. Assignments. Course organization Introduction Java overview Autumn 2003

Outline. Object Oriented Programming. Course goals. Staff. Course resources. Assignments. Course organization Introduction Java overview Autumn 2003 Outline Object Oriented Programming Autumn 2003 2 Course goals Software design vs hacking Abstractions vs language (syntax) Java used to illustrate concepts NOT a course about Java Prerequisites knowledge

More information

CS410J: Advanced Java Programming

CS410J: Advanced Java Programming CS410J: Advanced Java Programming The Dependency Injection design pattern decouples dependent objects so that they may be configured and tested independently. Google Guice manages dependencies among objects

More information

COMP6700/2140 Packages, Modules and Jigsaw

COMP6700/2140 Packages, Modules and Jigsaw COMP6700/2140 Packages, Modules and Jigsaw Alexei B Khorev and Josh Milthorpe Research School of Computer Science, ANU May 2017 Alexei B Khorev and Josh Milthorpe (RSCS, ANU) COMP6700/2140 Packages, Modules

More information

Programming overview

Programming overview Programming overview Basic Java A Java program consists of: One or more classes A class contains one or more methods A method contains program statements Each class in a separate file MyClass defined in

More information

Inheritance. Unit 8. Summary. 8.1 Inheritance. 8.2 Inheritance: example. Inheritance Overriding of methods and polymorphism The class Object

Inheritance. Unit 8. Summary. 8.1 Inheritance. 8.2 Inheritance: example. Inheritance Overriding of methods and polymorphism The class Object Unit 8 Inheritance Summary Inheritance Overriding of methods and polymorphism The class Object 8.1 Inheritance Inheritance in object-oriented languages consists in the possibility of defining a class that

More information

Classes, Objects, and OOP in Java. June 16, 2017

Classes, Objects, and OOP in Java. June 16, 2017 Classes, Objects, and OOP in Java June 16, 2017 Which is a Class in the below code? Mario itsame = new Mario( Red Hat? ); A. Mario B. itsame C. new D. Red Hat? Whats the difference? int vs. Integer A.

More information

Java 9 Module System. Complex Software and Programming Language History of Modules Module Concepts and Tools Modularization of the JDK

Java 9 Module System. Complex Software and Programming Language History of Modules Module Concepts and Tools Modularization of the JDK Java 9 Module System Complex Software and Programming Language History of Modules Module Concepts and Tools Modularization of the JDK Problem of Complexity and Programming Language 2 von 41 Early/Modern

More information

The most common relationships are: dependency, association, generalization, and realization.

The most common relationships are: dependency, association, generalization, and realization. UML Class Diagram A class diagram describes the structure of an object-oriented system by showing the classes (and interfaces) in that system and the relationships between the classes (and interfaces).

More information

C08: Inheritance and Polymorphism

C08: Inheritance and Polymorphism CISC 3120 C08: Inheritance and Polymorphism Hui Chen Department of Computer & Information Science CUNY Brooklyn College 2/26/2018 CUNY Brooklyn College 1 Outline Recap and issues Project progress? Practice

More information

Think of drawing/diagramming editors. ECE450 Software Engineering II. The problem. The Composite pattern

Think of drawing/diagramming editors. ECE450 Software Engineering II. The problem. The Composite pattern Think of drawing/diagramming editors ECE450 Software Engineering II Drawing/diagramming editors let users build complex diagrams out of simple components The user can group components to form larger components......which

More information

Microservices Implementations not only with Java. Eberhard Wolff Fellow

Microservices Implementations not only with Java. Eberhard Wolff Fellow Microservices Implementations not only with Java Eberhard Wolff http://ewolff.com @ewolff Fellow http://continuous-delivery-buch.de/ http://continuous-delivery-book.com/ http://microservices-buch.de/ http://microservices-book.com/

More information

Selenium Testing Course Content

Selenium Testing Course Content Selenium Testing Course Content Introduction What is automation testing? What is the use of automation testing? What we need to Automate? What is Selenium? Advantages of Selenium What is the difference

More information

OBJECTS AND CLASSES CHAPTER. Final Draft 10/30/2011. Slides by Donald W. Smith TechNeTrain.com

OBJECTS AND CLASSES CHAPTER. Final Draft 10/30/2011. Slides by Donald W. Smith TechNeTrain.com CHAPTER 8 OBJECTS AND CLASSES Slides by Donald W. Smith TechNeTrain.com Final Draft 10/30/2011 Chapter Goals To understand the concepts of classes, objects and encapsulation To implement instance variables,

More information

Polymorphism. Agenda

Polymorphism. Agenda Polymorphism Lecture 11 Object-Oriented Programming Agenda Classes and Interfaces The Object Class Object References Primitive Assignment Reference Assignment Relationship Between Objects and Object References

More information

A- Core Java Audience Prerequisites Approach Objectives 1. Introduction

A- Core Java Audience Prerequisites Approach Objectives 1. Introduction OGIES 6/7 A- Core Java The Core Java segment deals with the basics of Java. It is designed keeping in mind the basics of Java Programming Language that will help new students to understand the Java language,

More information

Functions. x y z. f (x, y, z) Take in input arguments (zero or more) Perform some computation - May have side-effects (such as drawing)

Functions. x y z. f (x, y, z) Take in input arguments (zero or more) Perform some computation - May have side-effects (such as drawing) 2.1 Functions Functions Take in input arguments (zero or more) Perform some computation - May have side-effects (such as drawing) Return one output value Input Arguments x y z f Return Value f (x, y, z)

More information

CSCU9T4: Managing Information

CSCU9T4: Managing Information CSCU9T4: Managing Information CSCU9T4 Spring 2016 1 The Module Module co-ordinator: Dr Gabriela Ochoa Lectures by: Prof Leslie Smith (l.s.smith@cs.stir.ac.uk) and Dr Nadarajen Veerapen (nve@cs.stir.ac.uk)

More information

CS 112 Introduction to Programming

CS 112 Introduction to Programming CS 112 Introduction to Programming Inheritance Hierarchy; Polymorphism Yang (Richard) Yang Computer Science Department Yale University 308A Watson, Phone: 432-6400 Email: yry@cs.yale.edu Admin q Class

More information

Admin. q Admin and recap q Class inheritance

Admin. q Admin and recap q Class inheritance Admin CS 112 Introduction to Programming q Class project Please work on forming teams Inheritance Hierarchy; Polymorphism Yang (Richard) Yang Computer Science Department Yale University 308A Watson, Phone:

More information

CS304 Object Oriented Programming Final Term

CS304 Object Oriented Programming Final Term 1. Which of the following is the way to extract common behaviour and attributes from the given classes and make a separate class of those common behaviours and attributes? Generalization (pg 29) Sub-typing

More information

CS 106A, Lecture 25 Life After CS 106A, Part 1

CS 106A, Lecture 25 Life After CS 106A, Part 1 CS 106A, Lecture 25 Life After CS 106A, Part 1 This document is copyright (C) Stanford Computer Science and Marty Stepp, licensed under Creative Commons Attribution 2.5 License. All rights reserved. Based

More information

Simple Java Programs. OOC 4 th Sem, B Div Prof. Mouna M. Naravani

Simple Java Programs. OOC 4 th Sem, B Div Prof. Mouna M. Naravani Simple Java Programs OOC 4 th Sem, B Div 2016-17 Prof. Mouna M. Naravani /* */ A First Simple Program This is a simple Java program. Call this file "Example.java". class Example { } // Your program begins

More information