Getting Started with Kotlin. Commerzbank Java Developer Day

Size: px
Start display at page:

Download "Getting Started with Kotlin. Commerzbank Java Developer Day"

Transcription

1 Getting Started with Kotlin Commerzbank Java Developer Day

2 Hello! Alexander Hanschke

3 Hello! Alexander Hanschke CTO at techdev Solutions GmbH in Berlin

4 Hello! Alexander Hanschke CTO at techdev Solutions GmbH in Berlin Java since 2008, and

5 Hello! Alexander Hanschke CTO at techdev Solutions GmbH in Berlin Java since 2008, and Kotlin since 2016

6 Goals

7 Goals give a gentle introduction

8 Goals give a gentle introduction cover most relevant features (breath, not depth)

9 Goals give a gentle introduction cover most relevant features (breath, not depth) whet your appetite

10 Goals give a gentle introduction cover most relevant features (breath, not depth) whet your appetite prerequisites: Java, Spring (Boot)

11 Agenda

12 Agenda History

13 Agenda History Part I Functions, Classes, Exceptions & Null-Safety

14 Agenda History Part I Functions, Classes, Exceptions & Null-Safety Part II Demo

15 Agenda History Part I Functions, Classes, Exceptions & Null Safety Part II Demo Q & A

16 Kotlin?

17 Kotlin!

18 Kotlin..

19 Kotlin.. is a statically-typed language

20 Kotlin.. is a statically-typed language compiles to Java bytecode, JavaScript, or machine code (Kotlin/Native)

21 Kotlin.. is a statically-typed language compiles to Java bytecode, JavaScript, or machine code (Kotlin/Native)

22 Kotlin.. is a statically-typed language compiles to Java bytecode, JavaScript, or machine code (Kotlin/Native) is open-source

23 Why Kotlin?

24 Why Kotlin? JetBrains used Java in most of their tools

25 Why Kotlin? JetBrains used Java in most of their tools need for a language that is concise, expressive, toolable, interoperable and pragmatic

26 Why Kotlin? JetBrains used Java in most of their tools need for a language that is concise, expressive, toolable, interoperable and pragmatic Java too slow to catch up

27 Why Kotlin? JetBrains used Java in most of their tools need for a language that is concise, expressive, toolable, interoperable and pragmatic Java too slow to catch up Scala had the right features, but compiler was too slow

28 Philosophy Kotlin is a pragmatic, concise, safe language with a focus on interoperability.

29 History Project start Version 1.0 Version 1.2.0

30 Part I

31 Functions fun main(args: Array<String>): Unit { println("hello World!") }

32 Functions fun main(args: Array<String>) { println("hello World!") }

33 Functions fun main(args: Array<String>) = println("hello World!")

34 Functions fun url(protocol: String, domain: String, port: Int) { println("$protocol:!//$domain:$port") }

35 Functions fun url(protocol: String, domain: String, port: Int) { println("$protocol:!//$domain:$port") } url("http", "techdev.io", 80)!//

36 Functions fun url(protocol: String, domain: String, port: Int) { println("$protocol:!//$domain:$port") } url("http", "techdev.io", 80) url(domain = "techdev.io", port = 80, protocol = "http")

37 Functions fun url(protocol: String = "http", domain: String, port: Int = 80) { println("$protocol:!//$domain:$port") } url(domain = "techdev.io")

38 Functions File: Kotlin.kt fun url(protocol: String = "http", domain: String, port: Int = 80) { println("$protocol:!//$domain:$port") }

39 Functions File: Kotlin.kt fun url(protocol: String = "http", domain: String, port: Int = 80) { println("$protocol:!//$domain:$port") } File: Java.java public class Java { public static void main(string!!... args) { KotlinKt.url("http", "techdev.io", 80); } }

40 Functions File: fun url(protocol: String = "http", domain: String, port: Int = 80) { println("$protocol:!//$domain:$port") } File: Java.java public class Java { public static void main(string!!... args) { AnotherName.url("http", "techdev.io", 80); } }

41 Functions fun url(protocol: String = "http", domain: String, port: Int = 80) { println("$protocol:!//$domain:$port") } File: Java.java public class Java { public static void main(string!!... args) { AnotherName.url("techdev.io"); } }

42 Extension Functions

43 Extension Functions fun Int.squared() = this * this

44 Extension Functions fun Int.squared() = this * this

45 Extension Functions fun Int.squared() = this * this 3.squared()!// 9

46 Extension Functions fun Int.squared() = this * this 3.squared()!// 9 fun List<String>.random() = this[random().nextint(this.size)]

47 Extension Functions fun Int.squared() = this * this 3.squared()!// 9 fun List<String>.random() = this[random().nextint(this.size)] listof("a", "b", "c").random()

48 Extension Functions fun Int.squared() = this * this 3.squared()!// 9 fun List<String>.random() = this[random().nextint(this.size)] listof("a", "b", c").random() KotlinKt.random(List<String> receiver);

49 Properties var age: Int = 42

50 Properties var age = 42

51 Properties var age = 42 val text = "final"

52 Classes

53 Classes (Java) public class Superhero { private final String name; private int strength; }

54 Classes (Java) public class Superhero { private final String name; private int strength; public Superhero(String name, int strength) { this.name = name; this.strength = strength; } }

55 Classes (Java) public class Superhero { private final String name; private int strength; public Superhero(String name) { this(name, 100); } public Superhero(String name, int strength) { this.name = name; this.strength = strength; } }

