W CZYM NAPISAĆ STRONĘ INTERNETOWĄ? · 2020. 5. 8. · funadd(a: Int, b:Int): Int {valtemp = a +...

60
W CZYM NAPISAĆ STRONĘ INTERNETOWĄ? Dominik Kossiński 19.04.2020

Transcript of W CZYM NAPISAĆ STRONĘ INTERNETOWĄ? · 2020. 5. 8. · funadd(a: Int, b:Int): Int {valtemp = a +...

  • W CZYM NAPISAĆSTRONĘ INTERNETOWĄ?

    Dominik Kossiński

    19.04.2020

  • Popularne technologie

    JavaScript

    React

    Angular

    Vue.js

    HTML5

    CSS

  • Popularne technologie

    JavaScript

    React

    Angular

    Vue.js

    HTML5

    CSS

  • Popularne technologie

    JavaScript

    React

    Angular

    Vue.js

    HTML5

    CSS

  • Popularne technologie

    JavaScript

    React

    Angular

    Vue.js

    HTML5

    CSS

  • Popularne technologie

    JavaScript

    React

    Angular

    Vue.js

    HTML5

    CSS

  • Popularne technologie

    JavaScript

    React

    Angular

    Vue.js

    HTML5

    CSS

  • Popularne technologie

    JavaScript

    React

    Angular

    Vue.js

    HTML5

    CSS

  • JavaScript

  • JavaScript

  • Czy JavaScript to konieczność?

  • Kotlin

  • Kotlin

    JetBrains

    I 2011 - rok powstaniaI 2017 - oficjalnie wspierany przez Google’aI 2019 - uznany jako preferowany język dla aplikacji na Androida

  • Kotlin

    JetBrains

    I 2011 - rok powstaniaI 2017 - oficjalnie wspierany przez Google’aI 2019 - uznany jako preferowany język dla aplikacji na Androida

  • Kotlin

    JetBrains

    I 2011 - rok powstania

    I 2017 - oficjalnie wspierany przez Google’aI 2019 - uznany jako preferowany język dla aplikacji na Androida

  • Kotlin

    JetBrains

    I 2011 - rok powstaniaI 2017 - oficjalnie wspierany przez Google’a

    I 2019 - uznany jako preferowany język dla aplikacji na Androida

  • Kotlin

    JetBrains

    I 2011 - rok powstaniaI 2017 - oficjalnie wspierany przez Google’aI 2019 - uznany jako preferowany język dla aplikacji na Androida

  • Dlaczego zyskał taką popularność?

  • Zalety

    I Język statycznie typowanyI Brak średników i typów prostychI Brak konieczności pisania getter’ów i seter’ów oraz ’new’I Null SafetyI Skrypty do budowania w Gradle’u w KotlinieI Kompilacja do języków Java i JavaScriptI Kotlin Extensions

  • Zalety

    I Język statycznie typowany

    I Brak średników i typów prostychI Brak konieczności pisania getter’ów i seter’ów oraz ’new’I Null SafetyI Skrypty do budowania w Gradle’u w KotlinieI Kompilacja do języków Java i JavaScriptI Kotlin Extensions

  • Zalety

    I Język statycznie typowanyI Brak średników i typów prostych

    I Brak konieczności pisania getter’ów i seter’ów oraz ’new’I Null SafetyI Skrypty do budowania w Gradle’u w KotlinieI Kompilacja do języków Java i JavaScriptI Kotlin Extensions

  • Zalety

    I Język statycznie typowanyI Brak średników i typów prostych

    class Example {

    fun add(a: Int, b:Int): Int {val temp = a + b + 2.0f.toInt()return temp

    }}

    I Brak konieczności pisania getter’ów i seter’ów oraz ’new’I Null SafetyI Skrypty do budowania w Gradle’u w KotlinieI Kompilacja do języków Java i JavaScriptI Kotlin Extensions

  • Zalety

    I Język statycznie typowanyI Brak średników i typów prostychI Brak konieczności pisania getter’ów i seter’ów oraz ’new’

    I Null SafetyI Skrypty do budowania w Gradle’u w KotlinieI Kompilacja do języków Java i JavaScriptI Kotlin Extensions

  • ZaletyI Język statycznie typowanyI Brak średników i typów prostychI Brak konieczności pisania getter’ów i seter’ów oraz ’new’

    data class Movie(var Title: String,var Year: String,var imdbID: String,var Type: String,var Poster: String

    )

    val movie = Movie(...)movie.title = "Star Wars"

    I Null SafetyI Skrypty do budowania w Gradle’u w KotlinieI Kompilacja do języków Java i JavaScriptI Kotlin Extensions

  • Zalety

    I Język statycznie typowanyI Brak średników i typów prostychI Brak konieczności pisania getter’ów i seter’ów oraz ’new’I Null Safety

    I Skrypty do budowania w Gradle’u w KotlinieI Kompilacja do języków Java i JavaScriptI Kotlin Extensions

  • Zalety

    I Język statycznie typowanyI Brak średników i typów prostychI Brak konieczności pisania getter’ów i seter’ów oraz ’new’I Null Safety

    var nullable_movie: Movie? = null

    val title = nullable_movie?.title?: "Star Wars"val title = nullable_movie!!.title

    var movie: Movie = Movie(...)

    I Skrypty do budowania w Gradle’u w KotlinieI Kompilacja do języków Java i JavaScriptI Kotlin Extensions

  • Zalety

    I Język statycznie typowanyI Brak średników i typów prostychI Brak konieczności pisania getter’ów i seter’ów oraz ’new’I Null SafetyI Skrypty do budowania w Gradle’u w Kotlinie

    I Kompilacja do języków Java i JavaScriptI Kotlin Extensions

  • Zalety

    I Język statycznie typowanyI Brak średników i typów prostychI Brak konieczności pisania getter’ów i seter’ów oraz ’new’I Null SafetyI Skrypty do budowania w Gradle’u w KotlinieI Kompilacja do języków Java i JavaScript

    I Kotlin Extensions

  • Zalety

    I Język statycznie typowanyI Brak średników i typów prostychI Brak konieczności pisania getter’ów i seter’ów oraz ’new’I Null SafetyI Skrypty do budowania w Gradle’u w KotlinieI Kompilacja do języków Java i JavaScriptI Kotlin Extensions

  • Zalety

    I Język statycznie typowanyI Brak średników i typów prostychI Brak konieczności pisania getter’ów i seter’ów oraz ’new’I Null SafetyI Skrypty do budowania w Gradle’u w KotlinieI Kompilacja do języków Java i JavaScriptI Kotlin Extensions

    fun Date.toHourAndMinFormat(): String {return SimpleDateFormat("HH:mm").format(this)

    }

    Date().toHourAndMinFormat()

  • Zalety

    I Język statycznie typowanyI Brak średników i typów prostychI Brak konieczności pisania getter’ów i seter’ów oraz ’new’I Null SafetyI Skrypty do budowania w Gradle’u w KotlinieI Kompilacja do języków Java i JavaScriptI Kotlin Extensions

    public static String toHourAndMinFormat(Date date) {return new SimpleDateFormat("HH:mm")

    .format(date)}

  • Wady

    I Konieczność doracowania Null SafetyI Lekko zaburzona czytelność koduI Wyjątki Unchecked

    I JavaI Kotlin

  • Wady

    I Konieczność doracowania Null Safety

    I Lekko zaburzona czytelność koduI Wyjątki Unchecked

    I JavaI Kotlin

  • Wady

    I Konieczność doracowania Null Safety

    fun nullPointerException(): Int {return null!!

    }

    I Lekko zaburzona czytelność koduI Wyjątki Unchecked

    I JavaI Kotlin

  • Wady

    I Konieczność doracowania Null SafetyI Lekko zaburzona czytelność kodu

    I Wyjątki Unchecked

    I JavaI Kotlin

  • Wady

    I Konieczność doracowania Null SafetyI Lekko zaburzona czytelność kodu

    val which_type = movie.poster

    I Wyjątki Unchecked

    I JavaI Kotlin

  • Wady

    I Konieczność doracowania Null SafetyI Lekko zaburzona czytelność koduI Wyjątki Unchecked

    I Javatry {File myObj = new File("filename.txt");...

    } catch (FileNotFoundException e) {e.printStackTrace();

    }I KotlinFile("filename.txt").forEachLine { println(it) }

  • Strona w Kotlinie

    I Tylko w Kotlinie (kod + skrypt budujący)I Przy użyciu biblioteki ReactI Skompilowana do JavaScriptu

  • Strona w Kotlinie

    I Tylko w Kotlinie (kod + skrypt budujący)

    I Przy użyciu biblioteki ReactI Skompilowana do JavaScriptu

  • Strona w Kotlinie

    I Tylko w Kotlinie (kod + skrypt budujący)I Przy użyciu biblioteki React

    I Skompilowana do JavaScriptu

  • Strona w Kotlinie

    I Tylko w Kotlinie (kod + skrypt budujący)I Przy użyciu biblioteki ReactI Skompilowana do JavaScriptu

  • React: JavaScript vs Kotlin

    I Brak konieczności pisania bind

  • React: JavaScript vs KotlinI Brak konieczności pisania bindclass Foo extends Component {constructor(props) {super(props);this.handleClick =this.handleClick.bind(this);

    }

    handleClick() {console.log('Click happened');

    }render() {return

    Click Me

    ;}

    }

  • React: JavaScript vs Kotlin

    I Brak konieczności pisania bind

    class Foo : RComponent( {

    fun handleClick() {console.log("Click happened");

    }

    override fun RBuilder.render() {button {attrs.onClickFunction = {handleOnclick()

    }}

    }}

  • React: JavaScript vs Kotlin

    I Stylowanie

  • React: JavaScript vs Kotlin

    I Stylowanie

    const divStyle = {color: 'blue',margin: '16px'};

    object Styles: StyleSheet("foo", true) {val divStyle = css {color = Color.bluemargin = 16.px

    }}

  • React: JavaScript vs Kotlin

    I Atrybuty

  • React: JavaScript vs KotlinI Atrybuty

    class Foo extends Component {...func() {props.Zgadnij_nazwę_pola

    }}

    interface MyProps: RProps() {var a: A

    }class Foo: Rcomponent(){...fun func() {props.a

    }}

  • React: JavaScript vs Kotlin

    I Stan

  • React: JavaScript vs KotlinI Stan

    class Foo extends React.Component {constructor(props) {super(props);this.state = {obj: props.obj}; }...

    }

    class State: RState {var movie: Movie

    }class Foo: Rcomponent(){...fun func() {state.movie

    }}

  • Trochę statystyk

    Rysunek: Najbardziej popularne języki programowania wśródankietowanych.

  • Trochę statystyk

    Rysunek: Najbardziej lubiane języki programowania.

  • Gdzie jeszcze jest Kotlin?

    Android

    Flutter

    Spring

    Firebase Function

    Jupyter Notebook

  • Gdzie jeszcze jest Kotlin?

    Android

    Flutter

    Spring

    Firebase Function

    Jupyter Notebook

  • Gdzie jeszcze jest Kotlin?

    Android

    Flutter

    Spring

    Firebase Function

    Jupyter Notebook

  • Gdzie jeszcze jest Kotlin?

    Android

    Flutter

    Spring

    Firebase Function

    Jupyter Notebook

  • Gdzie jeszcze jest Kotlin?

    Android

    Flutter

    Spring

    Firebase Function

    Jupyter Notebook

  • Gdzie jeszcze jest Kotlin?

    Android

    Flutter

    Spring

    Firebase Function

    Jupyter Notebook

  • DZIĘKUJĘ ZA UWAGĘ

    Pytania? Napisz na [email protected]

  • Źródła

    I https://en.wikipedia.org/wiki/Kotlin_(programming_language)

    I https://play.kotlinlang.org/hands-on/Building%20Web%20Applications%20with%20React%20and%20Kotlin%20JS/01_Introduction

    I https://reactjs.org/docs/getting-started.html

    I https://play.kotlinlang.org/hands-on/overview

    I https://insights.stackoverflow.com/survey/2019#most-popular-technologies

    https://en.wikipedia.org/wiki/Kotlin_(programming_language)https://en.wikipedia.org/wiki/Kotlin_(programming_language)https://play.kotlinlang.org/hands-on/Building%20Web%20Applications%20with%20React%20and%20Kotlin%20JS/01_Introductionhttps://play.kotlinlang.org/hands-on/Building%20Web%20Applications%20with%20React%20and%20Kotlin%20JS/01_Introductionhttps://play.kotlinlang.org/hands-on/Building%20Web%20Applications%20with%20React%20and%20Kotlin%20JS/01_Introductionhttps://reactjs.org/docs/getting-started.htmlhttps://play.kotlinlang.org/hands-on/overviewhttps://insights.stackoverflow.com/survey/2019##most-popular-technologieshttps://insights.stackoverflow.com/survey/2019##most-popular-technologies