You can do better with Kotlin. Svetlana Isakova

Size: px
Start display at page:

Download "You can do better with Kotlin. Svetlana Isakova"

Transcription

1 You can do better with Kotlin Svetlana Isakova

2 Kotlin Programming Language - modern - pragmatic - Android-friendly

3 Official on Android

4 Not only Android

5 Pragmatic - tooling - Java interop

6 From

7 has good tooling

8 - completion - navigation - refactorings - inspections

9 can be easily mixed with Java code

10 compiled to Java bytecode *.java *.kt *.class *.dex

11 You can have Java & Kotlin code in one project Kotlin code Java code

12 You can gradually add Kotlin to your existing app

13 Android-friendly

14 Android Studio is based on IntelliJ IDEA

15 just another library for your app rxjava kotlin-stdlib

16 No Kotlin SDK just JDK + extensions small runtime jar easy Java interop

17 Modern - concise - safe - expressive

18 concise

19 public class Person { private final String name; private final int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getname() { } return name; public int getage() { return age; } }

20 data class Person(val name: String, val age: Int) - equals - hashcode - tostring

21 public class Person { private final String name; private final int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getname() { return name; } public int getage() { return age; } } class Person( ) val name: String, val age: Int person.name person.getname()

22 class Person( ) val name: String, val age: Int person.getname()

23 public class Person { private final String name; private final int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getname() { return name; } public int getage() { return age; } } person.name