56 Classes (Java) public class Superhero { } private final String name; private int strength; public Superhero(String name) { this(name, 100); } public Superhero(String name, int strength) { this.name = name; this.strength = strength; } public String getname() {!..} public int getstrength() {!..} public void setstrength(int strength) {!..}

57 Classes (Kotlin) class Superhero(val name: String, var strength: Int = 100)

58 Classes (Kotlin) class Superhero(val name: String, var strength: Int = 100) val thor = Superhero("Thor") var enemy = Superhero("Hulk", 90)

59 Classes (Kotlin) class Superhero(val name: String, var strength: Int = 100) val thor = Superhero("Thor") var enemy = Superhero("Hulk", 90) println("${thor.name} vs. ${enemy.name}")!// Thor vs. Hulk

60 Classes (Kotlin) class Superhero(val name: String, var strength: Int = 100) val thor = Superhero("Thor") var enemy = Superhero("Hulk", 90) println("${thor.name} vs. ${enemy.name}")!// Thor vs. Hulk new Superhero("Spider-Man", 70).getName();

61 public class Superhero { } private final String name; private int strength;

62 Data Classes data class Superhero(val name: String, var strength: Int = 100)

63 Data Classes data class Superhero(val name: String, var strength: Int = 100)

64 Exceptions

65 Exceptions fun parse(value: String) = try { Integer.parseInt(value) } catch (cause: NumberFormatException) { """ \_( ツ )_/ """ }

66 Exceptions fun boom() { throw IOException("boom o( ><)o") }

67 Exceptions fun boom() { throw IOException("boom o( ><)o") } public static void main(string!!... args) { try { KotlinKt.boom(); } catch (IOException cause) {!..} }

68 fun boom() { throw IOException("boom o( ><)o") } public static void main(string!!... args) { try { KotlinKt.boom(); } catch (IOException cause) {!..} }

69 Null Safety

70 Null Safety Superhero

71 Null Safety Any Superhero

72 Null Safety Any Any? Superhero

73 Null Safety Any Any? Superhero Superhero?

74 Null Safety class Item(val name: String) class Superhero(val name: String, var strength: Int = 100, val item: Item? = null) val thor = Superhero("Thor", item = Item("Hammer"))

75 Null Safety class Item(val name: String) class Superhero(val name: String, var strength: Int = 100, val item: Item? = null) val thor = Superhero("Thor", item = Item("Hammer"))

76 Null Safety class Item(val name: String) class Superhero(val name: String, var strength: Int = 100, val item: Item? = null) val thor = Superhero("Thor", item = Item("Hammer")) println(thor.item.name)!// nope.

