Kotlin / Java With Android Studio 2017

Antonio Leiva; Kotlin for Android Developers (Online) – preview







How to Start Programming – Lesson 1

Java & Android Studio





Mobile Apps’ 2 Camps: Android Kotlin vs iOS Swift

Today mobile apps world is divided into 2 camps:

  • The original Apple iOS camp with 2000s ObjectiveC (improved version Swift from 2015), and
  • The Google Android with 1997 Java “JVM” (improved version Kotlin from 18 May 2017).

Both improved languages (Swift & Kotlin) use Functional Programming features eg. “Type” = Category Math, Data immutability (can’t change at run-time for safe concurrency), execution by composition of “componentised” Functions, including ‘advanced’ aka ‘higher-order’ functions eg reduce, map, filter, etc… which are Category-Math Functors, ‘Monoids’ and its cousin ‘Monads’ for handling side-effects (printl, update database, error msg…).

From 2018 we see these 2 mobile camps unifying into 1 language independent of vendors like the Fortran/Cobol in early 1970s, but which one ? may be one of the “Grand-Fathers” of the “Pure” Functional Programming Haskell (1993) would be adopted by an independent consortium ala W3C Consortium (WWW).


JVM Language – Kotlin

Kotlin (Google official support since May 2017) is one of the few JVM (Java Virtual Machine) languages (eg. Scala, Java, etc *), but with added nice “FP” Functional Programming features (See Reference # below).

* Note: Other FP languages like “Haskell”, “Clojure” (Lisp dialect) are unfortuantely not (yet) JVM compatible, hence can’t run on Android. Scala is a hybrid of “Object-Oriented + FP”, which runs on JVM (slow ?).

JVM machine recognises any “.class file” which contains the Java “bytecodes” executable on any platforms (Windows, Linux, Unix, MacOS, Android, iOS).

Any JVM language must produce ” .class” regardless whether it is Java or Kotlin or Scala.

If you intend to run on Android platform but hate Java (like I do), then choose another JVM language such as Kotlin.


[Reference #]
Nice Introduction to Functional Programming : Although FP is based on Math “Category Theory” using abstract concepts : Monad, Monoid, Functor (eg. Map), you don’t need to know it well before coding in FP.


Kotlin: apply, run, let, also