Share E-Book
Scan to open this page

Scan with your phone to open this page

Author: Marko Devcic

Rating No ratings yet

Kotlin is a general purpose, object-oriented language that primarily targets the JVM and Android. Intended to be a better alternative to Java, its main goals are high interoperability with Java and increased developer productivity. Kotlin is still a new language and this book will help you to learn the core Kotlin features and get your ready for developing applications with Kotlin.

AI Reading Assistant

Whole-book reading guide from stratified index samples; jump to passages in the text

AI guide
# Kotlin Quick Start Guide — Reading Guide ## 【One-Line Pitch】 A practical, fast-paced introduction to Kotlin for developers with Java or other JVM experience, covering everything from basic syntax to object-oriented programming so you can start building real applications quickly. Ideal for Android developers and backend engineers who want to learn Kotlin's modern features without wading through a 500-page reference. ## 【Book Arc】 - **Opening (~0%–9%)**: Book setup, code downloads, and the compilation model — how Kotlin source (.kt files) compiles to Java bytecode (.class files), runs on the JVM, and why the ~800 KB standard library must be bundled with your app. - **Early (~9%–34%)**: Core language fundamentals — variables (val/var), number types, strings with templating, null safety operators (safe call `?.`, Elvis `?:`, non-null assertion `!!`), if-else as expressions, for loops over ranges, and exception handling without checked exceptions. - **Middle (~34%–53%)**: Object-oriented programming — properties with get/set accessors (C#-inspired), `lateinit` for deferred initialization, primary and secondary constructors, enum classes with `values()` and `valueOf()`, and member overriding. - **Late (~53%–100%)**: Advanced OOP topics and practical application — the excerpts cover up to overriding members, with the remainder of the book presumably covering inheritance, interfaces, and building complete applications (not fully covered in the sample). ## 【Key Takeaways】 - **Kotlin compiles to Java bytecode and runs on the JVM** (Early): Source files with `.kt` extension produce `.class` files identical to Java's, and the compiler bundles the standard library automatically with `-include-runtime`. This means you can run Kotlin apps exactly like Java apps, with minimal overhead. - **Prefer `val` (immutable) over `var` (mutable) for variables** (Early): The compiler even warns when you declare a mutable variable but only assign it once. This aligns with functional programming best practices and reduces bugs from accidental reassignment. - **Null safety is built into the type system** (Early): The safe call operator `?.` combines null checks with member access, the Elvis operator `?:` provides defaults for null values, and `!!` is an explicit non-null assertion that throws `KotlinNullPointerException` if violated. You should prefer safe calls over assertions. - **Kotlin's `if-else` and `throw` are expressions, not statements** (Early): They return values, so you can initialize variables directly from conditionals — `val str = if (num < 10) "Lower" else "Higher"` — eliminating verbose ternary-style code. - **For loops iterate over anything `Iterable`, not indices** (Early): The `..` operator creates an `IntRange` that implements `Iterable`, and the `in` keyword works both for iteration and membership checks (`if (5 in 1..10)`). There are no traditional index-based for loops. - **Properties replace getters/setters while preserving encapsulation** (Middle): Kotlin properties look like public fields to callers but internally use get/set accessors with a private backing field. You can make properties read-only, write-only, or public-with-private-set, giving you fine-grained control. - **`lateinit` solves the dependency injection problem** (Middle): When a property's value is known only after class initialization (e.g., injected by an IoC container), `lateinit` lets you declare a non-null reference type without initializing it — avoiding null-safety operators on fields you know are never null. Use `isInitialized` to check before access. - **Secondary constructors must delegate to the primary one** (Middle): You can have multiple secondary constructors declared in the class body, but each must call the primary constructor with `: this(...)`. Primary constructors can have properties; secondary ones only have parameters. ## 【Reading Tips】 - **Skim the opening chapters (0–9%)** if you're already comfortable with JVM concepts — the compilation model is useful but the setup instructions and publisher boilerplate can be skipped. - **Deep-read the null safety section (~25–28%)** — this is Kotlin's biggest differentiator from Java and the source of most beginner confusion. Work through the examples of `?.`, `?:`, and `!!` until you can predict which operator to use in any situation. - **Pay special attention to properties (~38–44%)** — understanding get/set accessors, `val` vs. `var` properties, and `lateinit` is essential for writing idiomatic Kotlin classes. This is where Kotlin diverges most from Java conventions. - **Practice the expression-oriented syntax** (if-else, throw, try) — these feel unnatural to Java developers at first but become second nature quickly. Write small functions that use expressions to initialize values. - **If you're an Android developer**, note that the book focuses on JVM Kotlin but states most concepts apply to Kotlin/JS and Kotlin/Native — the core language skills transfer directly. ## 【Coverage Limits】 This guide covers the book's opening through the middle sections (~53% of the book), including language fundamentals and object-oriented programming basics. The excerpts do not cover later chapters on inheritance hierarchies, interfaces, functional programming features, or building complete applications — the sample ends at member overriding. ##
Excerpt 1
uction reference: 1300818 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78934-418-9 www.packtpub.com Pac...
View in text
Excerpt 2
t 32 bit 0 Long 64 bit 0L Float 32 bit 0.0F Double 64 bit 0.0D &#xa0; The following example shows how to initialize number types with literals: val long : Lo...
View in text
Excerpt 3
an Int type in this case) is optional:&#xa0; for ( i in 0 .. 10 ) { println ( i ) } The same syntax applies for looping over any other&#xa0; Iterable interfa...
View in text
Excerpt 4
fun checkIfLateinitSet () { val initialized = this :: name . isInitialized } Secondary constructors Secondary constructors There are also secondary construct...
View in text
Excerpt 5
have fields and properties, and functions that modify them. Interfaces, on the other hand, can have only function or property signatures. If you want to achi...
View in text
Excerpt 6
nal void noInline ( @NotNull Function0 func ) { Intrinsics . checkParameterIsNotNull ( func, "func" ) ; String str = ( String ) func.invoke () ; String var2...
View in text
Excerpt 7
the change will be successful: //changed to 0 vetoable = 0 Java interoperability Java interoperability Kotlin compiles extension functions as static function...
View in text
Excerpt 8
= listOf ( 1 , 2 , 3 , 4 , 5 ) val smallerThan3 = numbers . filter { n -> n < 3 } The resulting list has these numbers [1, 2]. General functions General func...
View in text
Tags
AI categories
Programming LanguageJVMAndroid
Publisher: Packt Publishing
Publish Year: 2018
Language: English
File Format: EPUB
File Size: 4.4 MB