VulCode

Kotlin: co w nim budujemy i dlaczego

Kotlin z Jetpack Compose piszemy natywne aplikacje na Androida, a sam Kotlin wykorzystujemy też poza telefonem: w silniku bazy danych i interpreterze języka.

Kotlin na prawdziwych zrzutach

Projekty z tej strony na ekranach z portfolio i case studies, każdy z krótkim opisem i drogą do pełnego.

Stan usług w aplikacji Flaem na telefonie: dostępność komponentów i planowane prace

Flaem: aplikacja Android

Kotlin i Compose, powiadomienia przez FCM, widżety na ekranie głównym.

Rozmowa szyfrowana end-to-end w aplikacji Plazer na telefonie

Plazer: aplikacja Android

Natywny klient w Jetpack Compose: serwery, kanały, grupy, rozmowy głosowe i widżety na ekranie głównym.

Kiedy Kotlin, a kiedy coś innego

Technologia ma pasować do miejsca, w którym kod będzie działał, i do zespołu, który go przejmie. Ostateczny wybór zapada przy wycenie, razem z Tobą.

Wybieramy Kotlin

Natywne aplikacje na Androida

Flaem, Plazer i Gyred mają na Androidzie aplikacje w Jetpack Compose. Aplikacja startuje od razu, bez czekania na silnik przeglądarki, a gesty i przewijanie są systemowe.

Widżety na ekranie głównym

Aplikacje Flaem i Plazera pokazują najważniejsze informacje w widżetach, bez otwierania aplikacji. Widżet może mieć tylko aplikacja natywna.

Powiadomienia prowadzące do ekranu

Powiadomienie z FCM o awarii serwera otwiera konsolę właśnie tego serwera. Od sygnału w telefonie do miejsca, w którym można działać, jest jedno dotknięcie.

Interfejs nad rdzeniem w Ruście

Aplikacja Plazera na Androida wywołuje rdzeń w Ruście przez UniFFI i sama nie dotyka kryptografii. Kotlin rysuje interfejs, a protokół jest tym samym kodem co w przeglądarce.

Aplikacja do jednego zadania

Gyred na Androidzie pokazuje sesje agentów, które czekają na decyzję, i pozwala odpowiedzieć z telefonu. Natywny klient startuje szybko, a liczy się czas od powiadomienia do odpowiedzi.

Silniki i interpretery na JVM

kestrel to silnik bazy danych z parserem SQL, B-drzewem, WAL i transakcjami, a lumen to język z kompilatorem do bajtkodu. Zapieczętowane klasy opisują w nich drzewo składni tak, że kompilator pilnuje obsłużenia każdego rodzaju węzła.

Tak piszemy w usługach

Wybieramy coś innego

Te same funkcje na Androidzie i iOS

Gdy obie platformy mają robić to samo, a widżety nie są potrzebne, jeden kod w React Native z TypeScriptem albo we Flutterze kosztuje mniej niż dwie aplikacje natywne.

Formularze i podgląd danych

Panel klienta VulCode instaluje się na telefonie jako aplikacja webowa w TypeScripcie, bez sklepu. Do faktur i zgłoszeń to wystarcza, a poprawka nie czeka na przegląd w Google Play.

Aplikacja na iPhone'a

Na iOS widżety, powiadomienia APNs i pęk kluczy obsługuje kod w Swifcie. Aplikacje iOS Flaem i Plazera piszemy w SwiftUI.

Kryptografia i protokół

Szyfrowania Plazera nie piszemy w Kotlinie. Rdzeń w Ruście jest jeden dla Androida, przeglądarki i komputera, więc protokół ma jedną implementację do sprawdzenia.

Zaplecze aplikacji

Usługi, z którymi rozmawia aplikacja, piszemy w Go albo w Ruście: centralka Plazera jest w Go, rdzeń Flaem w Ruście. Mają działać na wielu maszynach jako pojedyncze pliki, bez JVM.

Plugin Minecraft

Kotlin działa na Paperze, ale dokumentacja, przykłady i większość bibliotek dla pluginów są w Javie. Frozcraft piszemy w Javie, żeby kolejna osoba w projekcie od razu znalazła odpowiedzi.

Kotlin w porównaniu, punkt po punkcie

Każda potrzeba w jednym wierszu, a obok siebie to, co w tej sprawie daje każda z dwóch kolumn.

Aplikacja na telefonKotlin i SwiftAplikacja webowa

Widżety i powiadomienia systemu

Pełny dostęp
Ograniczony

Koszt dwóch platform

Dwa kody
Jeden kod

Publikacja w sklepach

Tak, z przeglądem
Nie trzeba

Praca w tle

Zadania i usługi systemowe
Tylko na tyle, na ile pozwala przeglądarka

Wydanie poprawki

Nowa wersja przez sklep
Od razu po wdrożeniu

Dostęp do sprzętu

Aparat, Bluetooth i czujniki z uprawnieniami systemu
Część interfejsów, zależnie od przeglądarki

Logika wspólna z innymi klientami

Rdzeń w Ruście przez UniFFI
Ten sam rdzeń przez WebAssembly

Kotlin w całym naszym kodzie

Ile linii napisaliśmy w Kotlin i jaką część wszystkiego, co napisaliśmy, to stanowi. Liczymy linie dodane w commitach naszych repozytoriów, osobno dla każdego języka.

206 250
linii napisanych w Kotlin
3,8%
wszystkich linii, które napisaliśmy
7
repozytoriów z kodem w Kotlin
4.
miejsce wśród 26 języków

Biblioteki, na których stoją te projekty

Z plików zależności naszych repozytoriów. Przy każdej jedno zdanie o tym, do czego jej używamy.

Zaproszenie na serwer Minecraft w aplikacji Flaem: adres serwera i jak dołączyć
Znikające wiadomości w Plazerze: czas ustawiany dla obu stron rozmowy
  • Jetpack Compose

    Interfejs aplikacji Android.

  • Navigation Compose

    Nawigacja między ekranami.

  • kotlinx.serialization

    Odczyt odpowiedzi API.

  • Firebase Cloud Messaging

    Powiadomienia push na Androidzie.

Pytania o Kotlin

Odpowiedzi o Kotlin, naszych projektach i liczbach na tej stronie.

Projekt w Kotlin?

Opisz, co chcesz zbudować. Odpiszemy w godzinę i powiemy wprost, czy ta technologia jest dobrym wyborem.