Czy pod Android warto używać Kotlina?

0

Czy warto używać kotlina do programowanie pod Android? Czy ktoś miał z nim już doświadczenia w praktycznych projektach?

0

Warto, aczkolwiek musisz się liczyć z dłuższym czasem budowania projektu.

0

Ja nie miałem, ale na samej stronie https://kotlinlang.org/ jest dużymi literami napisane: "Statically typed programming language for the JVM, Android and the browser", więc spodziewałbym się, że wsparcie dla Androida jest dobre. Zaletą Kotlina w porównaniu np do takiej Scali jest to, że biblioteka standardowa (dołączana jako JAR do projektu) jest lekka i nie powinna mocno spowalniać startu aplikacji nawet na słabych telefonach (kotlin-runtime.jar ma < 1 MB, z tym, że kotlin-reflect.jar ma już 2.3 MB i lepiej się wstrzymać z Kotlinową refleksją na Androidzie).

0

Czy poza Java i Scala ma szanse w pisaniu pod Androida Ceylon, Groovy lub Clojure. Kotlin ma wsparcie Jetbrains, Ceylon RedHat, a pozostałych nie wspiera żadna firma korporacja.

1

bardzo warto

0

a jak jest ze Scalą? tak prosto jak w aplikacjach webowych że dodaje dependencies i wlaściwie pisze w czym chce?

0

Nie zanosi się na popularność Scali na Androdzie. Za wcześnie na jakieś prognozy dla Kotlina, ale osobiście mam nadzieję ;)

0

Na co dzień używam Javy, ale ostatnio zagłębiam się w Kotlina i jestem pod wrażeniem tego języka. Ma ten język duży potencjał.

Edit:
Opcja w IntelliJ IDEA zamiany kodu źródłowego z Javy na kod źródłowy Kotlina wymiata :).

1

Sorry ostatnio się nie popisałem w rozwinięciu dlaczego Kotlin jest bardzo wart brania pod uwagę przy androidzie

  1. Jest to język stworzony przez chłopaków z JetBrains, czyli tej samej firmy która robi Android Studio, więc co za tym idzie zawsze będziesz miał 100% wsparcie w IDE w przeciwieństwie do Groovy lub Scali (szczególnie tej drugiej)

  2. Jest lekki i ma dużo mniej metod w bibliotece standartowej niż scala czy groovy ( co jest ważne ze względu na dex)

  3. jest językiem funkcjonalnym i ma lambdy, co przy popoularności RxJavy na androidzie jest ogromną zaletą w porównaniu to Javy 6.5 (na androidzie taka niedorobiona java 7 jest) chociaż ten argument zaraz może być nie ważny bo przy N sdk-u mają wejśc elementyJava 8. jeszcze nie ogarniałem ale na ćwierkaczu twierdzą że lamby i streamy działają

  4. Jest Anko. Jest to baardzo przydatny framework, od tworzenia widoków w kodzie, poprzez bardzo przyjazne rozszerzenia do SQLit-a ( ja się dzięki temu pozbyłem wszelakich ORM-ów z projektów)

  5. kotlin syntetix? czy jakoś tak. generalnie robi Ci to co ButterKnife tylko bez zbędnego boilerCodu

  6. Extensions . Funkcje rozszerzające ktorę powodują że nie musisz dziedziczyć czy robić jakichś dziwacznych delegatów np. piszesz sobie metodę rozszerzającą activity która przyjmuje 2 lambdy , i w środku sprawdza czy jest powyżej czy poniżej lollipopa, i np. otwiera nową aktywność z jakąś fancy animacją.

  7. Ostatnio @Koziołek zaczął klepać na swoim blogu przydatne rzeczy a propos Kotlina, także jest gdzie spojrzeć żeby podpatrzeć fajne rzeczy

  8. data classes. -99% kodu przy POJO
    żeby nie było że są same kwiatki:

Kiepsko se radzi Kotlin z Dagger2 , także klasy daggerowe muszą być dalej klepane w Javie, co powoduje lekki miszmasz, ale da się to ogarnąć.

Build trwa średnio 20-30% dłużej

Niestety ciągle często AS rzuca jakimiś dziwnymi błędami że Kotlin Plugin zdechł

Nie ogarnia AS przejścia ctrl+click (cmd+ click) w resource z klas kotlinowych.

to tyle

w razie pytań zapraszam :)

0

@wojciechmaciejewski rozwiniesz trochę temat problemów z Dagger2? Będę wiedział na co uważać, u mnie póki co działa dobrze. Kod pisany w całości w Kotlinie :)

Gwoli ścisłości Android Studio rozwija Google, JetBrains daje im tylko (bądź aż ;)) IntelliJ'a :P

0

Scala chyba idzie bardziej pod jdk 8 , wiec z androidem to nie po drodze.

0

Scala ma akurat bardzo dobre wsparcie w Intellij, wiec nie wiem o co chodzi.

0

@azalut o scali na andku to zapomnij. Nie ta skala, nomen omen, problemu. Scala w sobie jest za ciężka, zbyt zasobożerna i zbyt poryta by przeciętny telefon z androidem był w stanie ją pociągnąć. Kotlin na androida to dla JB najważniejszy cel.

To co rzeczywiście daje Kotlin poza smaczkami składniowymi wymienionymi przez @wojciechmaciejewski to dużo niższy próg wejścia. Po prostu sam język pozbawiono pewnych ozdobników, które tylko odstraszały. Patrz mój wpis z dzisiaj o companion object. Masz domyślną nazwę i jazda. Duperela, a cieszy. Inna sprawa to sama składnia, która jest dużo "nowocześniejsza" i zbliżona do javascriptopodobnych języków w niektórych miejscach. Przez co wszystkie ninja z okolicy mogą opuścić starbucksy, bo wiedzą, że nie grozi im klasyczna Java ;)

Z innych rzeczy to dobra integracja z Javą i możliwość pisania wielu rzeczy w Kotlinie, które w Javie zajęły by setki linii kodu, albo wymagają użycia niekoniecznie mile widzianych rozszerzeń w rodzaju lomboka → Data classes. Oraz rzeczy, które wymagają w Javie użycia specyficznych sztuczek z widocznością → sealed object. Poza tym będzie się w tym klepać pluginy do IntelliJ ;)

Gdzie kotlina nie widzę to serwery. Tam będzie sobie dzielnie wojować Scala doposażona w swoje dziwne biblioteki, które robią dobrą robotę i dają o wiele więcej możliwości niż Kotlin.

0
bolson napisał(a):

@wojciechmaciejewski rozwiniesz trochę temat problemów z Dagger2?

No po Twoim komentarzu pogrzebalem w internetach i faktycznie nie ma takiego problemu. Az pozniej sprawdze u siebie. Na pewno umnie bylo tak ze klasy kotlinowe z adnotacja component nie byly fenerowane przez biblioteke (czyli sie po prostu te Dagger... Nie robily) co wiecej w klasach kotlonowych nie widac bylo juz stworzonych componentow przez comusialem pisac dodatkowe injectory w javie. Ale robilem to na jesieni jak byl kotlin m12 i sie tak przyzwyczailem a sie moglo zmienic.

1 użytkowników online, w tym zalogowanych: 0, gości: 1