Czy warto używać kotlina do programowanie pod Android? Czy ktoś miał z nim już doświadczenia w praktycznych projektach?
Warto, aczkolwiek musisz się liczyć z dłuższym czasem budowania projektu.
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).
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.
bardzo warto
a jak jest ze Scalą? tak prosto jak w aplikacjach webowych że dodaje dependencies i wlaściwie pisze w czym chce?
Nie zanosi się na popularność Scali na Androdzie. Za wcześnie na jakieś prognozy dla Kotlina, ale osobiście mam nadzieję ;)
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 :).
Sorry ostatnio się nie popisałem w rozwinięciu dlaczego Kotlin jest bardzo wart brania pod uwagę przy androidzie
-
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)
-
Jest lekki i ma dużo mniej metod w bibliotece standartowej niż scala czy groovy ( co jest ważne ze względu na dex)
-
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ą
-
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)
-
kotlin syntetix? czy jakoś tak. generalnie robi Ci to co ButterKnife tylko bez zbędnego boilerCodu
-
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ą.
-
Ostatnio @Koziołek zaczął klepać na swoim blogu przydatne rzeczy a propos Kotlina, także jest gdzie spojrzeć żeby podpatrzeć fajne rzeczy
-
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 :)
@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
Scala chyba idzie bardziej pod jdk 8 , wiec z androidem to nie po drodze.
Scala ma akurat bardzo dobre wsparcie w Intellij, wiec nie wiem o co chodzi.
@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.
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.