Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin & Swift

zezzi
October 18, 2017

Kotlin & Swift

The evolution of mobile Development: You are an android developer trying to become an iOS developer, or you are an iOS developer who is trying to get into the android world. Taking advantage of your current platform and put it in steroids

zezzi

October 18, 2017
Tweet

More Decks by zezzi

Other Decks in Technology

Transcript

  1. WHAT THIS TALK IS ABOUT? ▸ Languages ▸ Architecture ▸

    The Big Picture ▸ Layouts ▸ Why is it interesting? ▸ References
  2. WHAT THIS TALK IS NOT ABOUT ? ▸ Application Lifecycle

    ▸ Networking ▸ Security ▸ Storage ▸ Continuos Integration ▸ Distribution ▸ Soft Skills ▸ Platform specific Frameworks ▸ IDE’s
  3. BIG PICTURE KOTLIN ▸ Statically Typed ▸ Supports Type Inference

    ▸ Type Checks when compiling ▸ Null Safety (Billion Dollar Mistake) ▸ Supports Object Oriented Programming and some Functional Programming ▸ Statically Typed ▸ Supports Type Inference ▸ Type Checks when compiling ▸ Null Safety ▸ Supports some Functional Programming Encourages Protocol Oriented Programming SWIFT
  4. BIG PICTURE KOTLIN ▸ Higher Order Functions ▸ Any and

    Any? Is similar to Object in java ▸ Lambdas as Parameters and return values ▸ Generics ▸ Higher Order Functions ▸ Any and AnyObject ▸ Closures ▸ Generics SWIFT
  5. BIG PICTURE KOTLIN ▸ Immutability is not forces but strongly

    encouraged ▸ Extensions to add new Functionality ▸ Interoperability with java ▸ Semi automatic conversion Java-> Kotlin ▸ Immutability is not forces but strongly encouraged. ▸ Extensions to add new Functionality ▸ Interoperability with Objective-C ▸ Manual conversion Obj-c ->swift SWIFT ▸ This are some commonalities there are more…
  6. TEXT AUTOLAYOUT VS CONSTRAINT LAYOUT ▸ Similarities: ▸ Precise: Adaptive

    ▸ Design via GUI ▸ Based on Cassowary Algorithm ▸ Differences: ▸ Default Behavior ▸ Fallback Handling
  7. TEXT UISTACKVIEW VS LINEAR LAYOUT ▸ Similarities: ▸ Maintainable ▸

    Orientation Control ▸ Graceful Dynamic behaviors ▸ Differences: ▸ Weighting
  8. CHALLENGES OVER TIME ▸ Challenges 1: • iOS: Obj-C Syntax,

    Memory Management, Pointers, etc. • Android: Java a language well known to a lot of people, very stable. Lifecycle Management (Activities) was the challenge, Eclipse ▸ Challenges 2: • A new language. Constant changes on the language. Interoperability with Obj-C. • Android: Introduced Fragments, Life Cycle Management, Multiple Device screens. Support for different API’s, Gingerbread. My Perspective
  9. CHALLENGES OVER TIME ▸ Challenges 3 • iOS: New programming

    paradigm: Functional Programming, Protocols and Protocol Oriented Programming, Generics. Constant evolution of the language. Auto Layout. Automatic Reference Counter. • Android: Migration from Eclipse to Android Studio. Maven vs Gradle. More strict patterns to follow in Android. Multiple devices. Gingerbread. ▸ Challenges 4 • iOS: More language changes. Stack Views. • Android: Compatibility with Java 8. Start to consider a more functional approach. Constraint Layout. Both Auto Layout and Constraint Layout are based on Cassowary algorithm. My Perspective
  10. CHALLENGES OVER TIME ▸ Challenges 5 • iOS: Breaking changes

    in the language. Keeping code base up to date. Removing old Obj-C Code • Android: New Language Supported by Google. Will have similar problems that what happened when swift was introduced. (Opportunity to learn from previous experiences.). More opinionated about architecture. My Perspective
  11. • Learning Curve in knowing two languages has declined over

    time • Learning curve in platform specific things is reducing and becoming more opinionated. • Increased Team Collaboration. • We still need to learn the specifics about each platform like lifecycle, best practices, frameworks, threads, permissions. E.g: Core Data, Room. • Similar implementation. • Layouts follow a similar approach. CONCLUSION My Perspective
  12. YOU ARE ANDROID ENGINEER WHO WANT TO BECOME IOS PROFICIENT

    • Learn Kotlin • Then Learn iOS platform specific things. The language will be easier.
  13. YOU ARE IOS ENGINEER WHO WANT TO BECOME ANDROID PROFICIENT

    • First learn the basics of Kotlin. • Then focus mostly in learning Android Specific things using Kotlin.