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

Odpowiedz Nowy wątek
2019-10-14 10:47
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


Pozostało 580 znaków

2019-10-14 10:58
0

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


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say

Pozostało 580 znaków

2019-10-14 11:01
0

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


Pozostało 580 znaków

2019-10-14 11:03
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.


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say

Pozostało 580 znaków

2019-10-14 11:10
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.


edytowany 1x, ostatnio: Patryk27, 2019-10-14 11:11
@AdamWox: mamy kolejnego nawróconego na jedyną słuszną wizję ;) - cerrato 2019-10-14 11:10
flutter i dart można pisać małe aplikacje, większe też się da ale zaczyna się robić z tego koszmar. Zwykle firmy które zaczynały w np react native później przechodzą w natywne aplikacje bo w dłuższej perspektywie czasu jest to tańsze i efektywniejsze. - xxx_xx_x 2019-10-14 21:58
Przecież tony aplikacji są napisanych (w całości bądź częściowo) w React Native (https://facebook.github.io/react-native/showcase) - głównie dlatego, że to właśnie React Native oraz podobne technologie są tańsze w utrzymaniu :-) Np. inżynierowie Instagrama piszą: React Native allowed product teams to ship features faster to both our iOS and Android apps i dorzucają nawet tabelkę z pomiarami. - Patryk27 2019-10-14 22:28
@Patryk27: znajdziesz również dużo przykładów gdzie firmy rezygnowały z tego. Np AirBnB. Problem pojawia się gdy chcesz mieć nowości, zawsze musisz czekać aż ktoś dostarczy odpowiednią kontrolkę. Albo sam ją wytworzyć a to oznacza że i tak potrzebujesz ludzi od natywnych apek - xxx_xx_x 2019-10-14 22:56
@cerrato: Jest nas coraz więcej, aż w końcu przejmiemy świat i posypiemy go cudownością Fluttera :D - AdamWox 2019-10-15 10:08
Będę wtedy premierem świata, a Ty naczelnym posypywaczem. Jak dla mnie brzmi to OK ;) - cerrato 2019-10-15 10:25

Pozostało 580 znaków

2019-10-14 12:21

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ę.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
Bez problemu można programować funkcyjnie, trzeba brać tylko pod uwagę cykl życia aplikacji, aktywności, fragmentów, serwisów itp ;p Wiec jak funkcyjne to raczej szybkie operacje. - xxx_xx_x 2019-10-14 21:53

Pozostało 580 znaków

2019-10-15 08:01
2

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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