Wstęp do języka Kotlin

Czym jest Kotlin?

Definicja i charakterystyka Kotlin

Kotlin to statycznie typowany język programowania działający na maszynie wirtualnej Javy (JVM), który może być również kompilowany do kodu źródłowego JavaScript oraz używany do tworzenia kodu na platformy iOS. Jest to język ogólnego przeznaczenia, który został zaprojektowany, aby być w pełni interoperacyjny z Javą.

Historia rozwoju

Początki: Kotlin został stworzony przez JetBrains, firmę znaną przede wszystkim z tworzenia IntelliJ IDEA, środowiska programistycznego IDE dla Javy. Prace nad językiem rozpoczęły się w 2010 roku, a jego głównym celem było wyeliminowanie niektórych problemów Javy, takich jak nadmierna verbosywność czy problemy z null pointer exceptions.

Nazwa języka pochodzi od wyspy Kotlin, znajdującej się blisko Petersburga, gdzie mieści się jedno z biur JetBrains.

Kluczowe daty:

  • 2010 – Rozpoczęcie prac w JetBrains
  • Luty 2016 – Oficjalne wydanie Kotlin 1.0 (stabilna wersja gotowa do produkcji)
  • 2017 – Google ogłasza oficjalne wsparcie na Android
  • 2019 – Kotlin staje się preferowanym językiem dla Android

2. Dlaczego Kotlin? -Demo różnic

Problemy Javy – pokazuję na kodzie

Java – tworzenie prostej klasy Person:

public class Person {
    private String name;
    private int age;
    
    // Konstruktor
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // Gettery
    public String getName() { 
        return name; 
    }
    
    public int getAge() { 
        return age; 
    }
    
    // toString
    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }
    
    // equals i hashCode - jeszcze 20+ linii...
}

„To jest 25+ linii kodu tylko żeby stworzyć prostą klasę z dwoma polami!”

Kotlin – to samo w jednej linii:

data class Person(val name: String, val age: Int)

„Kotlin automatycznie generuje konstruktor, gettery, toString(), equals(), hashCode() – wszystko w jednej linii!

Null Safety – praktyczny przykład

Java – problem z null:

String getUserName() {
    // może zwrócić null
    return database.findUser()?.getName();
}

String name = getUserName();
int length = name.length(); // ❌ CRASH jeśli name = null!

// Bezpieczna wersja:
if (name != null) {
    int length = name.length();
} else {
    // obsłuż null...
}

Kotlin – bezpieczne rozwiązanie:

fun getUserName(): String? {  // ? oznacza "może być null"
    return database.findUser()?.name
}

val name: String? = getUserName()
val length = name?.length ?: 0  // ✅ Bezpiecznie!

„W Kotlin kompilator ZMUSZA nas do obsłużenia sytuacji, gdy coś może być null. Eliminuje to 90% crashy aplikacji!”

3. Gdzie używa się Kotlin?

Giganci technologiczni

Z języka Kotlin korzystają giganci technologiczni tacy jak:

📱 Mobile & Apps:

  • Google – całe Android SDK, YouTube Music
  • Netflix – aplikacja mobilna (150M+ użytkowników)
  • Evernote – przepisali całą aplikację na Kotlin
  • Pinterest – aplikacje mobilne

🌐 Backend & Services:

  • Uber – mikroservisy backend
  • Amazon – wewnętrzne narzędzia i serwisy
  • Coursera – platforma edukacyjna

Statystyki, które imponują:

  • 70%+ nowych projektów Android używa Kotlin
  • 500% wzrost popularności w ciągu 3 lat
  • 4. miejsce w rankingu „Most Loved Languages” (Stack Overflow 2023)

Platformy – pokazuję możliwości:

🎯 Kotlin = 1 język, 5 platform:

📱 Android      → Aplikacje mobilne
🍎 iOS          → Kotlin Multiplatform  
🌐 Backend      → Serwery (Spring Boot)
💻 Desktop      → Aplikacje desktopowe
🌍 Web          → Frontend (kompilacja do JS)

4. Pierwszy program

Android Studio:

  1. Utwórz nowy projekt Android
  2. Znajdź MainActivity.kt
  3. Dodaj kod w funkcji onCreate:
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        // 🎉 Nasz pierwszy kod Kotlin!
        println("Witaj, świecie w Kotlin!")
        println("To jest mój pierwszy program!")
        
        // Pokaż zmienne
        val imie = "Kotlin"
        val wiek = 8  // lat od wersji 1.0
        println("Język $imie ma już $wiek lat!")
    }
}