24 public void updateweather(int degrees) { String description; Colour colour; if (degrees < 5) { description = "cold"; enum Colour { BLUE, ORANGE, RED, /*...*/; } colour = BLUE; } else if (degrees < 23) { description = "mild"; colour = ORANGE; } else { description = "hot"; colour = RED; } //... }

25 fun updateweather(degrees: Int) { val description: String val colour: Colour if (degrees < 5) { description = "cold" colour = BLUE } else if (degrees < 23) { description = "mild" colour = ORANGE } else { description = "hot" colour = RED } //... }

26 fun updateweather(degrees: Int) { val (description: String, colour: Colour) = if (degrees < 5) { Pair("cold", BLUE) } else if (degrees < 23) { Pair("mild", ORANGE) } else { Pair("hot", RED) } //... }

27 fun updateweather(degrees: Int) { val (description, colour) = if (degrees < 5) { Pair("cold", BLUE) } else if (degrees < 23) { Pair("mild", ORANGE) } else { Pair("hot", RED) } //... }

28 fun updateweather(degrees: Int) { val (description, colour) = when { degrees < 5 -> Pair("cold", BLUE) degrees < 23 -> Pair("mild", ORANGE) else -> Pair("hot", RED) } //... }

29 fun updateweather(degrees: Int) { val (description, colour) = when { degrees < 5 -> "cold" to BLUE degrees < 23 -> "mild" to ORANGE else -> "hot" to RED } }

30 String description; Colour colour; if (degrees < 5) { description = "cold"; colour = BLUE; } else if (degrees < 23) { description = "mild"; colour = ORANGE; } else { description = "hot"; colour = RED; } val (description, colour) = when { degrees < 5 -> "cold" to BLUE degrees < 23 -> "mild" to ORANGE else -> "hot" to RED }

31 safe

32 Billion Dollar Mistake

33 Modern approach: to make NPE compile-time error, not run-time error

34 Nullable types in Kotlin val s1: String = "always null not null" val s2: String? = "can null be null or non-null" s1.length s2.length

35 Dealing with Nullable Types val s: String? if (s!= null) { } s.length

36 Dealing with Nullable Types val s: String? s?.length

37 Nullability operators val s: String? val length = if (s!= null) s.length else null val length = s?.length

38 Nullability operators val s: String? val length = if (s!= null) s.length else 0 val length = s?.length?: 0

39 Control-flow analysis val s: String? if (s == null) fail() s.length

40 Making NPE explicit val s: String? s!! throws NPE if s is null s!!.length

41 Nullable Types Under annotations No performance overhead

42 Annotate your Java types in Kotlin Type behaves like regular Java Type Type

43 Nullable types Optional class Optional<T>(val value: T) { fun ispresent() = value!= null } fun get() = value?: throw NoSuchElementException("No value present")

44 expressive

45 expressive you can avoid any repetition you can make the code look nicer you can create API looking like DSL

46 Extension Functions

47 Extension Functions fun String.lastChar() = this.get(this.length - 1) this can be omitted fun String.lastChar() = get(length - 1)

48 Extension Functions fun String.lastChar() = get(length - 1) import com.example.util.lastchar import com.example.util.* val c: Char = "abc".lastchar()

49 Calling Extension Functions from Java code StringExtensions.kt fun String.lastChar() = get(length - 1) JavaClass.java import char c static = StringExtensionsKt.lastChar("abc"); StringExtensionsKt.lastChar; char c = lastchar("abc");

50 Extension Functions fun String.lastChar() = get(length - 1) Is it possible to call a private member of String here? No. Because it s a regular static method under the hood.

51 Extensions for Android Toast.makeText(this, "Thank you!, Toast.LENGTH_SHORT).show() Activity this.toast("thank you!") extension function on Activity toast("thank you!")

52 Extensions for Android val intent = Intent(this, NewActivity::class.java) intent.putextra("answer", 42) startactivity(intent) this.startactivity<newactivity>( ANSWER" to 42)

53 The to extension function infix fun <A, B> A.to(that: B) = Pair(this, that) "ANSWER".to(42) "hot" to RED mapof(0 to "zero", 1 to "one")

54 Lambdas

55 Lambdas button.addactionlistener { println("hi") }

56 Working with collections with Lambdas val employees: List<Employee> data class Employee( val city: City, val age: Int What s an average age of employees working in Prague? ) employees.filter { it.city == City.PRAGUE }.map { it.age }.average() { employee: Employee -> employee.city == City.PRAGUE }

57 Working with collections with Lambdas val employees: List<Employee> data class Employee( val city: City, val age: Int What s an average age of employees working in Prague? ) employees.filter { it.city == City.PRAGUE }.map { it.age }.average() extension functions

58 Kotlin library: extensions on collections filter count flatmap map reduce find any groupby

59 Under the Hood Lambdas can be inlined No performance overhead

60 Extension Function & Lambda Lambda with receiver

61 The with function val sb = StringBuilder() sb.appendln("alphabet: ") for (c in 'a'..'z') { sb.append(c) } with is a function sb.tostring() val sb = StringBuilder() with (sb) { appendln("alphabet: ") for (c in 'a'..'z') { append(c) } tostring() }

62 with is a function Lambda with receiver val sb = StringBuilder() with (sb) (sb, { -> this.appendln( Alphabet: ") lambda is its second argument }) for (c in 'a'..'z') { this.append(c) } this.tostring() this is an implicit receiver in the lambda this can be omitted val sb = StringBuilder() with (sb) { appendln("alphabet: ") for (c in 'a'..'z') { append(c) } tostring() }

63 The with function declaration inline fun <T, R> with( receiver: T, block: T.() -> R ): R = receiver.block() with (sb) { appendln("alphabet: ")... }

64 Lambda with receiver lambda with implicit this val sb = StringBuilder() with (sb) { appendln("alphabet: ") for (c in 'a'..'z') { this.append(c) } }

65 HTML Builders lambdas with receiver html { table { for (product in products) { tr { td { text(product.description) } td { text(product.price) } td { text(product.popularity) } } } } }

66 Avoiding Duplication val db: SQLiteDatabase = db.begintransaction() try { db.delete("users", "first_name =?", arrayof("jake")) db.settransactionsuccessful() } finally { db.endtransaction() } db.intransaction { } delete("users", "first_name =?", arrayof("jake"))

67 Inline functions is declared as inline function db.intransaction { } delete("users", "first_name =?", arrayof("jake")) generated bytecode is similar to db.begintransaction() try { db.delete("users", "first_name =?", arrayof("jake")) db.settransactionsuccessful() } finally { db.endtransaction() }

68 ANKO-DSL DSL for dynamic layouts

69 Alerts fun Activity.showAreYouSureAlert(process: () -> Unit) { alert(title = "Are you sure?", message = "Are you really sure?") { positivebutton("yes") { process() } negativebutton("no") { } }.show() Are you sure? } Are you really sure? No Yes

70 Custom layouts customview { verticallayout { val = edittext { hint = " " Password } Log In val password = edittext { hint = "Password" transformationmethod = PasswordTransformationMethod.getInstance() } positivebutton("log In") { } login( .text, password.text) } }

71 kotlinlang.org

72 Gradle & Kotlin Writing Gradle build scripts and plugins in Kotlin

73 try.kotlinlang.org

74 Kotlin Koans

75

76 Have a nice Kotlin!

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

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

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

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

KAI KOENIG ANKO THE ULTIMATE NINJA OF KOTLIN LIBRARIES?

KAI KOENIG ANKO THE ULTIMATE NINJA OF KOTLIN LIBRARIES? KAI KOENIG (@AGENTK) ANKO THE ULTIMATE NINJA OF KOTLIN LIBRARIES? AGENDA What are Kotlin and Anko? Anko-related idioms and language concepts Anko DSL The hidden parts of Anko Anko VS The Rest Final thoughts

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

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

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

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

Android Application Development using Kotlin

Android Application Development using Kotlin Android Application Development using Kotlin 1. Introduction to Kotlin a. Kotlin History b. Kotlin Advantages c. How Kotlin Program Work? d. Kotlin software Prerequisites i. Installing Java JDK and JRE

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

Building Vaadin Applications With Pure Scala

Building Vaadin Applications With Pure Scala Building Vaadin Applications With Pure Scala Henri Kerola Vaadin Expert at Vaadin Ltd ? Vaadin is a UI framework for rich web applications java html Internet Explorer Chrome Firefox Safari Opera

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

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

SAMPLE CHAPTER. Dmitry Jemerov Svetlana Isakova. FOREWORD BY Andrey Breslav MANNING

SAMPLE CHAPTER. Dmitry Jemerov Svetlana Isakova. FOREWORD BY Andrey Breslav MANNING SAMPLE CHAPTER Dmitry Jemerov Svetlana Isakova FOREWORD BY Andrey Breslav MANNING Kotlin in Action by Dmitry Jemerov and Svetlana Isakova Sample Chapter 11 Copyright 2017 Manning Publications brief contents

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

Applied Cognitive Computing Fall 2016 Android Application + IBM Bluemix (Cloudant NoSQL DB)

Applied Cognitive Computing Fall 2016 Android Application + IBM Bluemix (Cloudant NoSQL DB) Applied Cognitive Computing Fall 2016 Android Application + IBM Bluemix (Cloudant NoSQL DB) In this exercise, we will create a simple Android application that uses IBM Bluemix Cloudant NoSQL DB. The application

More information

Getting Started with Kotlin. Commerzbank Java Developer Day

Getting Started with Kotlin. Commerzbank Java Developer Day Getting Started with Kotlin Commerzbank Java Developer Day 30.11.2017 Hello! Alexander Hanschke Hello! Alexander Hanschke CTO at techdev Solutions GmbH in Berlin Hello! Alexander Hanschke CTO at techdev

More information

2 years without Java or reload Android development with Kotlin.

2 years without Java or reload Android development with Kotlin. 2 years without Java or reload Android development with Kotlin KirillRozov@EPAM Who am I? Team Lead in EPAM More than 6 years in Android development Kotlin Evangelist Co-organizer GDG Minsk, Android Academy

More information

Multi-catch. Future Features. Sometimes we need to handle more than one exception in a single catch block:

Multi-catch. Future Features. Sometimes we need to handle more than one exception in a single catch block: 1 Multi-catch Sometimes we need to handle more than one exception in a single catch block: try { // some code } catch (e: ExceptionA ExceptionB) { log(e); throw e; } Note that this is not proposing general

More information

Coding Guidelines. Introduction. General Points. Avoid redundant initialization/assignment

Coding Guidelines. Introduction. General Points. Avoid redundant initialization/assignment Coding Guidelines Introduction General Points Avoid redundant initialization/assignment Use of "!" instead of explicit "== true" and "== false" Anonymous inner classes. Members sort order Naming Abbreviations

More information

Efficient Java (with Stratosphere) Arvid Heise, Large Scale Duplicate Detection

Efficient Java (with Stratosphere) Arvid Heise, Large Scale Duplicate Detection Efficient Java (with Stratosphere) Arvid Heise, Large Scale Duplicate Detection Agenda 2 Bottlenecks Mutable vs. Immutable Caching/Pooling Strings Primitives Final Classloaders Exception Handling Concurrency

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

Informatik II (D-ITET) Tutorial 6

Informatik II (D-ITET) Tutorial 6 Informatik II (D-ITET) Tutorial 6 TA: Marian George, E-mail: marian.george@inf.ethz.ch Distributed Systems Group, ETH Zürich Exercise Sheet 5: Solutions and Remarks Variables & Methods beginwithlowercase,

More information

Informatik II. Tutorial 6. Mihai Bâce Mihai Bâce. April 5,

Informatik II. Tutorial 6. Mihai Bâce Mihai Bâce. April 5, Informatik II Tutorial 6 Mihai Bâce mihai.bace@inf.ethz.ch 05.04.2017 Mihai Bâce April 5, 2017 1 Overview Debriefing Exercise 5 Briefing Exercise 6 Mihai Bâce April 5, 2017 2 U05 Some Hints Variables &

More information

A First Object. We still have another problem. How can we actually make use of the class s data?

A First Object. We still have another problem. How can we actually make use of the class s data? A First Object // a very basic C++ object class Person public: Person(string name, int age); private: string name; int age; We still have another problem. How can we actually make use of the class s data?

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

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

ARCHETYPE MODERN ANDROID ARCHITECTURE STEPAN GONCHAROV / DENIS NEKLIUDOV

ARCHETYPE MODERN ANDROID ARCHITECTURE STEPAN GONCHAROV / DENIS NEKLIUDOV ARCHETYPE MODERN ANDROID ARCHITECTURE STEPAN GONCHAROV / DENIS NEKLIUDOV 90seconds.tv 14000+ VIDEOS 1200+ BRANDS 92+ COUNTRIES data class RegisterViewModelStateImpl( override val email: ObservableString

More information

Lecture 10. Overriding & Casting About

Lecture 10. Overriding & Casting About Lecture 10 Overriding & Casting About Announcements for This Lecture Readings Sections 4.2, 4.3 Prelim, March 8 th 7:30-9:30 Material up to next Tuesday Sample prelims from past years on course web page

More information

Data binding. in a Kotlin world. Lisa

Data binding. in a Kotlin world. Lisa Data binding in a Kotlin world Lisa Wray Data binding in a Kotlin world Lisa Wray Data binding in a Kotlin world Lisa Wray Less code is better code 1. Quick tour of The Best Parts of data binding 2. Kotlin

More information

Building Microservices with Kotlin. Haim Yadid

Building Microservices with Kotlin. Haim Yadid Building Microservices with Kotlin Haim Yadid Disclaimer The purpose of this talk is to share our experience and with Kotlin not to teach the language syntax. I will delve into some details for for the

More information

IntelliJ IDEA, the most intelligent Java IDE

IntelliJ IDEA, the most intelligent Java IDE IntelliJ IDEA, the most intelligent Java IDE IntelliJ IDEA, JetBrains flagship Java IDE, provides high-class support and productivity boosts for enterprise, mobile and web development in Java, Scala and

More information

MARS AREA SCHOOL DISTRICT Curriculum TECHNOLOGY EDUCATION

MARS AREA SCHOOL DISTRICT Curriculum TECHNOLOGY EDUCATION Course Title: Java Technologies Grades: 10-12 Prepared by: Rob Case Course Unit: What is Java? Learn about the history of Java. Learn about compilation & Syntax. Discuss the principles of Java. Discuss

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

1B1b. Classes in Java Part III. Review. Static. Static (2) Example. Static (3) 1B1b Lecture Slides. Copyright 2004, Graham Roberts 1

1B1b. Classes in Java Part III. Review. Static. Static (2) Example. Static (3) 1B1b Lecture Slides. Copyright 2004, Graham Roberts 1 1B1b Classes in Java Part III Review We have seen that classes: declare instance variables. declare methods. may have constructors. Now want to start filling in further details. 1 2 Static Why are some

More information

Introduction To JAVA Programming Language

Introduction To JAVA Programming Language Introduction To JAVA Programming Language JAVA is a programming language which is used in Android App Development. It is class based and object oriented programming whose syntax is influenced by C++. The

More information

Modern Web Development with Kotlin

Modern Web Development with Kotlin Modern Web Development with Kotlin A concise and practical step-by-step guide Denis Kalinin This book is for sale at http://leanpub.com/modern-web-development-with-kotlin This version was published on

More information

Thinking Functionally

Thinking Functionally Thinking Functionally Dan S. Wallach and Mack Joyner, Rice University Copyright 2016 Dan S. Wallach, All Rights Reserved Reminder: Fill out our web form! Fill this out ASAP if you haven t already. http://goo.gl/forms/arykwbc0zy

More information

DSL. ~ dsl_slides * about::contacts(me)

DSL. ~ dsl_slides * about::contacts(me) DSL ~ dsl_slides * about::contacts(me) Aliaksandr Salnikau (Александр Сальников) Company: EPAM Position: Lead Software Engineer Primary skill: Android Contacts: email: aliaksandr_salnikau@epam.com skype:

More information

Intel Multi-OS Engine. Vitaly Adobe

Intel Multi-OS Engine. Vitaly Adobe Intel Multi-OS Engine Vitaly Tsaplin @ Adobe Introduction Technology Overview Agenda Development Workflow Deep Dive: Java To Native Bindings Takeaways QA Introduction The challenge of modern cross-platform

More information

Frequently Asked Questions

Frequently Asked Questions Frequently Asked Questions This PowerTools FAQ answers many frequently asked questions regarding the functionality of the various parts of the PowerTools suite. The questions are organized in the following

More information

Java language. Part 1. Java fundamentals. Yevhen Berkunskyi, NUoS

Java language. Part 1. Java fundamentals. Yevhen Berkunskyi, NUoS Java language Part 1. Java fundamentals Yevhen Berkunskyi, NUoS eugeny.berkunsky@gmail.com http://www.berkut.mk.ua What Java is? Programming language Platform: Hardware Software OS: Windows, Linux, Solaris,

More information

Starting Another Activity Preferences

Starting Another Activity Preferences Starting Another Activity Preferences Android Application Development Training Xorsat Pvt. Ltd www.xorsat.net fb.com/xorsat.education Outline Starting Another Activity Respond to the Button Create the

More information

Implementation of F# language support in JetBrains Rider IDE

Implementation of F# language support in JetBrains Rider IDE SAINT-PETERSBURG STATE UNIVERSITY Software Engineering Evgeniy Auduchinok Implementation of F# language support in JetBrains Rider IDE Graduation Thesis Scientific supervisor: Senior lecturer Iakov Kirilenko

More information

IntelliJ IDEA Static Code Analysis Hamlet D'Arcy

IntelliJ IDEA Static Code Analysis Hamlet D'Arcy IntelliJ IDEA Static Code Analysis Hamlet D'Arcy Canoo Engineering AG @HamletDRC http://hamletdarcy.blogspot.com Static Code Analysis Code Inspections JSR 305 and 308 Annotations Duplicate Detection Stack

More information

Free your Lambdas Java SE 8

Free your Lambdas Java SE 8 Free your Lambdas Java SE 8 Agenda Tutorial session: we will start at the very beginning! and explore how to build functional interfaces to design new APIs This is about lambdas and functional interfaces

More information

INHERITANCE. Spring 2019

INHERITANCE. Spring 2019 INHERITANCE Spring 2019 INHERITANCE BASICS Inheritance is a technique that allows one class to be derived from another A derived class inherits all of the data and methods from the original class Suppose

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

1. Implementation of Inheritance with objects, methods. 2. Implementing Interface in a simple java class. 3. To create java class with polymorphism

1. Implementation of Inheritance with objects, methods. 2. Implementing Interface in a simple java class. 3. To create java class with polymorphism ANDROID TRAINING COURSE CONTENT SECTION 1 : INTRODUCTION Android What it is? History of Android Importance of Java language for Android Apps Other mobile OS-es Android Versions & different development

More information

Introduction to Mobile Development

Introduction to Mobile Development Introduction to Mobile Development Building mobile applications can be as easy as opening up the IDE, throwing something together, doing a quick bit of testing, and submitting to an App Store all done

More information

Topic 7: Algebraic Data Types

Topic 7: Algebraic Data Types Topic 7: Algebraic Data Types 1 Recommended Exercises and Readings From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 5.5, 5.7, 5.8, 5.10, 5.11, 5.12, 5.14 14.4, 14.5, 14.6 14.9, 14.11,

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

INTERFACE WHY INTERFACE

INTERFACE WHY INTERFACE INTERFACE WHY INTERFACE Interfaces allow functionality to be shared between objects that agree to a contract on how the software should interact as a unit without needing knowledge of how the objects accomplish

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

Goals for Today. CSE1030 Introduction to Computer Science II. CSE1030 Lecture #9. Review is-a versus has-a. Lecture #9 Inheritance I

Goals for Today. CSE1030 Introduction to Computer Science II. CSE1030 Lecture #9. Review is-a versus has-a. Lecture #9 Inheritance I CSE1030 Introduction to Computer Science II Lecture #9 Inheritance I Goals for Today Today we start discussing Inheritance (continued next lecture too) This is an important fundamental feature of Object

More information

The Hack programming language:

The Hack programming language: The Hack programming language: Types for PHP Andrew Kennedy Facebook Facebook s PHP Codebase 350,000 files >10,000,000 LoC (www.facebook.com & internally) 1000s of commits per day, 2 releases per day Anecdotally,

More information

INDEX. A SIMPLE JAVA PROGRAM Class Declaration The Main Line. The Line Contains Three Keywords The Output Line

INDEX. A SIMPLE JAVA PROGRAM Class Declaration The Main Line. The Line Contains Three Keywords The Output Line A SIMPLE JAVA PROGRAM Class Declaration The Main Line INDEX The Line Contains Three Keywords The Output Line COMMENTS Single Line Comment Multiline Comment Documentation Comment TYPE CASTING Implicit Type

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

Abstract class & Interface

Abstract class & Interface Islamic University of Gaza Faculty of Engineering Computer Engineering Department Computer Programming Lab (ECOM 2124) Lab 3 Abstract class & Interface Eng. Mohammed Abdualal Abstract class 1. An abstract

More information

Introduce C# as Object Oriented programming language. Explain, tokens,

Introduce C# as Object Oriented programming language. Explain, tokens, Module 2 98 Assignment 1 Introduce C# as Object Oriented programming language. Explain, tokens, lexicals and control flow constructs. 99 The C# Family Tree C Platform Independence C++ Object Orientation

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

Syllabus- Java + Android. Java Fundamentals

Syllabus- Java + Android. Java Fundamentals Introducing the Java Technology Syllabus- Java + Android Java Fundamentals Key features of the technology and the advantages of using Java Using an Integrated Development Environment (IDE) Introducing

More information

Object-Oriented Databases db4o: Part 2

Object-Oriented Databases db4o: Part 2 Object-Oriented Databases db4o: Part 2 Configuration and Tuning Distribution and Replication Callbacks and Translators 1 Summary: db4o Part 1 Managing databases with an object container Retrieving objects

More information

Taming the Spaghetti: Rich Web Applications With Errai. Christian Sadilek Lincoln Baxter III JBoss / Red Hat

Taming the Spaghetti: Rich Web Applications With Errai. Christian Sadilek Lincoln Baxter III JBoss / Red Hat Taming the Spaghetti: Rich Web Applications With Errai Christian Sadilek (@csadilek) Lincoln Baxter III (@lincolnthree) JBoss / Red Hat Another Java Web Framework? Photo by: darkuncle From: Flickr What

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

Computer Science Large Practical: Storage, Settings and Layouts. Stephen Gilmore School of Informatics October 26, 2017

Computer Science Large Practical: Storage, Settings and Layouts. Stephen Gilmore School of Informatics October 26, 2017 Computer Science Large Practical: Storage, Settings and Layouts Stephen Gilmore School of Informatics October 26, 2017 Contents 1. Storing information 2. Kotlin compilation 3. Settings 4. Layouts 1 Storing

More information

EECS 1001 and EECS 1030M, lab 01 conflict

EECS 1001 and EECS 1030M, lab 01 conflict EECS 1001 and EECS 1030M, lab 01 conflict Those students who are taking EECS 1001 and who are enrolled in lab 01 of EECS 1030M should switch to lab 02. If you need my help with switching lab sections,

More information

SSE3052: Embedded Systems Practice

SSE3052: Embedded Systems Practice SSE3052: Embedded Systems Practice Minwoo Ahn minwoo.ahn@csl.skku.edu Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu SSE3052: Embedded Systems Practice, Spring 2018, Jinkyu Jeong

More information

Course Content. Objectives of Lecture 18 Black box testing and planned debugging. Outline of Lecture 18

Course Content. Objectives of Lecture 18 Black box testing and planned debugging. Outline of Lecture 18 Structural Programming and Data Structures Winter 2000 CMPUT 102: Testing and Debugging Dr. Osmar R. Zaïane Course Content Introduction Objects Methods Tracing Programs Object State Sharing resources Selection

More information

Groovy. Extending Java with scripting capabilities. Last updated: 10 July 2017

Groovy. Extending Java with scripting capabilities. Last updated: 10 July 2017 Groovy Extending Java with scripting capabilities Last updated: 10 July 2017 Pepgo Limited, 71-75 Shelton Street, Covent Garden, London, WC2H 9JQ, United Kingdom Contents About Groovy... 3 Install Groovy...

More information

Course Content. Objectives of Lecture 24 Inheritance. Outline of Lecture 24. Inheritance Hierarchy. The Idea Behind Inheritance

Course Content. Objectives of Lecture 24 Inheritance. Outline of Lecture 24. Inheritance Hierarchy. The Idea Behind Inheritance Structural Programming and Data Structures Winter 2000 CMPUT 102: Dr. Osmar R. Zaïane Course Content Introduction Objects Methods Tracing Programs Object State Sharing resources Selection Repetition Vectors

More information

For more details on SUN Certifications, visit

For more details on SUN Certifications, visit Java.lang Package For more details on SUN Certifications, visit http://sunjavasnips.blogspot.com/ Q:01 Given: public class Person { private String name, comment; private int age; public Person(String n,

More information

Course Content. Objectives of Lecture 24 Inheritance. Outline of Lecture 24. CMPUT 102: Inheritance Dr. Osmar R. Zaïane. University of Alberta 4

Course Content. Objectives of Lecture 24 Inheritance. Outline of Lecture 24. CMPUT 102: Inheritance Dr. Osmar R. Zaïane. University of Alberta 4 Structural Programming and Data Structures Winter 2000 CMPUT 102: Inheritance Dr. Osmar R. Zaïane Course Content Introduction Objects Methods Tracing Programs Object State Sharing resources Selection Repetition

More information

ArcGIS Runtime SDK for Android: Building Apps. Shelly Gill

ArcGIS Runtime SDK for Android: Building Apps. Shelly Gill ArcGIS Runtime SDK for Android: Building Apps Shelly Gill Agenda Getting started SDK Common patterns and Example Apps Android platform updates Kotlin Team goals for upcoming releases Other sessions ArcGIS

More information

Kotlin/Native concurrency model. nikolay

Kotlin/Native concurrency model. nikolay Kotlin/Native concurrency model nikolay igotti@jetbrains What do we want from concurrency? Do many things concurrently Easily offload tasks Get notified once task a task is done Share state safely Mutate

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

Using Scala for building DSL s

Using Scala for building DSL s Using Scala for building DSL s Abhijit Sharma Innovation Lab, BMC Software 1 What is a DSL? Domain Specific Language Appropriate abstraction level for domain - uses precise concepts and semantics of domain

More information

Servlet for Json or CSV (or XML) A servlet serving either Json or CSV (or XML) based on GET parameter - This version uses org.json

Servlet for Json or CSV (or XML) A servlet serving either Json or CSV (or XML) based on GET parameter - This version uses org.json Servlet for Json or CSV (or XML) A servlet serving either Json or CSV (or XML) based on GET parameter - This version uses org.json A Servlet used as an API for data Let s say we want to write a Servlet

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

SPRING 13 CS 0007 FINAL EXAM V2 (Roberts) Your Name: A pt each. B pt each. C pt each. D or 2 pts each

SPRING 13 CS 0007 FINAL EXAM V2 (Roberts) Your Name: A pt each. B pt each. C pt each. D or 2 pts each Your Name: Your Pitt (mail NOT peoplesoft) ID: Part Question/s Points available Rubric Your Score A 1-6 6 1 pt each B 7-12 6 1 pt each C 13-16 4 1 pt each D 17-19 5 1 or 2 pts each E 20-23 5 1 or 2 pts

More information

Informatik II Tutorial 6. Subho Shankar Basu

Informatik II Tutorial 6. Subho Shankar Basu Informatik II Tutorial 6 Subho Shankar Basu subho.basu@inf.ethz.ch 06.04.2017 Overview Debriefing Exercise 5 Briefing Exercise 6 2 U05 Some Hints Variables & Methods beginwithlowercase, areverydescriptiveand

More information

CLASS DESIGN. Objectives MODULE 4

CLASS DESIGN. Objectives MODULE 4 MODULE 4 CLASS DESIGN Objectives > After completing this lesson, you should be able to do the following: Use access levels: private, protected, default, and public. Override methods Overload constructors

More information

Remedial classes. G51PRG: Introduction to Programming Second semester Lecture 2. Plan of the lecture. Classes and Objects. Example: Point class

Remedial classes. G51PRG: Introduction to Programming Second semester Lecture 2. Plan of the lecture. Classes and Objects. Example: Point class G51PRG: Introduction to Programming Second semester Lecture 2 Remedial classes Monday 3-5 in A32 Contact Yan Su (yxs) Ordinary labs start on Tuesday Natasha Alechina School of Computer Science & IT nza@cs.nott.ac.uk

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

ATC Android Application Development

ATC Android Application Development ATC Android Application Development 1. Android Framework and Android Studio b. Android Platform Architecture i. Linux Kernel ii. Hardware Abstraction Layer(HAL) iii. Android runtime iv. Native C/C++ Libraries

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

CS113: Lecture 4. Topics: Functions. Function Activation Records

CS113: Lecture 4. Topics: Functions. Function Activation Records CS113: Lecture 4 Topics: Functions Function Activation Records 1 Why functions? Functions add no expressive power to the C language in a formal sense. Why have them? Breaking tasks into smaller ones make

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

Create new Android project in Android Studio Add Button and TextView to layout Learn how to use buttons to call methods. Modify strings.

Create new Android project in Android Studio Add Button and TextView to layout Learn how to use buttons to call methods. Modify strings. Hello World Lab Objectives: Create new Android project in Android Studio Add Button and TextView to layout Learn how to use buttons to call methods. Modify strings.xml What to Turn in: The lab evaluation

More information

Simple Data Source Crawler Plugin to Set the Document Title

Simple Data Source Crawler Plugin to Set the Document Title Simple Data Source Crawler Plugin to Set the Document Title IBM Content Analytics 1 Contents Introduction... 4 Basic FS Crawler behavior.... 8 Using the Customizer Filter to Modify the title Field... 13

More information

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

Copyright 2012, Oracle and/or its affiliates. All rights reserved. 1 Jump-Starting Lambda Stuart Marks @stuartmarks Mike Duigou @mjduigou Oracle JDK Core Libraries Team 2 What is Lambda? Essentially an anonymous function allows one to treat code as data provides parameterization

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

Hello World. Lesson 1. Create your first Android. Android Developer Fundamentals. Android Developer Fundamentals

Hello World. Lesson 1. Create your first Android. Android Developer Fundamentals. Android Developer Fundamentals Hello World Lesson 1 1 1.1 Create Your First Android App 2 Contents Android Studio Creating "Hello World" app in Android Studio Basic app development workflow with Android Studio Running apps on virtual

More information

Informatica PIM. Data Lookup via Java Transformations. Version: Date:

Informatica PIM. Data Lookup via Java Transformations. Version: Date: Informatica PIM Data Lookup via Java Transformations Version: Date: 23 July 29, 2014 Table of Contents Introduction 3 Step-by-step example 3 Create a new Java Transformation 3 Include code to retrieve

More information

ArcGIS Runtime SDK for Java: Building Apps. Mark Baird

ArcGIS Runtime SDK for Java: Building Apps. Mark Baird ArcGIS Runtime SDK for Java: Building Apps Mark Baird Agenda Getting started with 100.4 JavaFX Base maps, layers and lambdas Graphics overlays Offline data Licensing and deployment What is happening in

More information

Why switch exist-db from Ant to Maven?

Why switch exist-db from Ant to Maven? exist-db Developers Meetup Monday, 29 th March 2011 @ Prague Why switch exist-db from Ant to Maven? adam@exist-db.org www.existsolutions.com Why move away from Ant? The Current Situation Lots of pain associated

More information

Quick start. Robert Bachmann & Dominik Dorn. JSUG Meeting #63

Quick start. Robert Bachmann & Dominik Dorn. JSUG Meeting #63 1.. Java 8 Quick start Robert Bachmann & Dominik Dorn JSUG Meeting #63 Outline: What s new in Java 8 2 Interface additions and lambda syntax (r) Library additions (r) Nashorn (d) Type annotations (d) VM

More information

DAD Lab. 1 Introduc7on to C#

DAD Lab. 1 Introduc7on to C# DAD 2017-18 Lab. 1 Introduc7on to C# Summary 1..NET Framework Architecture 2. C# Language Syntax C# vs. Java vs C++ 3. IDE: MS Visual Studio Tools Console and WinForm Applica7ons 1..NET Framework Introduc7on

More information