Czy na Androidzie można używać bibliotek Scalaz, ZIO lub ARROW?

0

Cześć
znajomi wpadli na pomysł, że dla ich społeczności przydałaby się apka na Androida i padła propozycja że mógłbym coś takiego zrobić hobbystycznie. Niestety jestem programistą Javy i Scali serwerowe (backendowej) i nieznam się na Androidzie, a w czasie wolnym najchętniej uczyłbym się programowania funkcyjnego, najlepiej przy pomocy Scali. Dlatego mam kilka pytań:

TL;DR

  1. Czy można pisać aplikacje na Androida w Scali? znalazłem coś takiego https://scala-android.org/ , ale nie wiem czy to jest używalne. Np. Scala Native na pierwszy rzut oka też wyglądała na używalną
  2. Jeśli (1) jest prawdą to czy na Androidzie można używać bibliotek do programowania funkcyjnego dla Scali jak Scalaz i ZIO ?
  3. Jeśli (1) nie jest prawdą to czy na Androidzie można używać bibliotek do programowania funkcyjnego dla Kotlina jak ARROW? Jak ostatnio sprawdzałem to ARROW nie napisany w czystym Kotlinie, ale czy wpływa to jakoś na używanie go na Androidzie?

Za wszystkie odpowiedzi z góry dziękuję i pozdrawiam

0

Może offtop, ale czy możesz napisać (chociaż z grubsza) co to za społeczność oraz jaką funkcjonalność ma ta aplikacja dostarczyć?

0

Kalendarz Read Only zbliżających się wydarzeń. No ludzie mało techniczni słabo ogarniają Google Calendar

0

I na pewno żadna z setki istniejących w sklepie aplikacji tego nie oferuje? Zresztą sama obsługa GC w oparciu o komponenty dostarczane z Androidem jest trywialna, do tego przecież kalendarze można udostępniać określając prawa odczytu/zapisu dla poszczególnych ludzi. Nie to, żebym Cię zniechęcał, ale wydaje mi się, że to jest niepotrzebne wymyślanie koła na nowo/wyważanie otwartych drzwi itp.

2

Może spasuje Ci Flutter?

Co prawda to nieco inna bajka, ponieważ pisze się w Dartcie, lecz - przynajmniej mi - ogarnięcie podstaw zajęło kilkanaście minut (na plus jest natywna integracja z Android Studio!).

Sam od tygodnia tworzę sobie apkę do fiszek i muszę przyznać, że choć szczerze nienawidzę składni Darta (bojówka #rust), to jest to całkiem produktywny język do pary z Flutterem, do którego istnieją tysiące różnych mikroporadników w internecie.

3

Scala 2.12+ wymaga JRE 8+ do odpalenia. Nie wiem czy Android jest w stanie obsłużyć w pełni bajtkod Javy 8. Jeśli nie to trzeba używać Scali 2.11-

scalaz jest bardzo przenośną biblioteką, bo jest to tylko zbiór abstrakcyjnych typów danych i ich zachowań, a nie nakładki na imperatywne API. Powinieneś być w stanie spokojnie używać scalaz (czy też cats) na Androidzie.
zio natomiast jest biblioteką do opakowywania imperatywnych API w funkcyjne interfejsy - tutaj więc zależy co leży pod spodem tych funkcyjnych interfejsów. Jeśli zio używa API niewspieranego na Androidzie to nie pójdzie.

Scala-Native to dość niedoinwestowany projekt, z planowanymi dużymi zmianami w integracji z natywnymi bibliotekami, jeszcze bez wsparcia dla wielowątkowości (jest zamiast tego event loop na którym można odpalać Future'y) i bez wsparcia dla Scali 2.12+. Na razie nie oczekiwałbym od niego zbyt wiele. Już prędzej bym poczekał na wsparcie Androida w native-image z GraalVMa.

Pozostaje jeszcze pytanie jak dużo można wrzucić programowania czysto funkcyjnego do aplikacji Androidowych? Coś mi się wydaje, że Android to platforma silnie zarządzana (tzn Android zarządza wieloma klasami użytkownika, a typowy JVM tylko odpala maina i dalej się nie wtrąca) więc też okazji do programowania czysto funkcyjnego jest mniej. Nie pisałem jednak niczego pod Androida (a tym bardziej czegokolwiek w Scali pod Androida), więc tylko zgaduję.

2

W skrócie da się. Bajtkod jest wspierany w pełni. API z JDK niekoniecznie. https://4programmers.net/Forum/1619258

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