77 Null Safety class Item(val name: String) class Superhero(val name: String, var strength: Int = 100, val item: Item? = null) val thor = Superhero("Thor", item = Item("Hammer")) if (thor.item!!= null) { println((thor.item as Item).name)!// Hammer }

78 Null Safety class Item(val name: String) class Superhero(val name: String, var strength: Int = 100, val item: Item? = null) val thor = Superhero("Thor", item = Item("Hammer")) if (thor.item!!= null) { println(thor.item.name)!// Hammer }

79 Null Safety class Item(val name: String) class Superhero(val name: String, var strength: Int = 100, val item: Item? = null) val thor = Superhero("Thor", item = Item("Hammer")) println(thor.item!?.name)

80 Null Safety class Item(val name: String) class Superhero(val name: String, var strength: Int = 100, val item: Item? = null) val thor = Superhero("Thor", item = Item("Hammer")) println(thor.item!?.name!?: "No Item")

81 Null Safety class Item(val name: String) class Superhero(val name: String, var strength: Int = 100, val item: Item? = null) val thor = Superhero("Thor", item = Item("Hammer")) println(thor.item!!!.name)

82 Philosophy Kotlin is a pragmatic, concise, safe language with a focus on interoperability.

83 How to get started?

84 How to get started? write tests in Kotlin

85 How to get started? write tests in Kotlin replace utility classes with extension functions

86 How to get started? write tests in Kotlin replace utility classes with extension functions add new components in Kotlin

87 How to get started? write tests in Kotlin replace utility classes with extension functions add new components in Kotlin replace existing components one-by-one as you see fit

88 Things to consider

89 Things to consider there is a company behind it

90 Things to consider there is a company behind it SCM history may be lost changing from.java to.kt

91 Things to consider there is a company behind it SCM history may be lost changing from.java to.kt classes are closed by default

92 Things to consider there is a company behind it SCM history may be lost changing from.java to.kt classes are closed by default no implicit widening conversion for numbers

93

94 Part II

95 Thank you!

96 Q & A

The Kotlin Programming Language. Andrey Breslav Dmitry Jemerov

The Kotlin Programming Language. Andrey Breslav Dmitry Jemerov The Kotlin Programming Language Andrey Breslav Dmitry Jemerov What is Kotlin? Statically typed object-oriented JVM-targeted general-purpose programming language developed by JetBrains intended for industrial

More information

Object-oriented programming

Object-oriented programming Object-oriented programming HelloWorld The following code print Hello World on the console object HelloWorld { def main(args: Array[String]): Unit = { println("hello World") 2 1 object The keyword object

More information

A Deep Dive Into Kotlin

A Deep Dive Into Kotlin A Deep Dive Into Kotlin By 1 About me (droidyue.com) @Flipboard China GDG 2 3 Kotlin An official language for Android recently Powered by Jetbrains 4 Why Kotlin Concise Safe interoperable tool-friendly

More information

Kotlin, Start? Start! (pluu) Android Developer GDG Korea Android Organizer

Kotlin, Start? Start! (pluu) Android Developer GDG Korea Android Organizer Kotlin, Start? Start! (pluu) Android Developer GDG Korea Android Organizer Agenda Kotlin Overview Kotlin?? Basic fun main(args: Array): Unit { println("hello, world!") Basic Function Keyword

More information

The Kotlin Programming Language. Andrey Breslav

The Kotlin Programming Language. Andrey Breslav The Kotlin Programming Language Andrey Breslav What is Kotlin? Statically typed object-oriented JVM-targeted general-purpose programming language developed by JetBrains intended for industrial use Docs

More information

Kotlin for Android Developers

Kotlin for Android Developers Kotlin for Android Developers Learn Kotlin the easy way while developing an Android App Antonio Leiva This book is for sale at http://leanpub.com/kotlin-for-android-developers This version was published

More information

Scala. Introduction. Scala

Scala. Introduction. Scala Scala Introduction 1 Scala Scala was proposed by Professor Martin Odersky and his group at EPFL in 2003 to provide a highperformance, concurrent-ready environment for functional programming and object-oriented

More information

KOTLIN - A New Programming Language for the Modern Needs

KOTLIN - A New Programming Language for the Modern Needs KOTLIN - A New Programming Language for the Modern Needs [1] Mrs.J.ArockiaJeyanthi, [2] Mrs.T.Kamaleswari [1] Assistant Professor, [2] Assistant Professor, [1] Department of Computer Science, A.P.C. Mahalaxmi

More information

Scaling Up & Out. Haidar Osman

Scaling Up & Out. Haidar Osman Scaling Up & Out Haidar Osman 1- Crash course in Scala - Classes - Objects 2- Actors - The Actor Model - Examples I, II, III, IV 3- Apache Spark - RDD & DAG - Word Count Example 2 1- Crash course in Scala

More information

GETTING STARTED WITH Kotlin INTRODUCTION WHERE TO START CODING BASIC SYNTAX

GETTING STARTED WITH Kotlin INTRODUCTION WHERE TO START CODING BASIC SYNTAX 257 CONTENTS INTRODUCTION GETTING STARTED WITH Kotlin WHERE TO START CODING BASIC SYNTAX CONTROL FLOW: CONDITIONS CONTROL FLOW: LOOPS BASIC TYPES CLASSES FUNCTION TYPES AND LAMBDAS HIGHER-ORDER FUNCTIONS

More information

Kotlin In Spreadshirt. JUG Saxony Day, Spreadshirt

Kotlin In Spreadshirt. JUG Saxony Day, Spreadshirt Kotlin In Practice @philipp_hauer JUG Saxony Day, 29.09.17 2 Hands Up! Kotlin Features and Usage in Practice References Immutable and mutable References val id = 1 id = 2 var id2 = 1 id2 = 2 5 Data Classes

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

You can do better with Kotlin. Svetlana Isakova

You can do better with Kotlin. Svetlana Isakova You can do better with Kotlin Svetlana Isakova Kotlin Programming Language - modern - pragmatic - Android-friendly Official on Android Not only Android Pragmatic - tooling - Java interop From has good

More information

Introduction to Coroutines. Roman Elizarov elizarov at JetBrains

Introduction to Coroutines. Roman Elizarov elizarov at JetBrains Introduction to Coroutines Roman Elizarov elizarov at JetBrains Asynchronous programming How do we write code that waits for something most of the time? A toy problem Kotlin 1 fun requesttoken(): Token

More information

Scala. ~ a tragedy in two parts ~ the tragedy being we aren t using it all the time

Scala. ~ a tragedy in two parts ~ the tragedy being we aren t using it all the time e Scala ~ a tragedy in two parts ~ the tragedy being we aren t using it all the time w g I The Scala Language Praise for Scala j s gi can honestly say if someone had shown me the Programming in Scala...

More information

Kotlin for Android developers

Kotlin for Android developers ROME - APRIL 13/14 2018 Kotlin for Android developers Victor Kropp, JetBrains @kropp Kotlin on JVM + Android JS In development: Kotlin/Native ios/macos/windows/linux Links Kotlin https://kotlinlang.org

More information

Mixed projects: Java + Kotlin. Svetlana Isakova

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

Kotlin In Spreadshirt JavaLand,

Kotlin In Spreadshirt JavaLand, Kotlin In Practice @philipp_hauer Spreadshirt JavaLand, 13.03.18 Spreadshirt 2 Hands Up! Kotlin Features and Usage in Practice Data Classes Immutability made easy data class DesignData( val filename: String,

More information

Outline. Introduction Concepts and terminology The case for static typing. Implementing a static type system Basic typing relations Adding context

Outline. Introduction Concepts and terminology The case for static typing. Implementing a static type system Basic typing relations Adding context Types 1 / 15 Outline Introduction Concepts and terminology The case for static typing Implementing a static type system Basic typing relations Adding context 2 / 15 Types and type errors Type: a set of

More information

Fresh Async With Kotlin. Presented at QCon SF, 2017 /Roman JetBrains

Fresh Async With Kotlin. Presented at QCon SF, 2017 /Roman JetBrains Fresh Async With Kotlin Presented at QCon SF, 2017 /Roman Elizarov @ JetBrains Speaker: Roman Elizarov 16+ years experience Previously developed high-perf trading software @ Devexperts Teach concurrent

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

Scala Java Sparkle Monday, April 16, 2012

Scala Java Sparkle Monday, April 16, 2012 Scala Java Sparkle Scala Scala Java Scala "Which Programming Language would you use *now* on top of JVM, except Java?". The answer was surprisingly fast and very clear: - Scala. http://www.adam-bien.com/roller/abien/entry/java_net_javaone_which_programming

More information

2018/2/5 话费券企业客户接入文档 语雀

2018/2/5 话费券企业客户接入文档 语雀 1 2 2 1 2 1 1 138999999999 2 1 2 https:lark.alipay.com/kaidi.hwf/hsz6gg/ppesyh#2.4-%e4%bc%81%e4%b8%9a%e5%ae%a2%e6%88%b7%e6%8e%a5%e6%94%b6%e5%85%85%e5 1/8 2 1 3 static IAcsClient client = null; public static

More information

CSE 431S Type Checking. Washington University Spring 2013

CSE 431S Type Checking. Washington University Spring 2013 CSE 431S Type Checking Washington University Spring 2013 Type Checking When are types checked? Statically at compile time Compiler does type checking during compilation Ideally eliminate runtime checks

More information

Xtend Programming Language

Xtend Programming Language Xtend Programming Language Produced by: Eamonn de Leastar (edeleastar@wit.ie) Department of Computing and Mathematics http://www.wit.ie/ Agenda Subtitle Excellent Xtend User Guide (Version 2.6) API Docs

More information

Kotlin for Android Developers

Kotlin for Android Developers Kotlin for Android Developers Learn Kotlin the easy way while developing an Android App Antonio Leiva This book is for sale at http://leanpub.com/kotlin-for-android-developers This version was published

More information

CS 2340 Objects and Design - Scala

CS 2340 Objects and Design - Scala CS 2340 Objects and Design - Scala Objects and Operators Christopher Simpkins chris.simpkins@gatech.edu Chris Simpkins (Georgia Tech) CS 2340 Objects and Design - Scala Objects and Operators 1 / 13 Classes

More information

...something useful to do with the JVM.

...something useful to do with the JVM. Scala Finally... ...something useful to do with the JVM. Image source: http://www.tripadvisor.com/locationphotos-g187789-lazio.html Young Developed in 2003 by Martin Odersky at EPFL Martin also brought

More information

COSC 123 Computer Creativity. I/O Streams and Exceptions. Dr. Ramon Lawrence University of British Columbia Okanagan

COSC 123 Computer Creativity. I/O Streams and Exceptions. Dr. Ramon Lawrence University of British Columbia Okanagan COSC 123 Computer Creativity I/O Streams and Exceptions Dr. Ramon Lawrence University of British Columbia Okanagan ramon.lawrence@ubc.ca Objectives Explain the purpose of exceptions. Examine the try-catch-finally

More information

A Long Time Ago 2 / 64

A Long Time Ago 2 / 64 ndertow 1 / 64 A Long Time Ago 2 / 64 A Long Time Ago 3 / 64 A Long Time Ago 4 / 64 Undertow 5 / 64 Features HTTP/HTTPS HTTP/2 WebSockets 6 / 64 Hello, World! Undertow.builder().addHttpListener(8080, "localhost")

More information

Conversions and Overloading : Overloading

Conversions and Overloading : Overloading Conversions and Overloading : First. Java allows certain implicit conversations of a value of one type to a value of another type. Implicit conversations involve only the primitive types. For example,

More information

Selected Questions from by Nageshwara Rao

Selected Questions from  by Nageshwara Rao Selected Questions from http://way2java.com by Nageshwara Rao Swaminathan J Amrita University swaminathanj@am.amrita.edu November 24, 2016 Swaminathan J (Amrita University) way2java.com (Nageshwara Rao)

More information

Program Fundamentals

Program Fundamentals Program Fundamentals /* HelloWorld.java * The classic Hello, world! program */ class HelloWorld { public static void main (String[ ] args) { System.out.println( Hello, world! ); } } /* HelloWorld.java

More information

Pace University. Fundamental Concepts of CS121 1

Pace University. Fundamental Concepts of CS121 1 Pace University Fundamental Concepts of CS121 1 Dr. Lixin Tao http://csis.pace.edu/~lixin Computer Science Department Pace University October 12, 2005 This document complements my tutorial Introduction

More information

Understand Every Line of Your Codebase

Understand Every Line of Your Codebase Understand Every Line of Your Codebase Victoria Gonda Boris Farber Speakers Victoria Developer at Collective Idea Android and Rails Boris Partner Engineer at Google Android Partnerships Android and Java

More information

CS 11 java track: lecture 1

CS 11 java track: lecture 1 CS 11 java track: lecture 1 Administrivia need a CS cluster account http://www.cs.caltech.edu/ cgi-bin/sysadmin/account_request.cgi need to know UNIX www.its.caltech.edu/its/facilities/labsclusters/ unix/unixtutorial.shtml

More information

(A) 99 (B) 100 (C) 101 (D) 100 initial integers plus any additional integers required during program execution

(A) 99 (B) 100 (C) 101 (D) 100 initial integers plus any additional integers required during program execution Ch 5 Arrays Multiple Choice 01. An array is a (A) (B) (C) (D) data structure with one, or more, elements of the same type. data structure with LIFO access. data structure, which allows transfer between

More information

Programming Kotlin. Extracted from: Creating Elegant, Expressive, and Performant JVM and Android Applications. The Pragmatic Bookshelf

Programming Kotlin. Extracted from: Creating Elegant, Expressive, and Performant JVM and Android Applications. The Pragmatic Bookshelf Extracted from: Programming Kotlin Creating Elegant, Expressive, and Performant JVM and Android Applications This PDF file contains pages extracted from Programming Kotlin, published by the Pragmatic Bookshelf.

More information

Produced by. Agile Software Development. Eamonn de Leastar

Produced by. Agile Software Development. Eamonn de Leastar Agile Software Development Produced by Eamonn de Leastar (edeleastar@wit.ie) Department of Computing, Maths & Physics Waterford Institute of Technology http://www.wit.ie http://elearning.wit.ie Xtend Programming

More information

Type Conversion. and. Statements

Type Conversion. and. Statements and Statements Type conversion changing a value from one type to another Void Integral Floating Point Derived Boolean Character Integer Real Imaginary Complex no fractional part fractional part 2 tj Suppose

More information

Introduction to Java https://tinyurl.com/y7bvpa9z

Introduction to Java https://tinyurl.com/y7bvpa9z Introduction to Java https://tinyurl.com/y7bvpa9z Eric Newhall - Laurence Meyers Team 2849 Alumni Java Object-Oriented Compiled Garbage-Collected WORA - Write Once, Run Anywhere IDE Integrated Development

More information

Cords and gumballs. Mike Hearn.

Cords and gumballs. Mike Hearn. Cords and gumballs Mike Hearn mike@r3.com Who what why huh?! Who am I? Kotlin early adopter: first patch to Kotlin website Sept 2014, introduced to my first product Feb 2015. Lead Platform Engineer on

More information

1 Quickies String s1 = "Hello World"; String s2 = "Hello "; s2 = s2 + "World"; Point a = new Point(3, 4); Point b = new Point(3, 4);

1 Quickies String s1 = Hello World; String s2 = Hello ; s2 = s2 + World; Point a = new Point(3, 4); Point b = new Point(3, 4); 1 Quickies Please explain what the output for each code segment will be (Compile Time Error, Run Time Error, Output) and why. Assume that each code segment is in a main function and the necessary library

More information

Bibliography. Analyse et Conception Formelle. Lesson 5. Crash Course on Scala. Scala in a nutshell. Outline

Bibliography. Analyse et Conception Formelle. Lesson 5. Crash Course on Scala. Scala in a nutshell. Outline Bibliography Analyse et Conception Formelle Lesson 5 Crash Course on Scala Simply Scala. Onlinetutorial: http://www.simply.com/fr http://www.simply.com/ Programming in Scala, M. Odersky, L. Spoon, B. Venners.

More information

Writing Browser Extensions in Kotlin. Kirill Rakhman busradar.com

Writing Browser Extensions in Kotlin. Kirill Rakhman busradar.com Writing Browser Extensions in Kotlin Kirill Rakhman (@Cypressious) busradar.com KotlinJS No longer expiremental since 1.1.0 Can run anywhere where JS runs Can call JS Websites NodeJS Browser Extensions

More information

learning objectives learn about variables, their types and their values learn about different number representations

learning objectives learn about variables, their types and their values learn about different number representations programming basics learning objectives algorithms your software system software hardware learn about variables, their types and their values learn about different number representations learn boolean algebra

More information

Why a New Language? Seeking Grace: a New Object-Oriented Language for Novices. OO Teaching Frustrations. Java Problems. Java is 20 years old in 2015

Why a New Language? Seeking Grace: a New Object-Oriented Language for Novices. OO Teaching Frustrations. Java Problems. Java is 20 years old in 2015 Seeking Grace: a New Object-Oriented Language for Novices Andrew Black, Kim Bruce, Michael Homer, James Noble, Amy Ruskin, & Richard Yannow Why a New Language? Java is 20 years old in 2015 Showing its

More information

SCALAMODULES A Scala DSL to ease OSGi development Heiko Seeberger, WeigleWilczek

SCALAMODULES A Scala DSL to ease OSGi development Heiko Seeberger, WeigleWilczek SCALAMODULES A Scala DSL to ease OSGi development Heiko Seeberger, WeigleWilczek WHAT S SCALA? mature object-functional statically typed lightweight WHAT S SCALA? expressive concise pragmatic interoperabel

More information

(A) 99 ** (B) 100 (C) 101 (D) 100 initial integers plus any additional integers required during program execution

(A) 99 ** (B) 100 (C) 101 (D) 100 initial integers plus any additional integers required during program execution Ch 5 Arrays Multiple Choice Test 01. An array is a ** (A) data structure with one, or more, elements of the same type. (B) data structure with LIFO access. (C) data structure, which allows transfer between

More information

InfiniteGraph Manual 1

InfiniteGraph Manual 1 InfiniteGraph Manual 1 Installation Steps: Run the InfiniteGraph.exe file. Click next. Specify the installation directory. Click next. Figure 1: Installation step 1 Figure 2: Installation step 2 2 Select

More information

DOMjudge team manual. Summary. Reading and writing. Submitting solutions. Viewing scores, submissions, etc.

DOMjudge team manual. Summary. Reading and writing. Submitting solutions. Viewing scores, submissions, etc. judge DOMjudge team manual Summary /\ DOM DOM judge This page gives a short summary of the system interface. The summary is meant as a quick introduction, to be able to start using the system. It is, however,

More information

Announcements. CSCI 334: Principles of Programming Languages. Lecture 16: Intro to Scala. Announcements. Squeak demo. Instructor: Dan Barowy

Announcements. CSCI 334: Principles of Programming Languages. Lecture 16: Intro to Scala. Announcements. Squeak demo. Instructor: Dan Barowy Announcements CSCI 334: Principles of Programming Languages Lecture 16: Intro to Scala HW7 sent out as promised. See course webpage. Instructor: Dan Barowy Announcements No class on Tuesday, April 17.

More information

Part IV Other Systems: I Java Threads

Part IV Other Systems: I Java Threads Part IV Other Systems: I Java Threads Spring 2019 C is quirky, flawed, and an enormous success. 1 Dennis M. Ritchie Java Threads: 1/6 Java has two ways to create threads: Create a new class derived from

More information

ITCertMaster. Safe, simple and fast. 100% Pass guarantee! IT Certification Guaranteed, The Easy Way!

ITCertMaster.  Safe, simple and fast. 100% Pass guarantee! IT Certification Guaranteed, The Easy Way! ITCertMaster Safe, simple and fast. 100% Pass guarantee! Exam : 1z0-853 Title : Java Standard Edition 5 Programmer Certified Professional Exam Vendor : Oracle Version : DEMO Get Latest & Valid 1Z0-853

More information

COMP-202: Foundations of Programming. Lecture 26: Review; Wrap-Up Jackie Cheung, Winter 2016

COMP-202: Foundations of Programming. Lecture 26: Review; Wrap-Up Jackie Cheung, Winter 2016 COMP-202: Foundations of Programming Lecture 26: Review; Wrap-Up Jackie Cheung, Winter 2016 Announcements Final is scheduled for Apr 21, 2pm 5pm GYM FIELD HOUSE Rows 1-21 Please submit course evaluations!

More information

CS Week 11. Jim Williams, PhD

CS Week 11. Jim Williams, PhD CS 200 - Week 11 Jim Williams, PhD This Week 1. Exam 2 - Thursday 2. Team Lab: Exceptions, Paths, Command Line 3. Review: Muddiest Point 4. Lecture: File Input and Output Objectives 1. Describe a text

More information

Informatik II. Andreas Bärtschi, Andreea Ciuprina, Felix Friedrich, Patrick Gruntz, Hermann Lehner, Max Rossmannek, Chris Wendler FS 2018

Informatik II. Andreas Bärtschi, Andreea Ciuprina, Felix Friedrich, Patrick Gruntz, Hermann Lehner, Max Rossmannek, Chris Wendler FS 2018 1 Informatik II Übung 4 Andreas Bärtschi, Andreea Ciuprina, Felix Friedrich, Patrick Gruntz, Hermann Lehner, Max Rossmannek, Chris Wendler FS 2018 Program Today 2 1 Feedback of last exercise 2 Repetition

More information

Building Java Programs

Building Java Programs Building Java Programs Chapter 16 References and linked nodes reading: 16.1 2 Value semantics value semantics: Behavior where values are copied when assigned, passed as parameters, or returned. All primitive

More information

CS 1331 Exam 1. Fall Failure to properly fill in the information on this page will result in a deduction of up to 5 points from your exam score.

CS 1331 Exam 1. Fall Failure to properly fill in the information on this page will result in a deduction of up to 5 points from your exam score. CS 1331 Exam 1 Fall 2016 Name (print clearly): GT account (gpburdell1, msmith3, etc): Section (e.g., B1): Signature: Failure to properly fill in the information on this page will result in a deduction

More information

Produced by. Agile Software Development. Eamonn de Leastar

Produced by. Agile Software Development. Eamonn de Leastar Agile Software Development Produced by Eamonn de Leastar (edeleastar@wit.ie) Department of Computing, Maths & Physics Waterford Institute of Technology http://www.wit.ie http://elearning.wit.ie Xtend Programming

More information

Programming Kotlin. Familiarize yourself with all of Kotlin s features with this in-depth guide. Stephen Samuel Stefan Bocutiu BIRMINGHAM - MUMBAI

Programming Kotlin. Familiarize yourself with all of Kotlin s features with this in-depth guide. Stephen Samuel Stefan Bocutiu BIRMINGHAM - MUMBAI Programming Kotlin Familiarize yourself with all of Kotlin s features with this in-depth guide Stephen Samuel Stefan Bocutiu BIRMINGHAM - MUMBAI Programming Kotlin Copyright 2017 Packt Publishing First

More information

SWIFT & #IOExtendedCLT, 18th May 2016

SWIFT & #IOExtendedCLT, 18th May 2016 SWIFT & KOTLIN @DagnaBieda, #IOExtendedCLT, 18th May 2016 Software Engineer at Quoin, 209 Delburg Street, Davidson, NC Sources tell The Next Web that Google is considering making Swift a first class language

More information

Scale Up with Lock-Free Algorithms. Non-blocking concurrency on JVM Presented at JavaOne 2017 /Roman JetBrains

Scale Up with Lock-Free Algorithms. Non-blocking concurrency on JVM Presented at JavaOne 2017 /Roman JetBrains Scale Up with Lock-Free Algorithms Non-blocking concurrency on JVM Presented at JavaOne 2017 /Roman Elizarov @ JetBrains Speaker: Roman Elizarov 16+ years experience Previously developed high-perf trading

More information

! This week: Chapter 6 all ( ) ! Formal parameter: in declaration of class. ! Actual parameter: passed in when method is called

! This week: Chapter 6 all ( ) ! Formal parameter: in declaration of class. ! Actual parameter: passed in when method is called University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner Reading! This week: Chapter 6 all (6.1-6.4) Static Methods, Conditionals Lecture 10, Tue Feb 7 2006 based on slides

More information

CS 200 File Input and Output Jim Williams, PhD

CS 200 File Input and Output Jim Williams, PhD CS 200 File Input and Output Jim Williams, PhD This Week 1. WaTor Change Log 2. Monday Appts - may be interrupted. 3. Optional Lab: Create a Personal Webpage a. demonstrate to TA for same credit as other

More information

Axiomatic Rules. Lecture 18: Axiomatic Semantics & Type Safety. Correctness using Axioms & Rules. Axiomatic Rules. Steps in Proof

Axiomatic Rules. Lecture 18: Axiomatic Semantics & Type Safety. Correctness using Axioms & Rules. Axiomatic Rules. Steps in Proof Lecture 18: Axiomatic Semantics & Type Safety CSCI 131 Fall, 2011 Kim Bruce Axiomatic Rules Assignment axiom: - {P [expression / id]} id := expression {P} - Ex: {a+47 > 0} x := a+47 {x > 0} - {x > 1} x

More information

Concurrency with Threads and Actors

Concurrency with Threads and Actors Shared- Memory Multithreading Concurrency with Threads and Actors Shared: heap and globals Implicit communication through sharing. pc pc pc Unshared: locals and control Adapted from slides by Steve Freund

More information

University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner

University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner Static Methods, Conditionals Lecture 10, Tue Feb 7 2006 based on slides by Kurt Eiselt http://www.cs.ubc.ca/~tmm/courses/cpsc111-06-spr

More information

Closures. Mooly Sagiv. Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming

Closures. Mooly Sagiv. Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming Closures Mooly Sagiv Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming Summary 1. Predictive Parsing 2. Large Step Operational Semantics (Natural) 3. Small Step Operational Semantics

More information

CSC 1214: Object-Oriented Programming

CSC 1214: Object-Oriented Programming CSC 1214: Object-Oriented Programming J. Kizito Makerere University e-mail: jkizito@cis.mak.ac.ug www: http://serval.ug/~jona materials: http://serval.ug/~jona/materials/csc1214 e-learning environment:

More information

Object Oriented Programming and Design in Java. Session 2 Instructor: Bert Huang

Object Oriented Programming and Design in Java. Session 2 Instructor: Bert Huang Object Oriented Programming and Design in Java Session 2 Instructor: Bert Huang Announcements TA: Yipeng Huang, yh2315, Mon 4-6 OH on MICE clarification Next Monday's class canceled for Distinguished Lecture:

More information

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

Atelier Java - J1. Marwan Burelle.  EPITA Première Année Cycle Ingénieur. marwan.burelle@lse.epita.fr http://wiki-prog.kh405.net Plan 1 2 Plan 3 4 Plan 1 2 3 4 A Bit of History JAVA was created in 1991 by James Gosling of SUN. The first public implementation (v1.0) in 1995.

More information

Instance Method Development Demo

Instance Method Development Demo Instance Method Development Demo Write a class Person with a constructor that accepts a name and an age as its argument. These values should be stored in the private attributes name and age. Then, write

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

IT101. File Input and Output

IT101. File Input and Output IT101 File Input and Output IO Streams A stream is a communication channel that a program has with the outside world. It is used to transfer data items in succession. An Input/Output (I/O) Stream represents

More information

Chair of Software Engineering. Java and C# in Depth. Prof. Dr. Bertrand Meyer. Exercise Session 7. Nadia Polikarpova

Chair of Software Engineering. Java and C# in Depth. Prof. Dr. Bertrand Meyer. Exercise Session 7. Nadia Polikarpova Chair of Software Engineering Java and C# in Depth Prof. Dr. Bertrand Meyer Exercise Session 7 Nadia Polikarpova Quiz 1: Does it compile? (Java) public class MyException extends Exception { Checked exception...

More information

Full file at Chapter 2 - Inheritance and Exception Handling

Full file at   Chapter 2 - Inheritance and Exception Handling Chapter 2 - Inheritance and Exception Handling TRUE/FALSE 1. The superclass inherits all its properties from the subclass. ANS: F PTS: 1 REF: 76 2. Private members of a superclass can be accessed by a

More information

Programming - 2. Common Errors

Programming - 2. Common Errors Common Errors There are certain common errors and exceptions which beginners come across and find them very annoying. Here we will discuss these and give a little explanation of what s going wrong and

More information

CS 231 Data Structures and Algorithms Fall Binary Search Trees Lecture 23 October 29, Prof. Zadia Codabux

CS 231 Data Structures and Algorithms Fall Binary Search Trees Lecture 23 October 29, Prof. Zadia Codabux CS 231 Data Structures and Algorithms Fall 2018 Binary Search Trees Lecture 23 October 29, 2018 Prof. Zadia Codabux 1 Agenda Ternary Operator Binary Search Tree Node based implementation Complexity 2 Administrative

More information

Getting started with Java

Getting started with Java Getting started with Java by Vlad Costel Ungureanu for Learn Stuff Programming Languages A programming language is a formal constructed language designed to communicate instructions to a machine, particularly

More information

CS263: Runtime Systems Lecture: High-level language virtual machines

CS263: Runtime Systems Lecture: High-level language virtual machines CS263: Runtime Systems Lecture: High-level language virtual machines Today: A Review of Object-oriented features Chandra Krintz UCSB Computer Science Department Virtual machines (VMs) Terminology Aka managed

More information

Array. Array Declaration:

Array. Array Declaration: Array Arrays are continuous memory locations having fixed size. Where we require storing multiple data elements under single name, there we can use arrays. Arrays are homogenous in nature. It means and

More information

Preview from Notesale.co.uk Page 3 of 36

Preview from Notesale.co.uk Page 3 of 36 all people who know the language. Similarly, programming languages also have a vocabulary, which is referred to as the set of keywords of that language, and a grammar, which is referred to as the syntax.

More information

Oracle 1z Java Standard Edition 5 Programmer Certified Professional Upgrade Exam. Practice Test. Version: https://certkill.

Oracle 1z Java Standard Edition 5 Programmer Certified Professional Upgrade Exam. Practice Test. Version: https://certkill. Oracle 1z0-854 Java Standard Edition 5 Programmer Certified Professional Upgrade Exam Practice Test Version: 14.20 QUESTION NO: 1 Oracle 1z0-854: Practice Exam 20. public class CreditCard { 21. 22. private

More information

CSCI 136 Written Exam #1 Fundamentals of Computer Science II Spring 2013

CSCI 136 Written Exam #1 Fundamentals of Computer Science II Spring 2013 CSCI 136 Written Exam #1 Fundamentals of Computer Science II Spring 2013 Name: This exam consists of 5 problems on the following 6 pages. You may use your double-sided hand-written 8 ½ x 11 note sheet

More information

MSc/ICY Software Workshop Exception Handling, Assertions Scanner, Patterns File Input/Output

MSc/ICY Software Workshop Exception Handling, Assertions Scanner, Patterns File Input/Output MSc/ICY Software Workshop Exception Handling, Assertions Scanner, Patterns File Input/Output Manfred Kerber www.cs.bham.ac.uk/~mmk 21 October 2015 1 / 18 Manfred Kerber Classes and Objects The information

More information

Assumptions. History

Assumptions. History Assumptions A Brief Introduction to Java for C++ Programmers: Part 1 ENGI 5895: Software Design Faculty of Engineering & Applied Science Memorial University of Newfoundland You already know C++ You understand

More information

Conversions and Casting

Conversions and Casting Conversions and Casting Taken and modified slightly from the book The Java TM Language Specification, Second Edition. Written by Sun Microsystems. Conversion of one reference type to another is divided

More information

Selected Java Topics

Selected Java Topics Selected Java Topics Introduction Basic Types, Objects and Pointers Modifiers Abstract Classes and Interfaces Exceptions and Runtime Exceptions Static Variables and Static Methods Type Safe Constants Swings

More information

CSC Java Programming, Fall Java Data Types and Control Constructs

CSC Java Programming, Fall Java Data Types and Control Constructs CSC 243 - Java Programming, Fall 2016 Java Data Types and Control Constructs Java Types In general, a type is collection of possible values Main categories of Java types: Primitive/built-in Object/Reference

More information

Lesson 3: Accepting User Input and Using Different Methods for Output

Lesson 3: Accepting User Input and Using Different Methods for Output Lesson 3: Accepting User Input and Using Different Methods for Output Introduction So far, you have had an overview of the basics in Java. This document will discuss how to put some power in your program

More information

6.092 Introduction to Software Engineering in Java January (IAP) 2009

6.092 Introduction to Software Engineering in Java January (IAP) 2009 MIT OpenCourseWare http://ocw.mit.edu 6.092 Introduction to Software Engineering in Java January (IAP) 2009 For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms.

More information

Chapter 5 Names, Bindings, Type Checking, and Scopes

Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Names, Bindings, Type Checking, and Scopes Names Variables The Concept of Binding Scope and Lifetime Type Checking Referencing Environments Named Constants Names Used for variables, subprograms

More information

*Java has included a feature that simplifies the creation of

*Java has included a feature that simplifies the creation of Java has included a feature that simplifies the creation of methods that need to take a variable number of arguments. This feature is called as varargs (short for variable-length arguments). A method that

More information

Variables and Java vs C++

Variables and Java vs C++ Variables and Java vs C++ 1 What can be improved? (variables) public void godirection(string directionname) { boolean wenttoroom = false; for (Direction direction : currentroom.getdirections()) { if (direction.getdirectionname().equalsignorecase(directionname))

More information

CS 1331 Exam 1 ANSWER KEY

CS 1331 Exam 1 ANSWER KEY CS 1331 Exam 1 Fall 2016 ANSWER KEY Failure to properly fill in the information on this page will result in a deduction of up to 5 points from your exam score. Signing signifies you are aware of and in

More information

CIS133J. Working with Numbers in Java

CIS133J. Working with Numbers in Java CIS133J Working with Numbers in Java Contents: Using variables with integral numbers Using variables with floating point numbers How to declare integral variables How to declare floating point variables

More information

CS/ENGRD 2110 SPRING Lecture 2: Objects and classes in Java

CS/ENGRD 2110 SPRING Lecture 2: Objects and classes in Java 1 CS/ENGRD 2110 SPRING 2014 Lecture 2: Objects and classes in Java http://courses.cs.cornell.edu/cs2110 Java OO (Object Orientation) 2 Python and Matlab have objects and classes. Strong-typing nature of

More information

Introduction to Java

Introduction to Java Introduction to Java Module 1: Getting started, Java Basics 22/01/2010 Prepared by Chris Panayiotou for EPL 233 1 Lab Objectives o Objective: Learn how to write, compile and execute HelloWorld.java Learn

More information

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