Technologiczny dylemat - Xamarin vs Java/Kotlin/Flutter

0

Witam.
Nie wiem czy to dobry dział na żale i płacze, więc jak coś to proszę o przeniesienie.

Xamarin

Domyślam się, że frameworki cross-platform nie są aż tak mocne jak natywne. Szczerze mówiąc nie potrzebuję wiele i czuje, że wszystko skończy się tą technologią biorąc pod uwagę, że Xamarin Forms 4.0 Shell to duże uproszczenie, a też dziennie po 8 godzin programuje w C#.
Interesuje mnie tylko aplikacja na Androida, więc po co mi Xamarin Forms? Ze względu na XAML, niemiłosiernie męczy mnie ten Androidowy XML. Nie wiem dlaczego XAML jest dla mnie czytelniejszy. Kiedyś pisałem aplikacje na Windows 8 (na swoją obronę, milion lat temu) i może ten projekt mnie "nastroił" na XAML, że wiem czego się spodziewać.

Java/Kotlin/Flutter

Cały dzisiejszy dzień spędziłem na ogarnięciu Android Studio, Kotlin i UI. Po 8 godzinach zrobiłem tylko początkową stronę aplikacji i wymiękłem... Instalując Visual Studio mam gotowe narzędzie do pracy, w przypadku Android Studio... Niestety nie. Na start błędy w XML interfejsu, brak okienka Design. Pierwszą godzinę męczyłem się, aby przygotować środowisko do pracy. Później już szło gładko, coraz lepiej. Efekt końcowy interfejsu wyszedł tak jak chciałem, ale... Biblioteki com.android przenoszą się na androidx, pełno tutoriali na necie z wykorzystaniem tego pierwszego, coś trzeba dogrywać, coś trzeba pozmieniać. No i ten nieszczęsny XML, choć tutaj udało się wyklikać wiele rzeczy za pomocą designera. Może moje nastawienie spotęgowało niechęć do "natywnego" programowania na Androida. Kotlin też nie jest taki piękny jak go malują, a Javę omijam szerokim łukiem - trochę przez stereotypy, trochę przez składnie.

background story

Pisałem już na temat mojego problemu
Angular 7 + PWA + Service Worker - czy jest opcja, aby aplikacja pracowała tak samo offline jak pracuje online
Doszliśmy do wniosku, że nie będziemy poprawiać gotowej aplikacji, aby działało cache'owanie poprawnie, tylko napiszemy natywną apkę z bazą danych na Androida, która będzie działać offline i tylko synchronizować dane jak tylko użytkownik znajdzie neta. Banalnie prosta apka do wrzucania zamówień do SQLite. Nawet synchronizacja z API była by na guzik.
Poległem...

zakończenie

Ewidentnie można wywnioskować, że wychwalam Xamarina, więc po co w ogóle ten post skoro mam rozwiązanie i technologię? Otóż potrzebuje bodźca, nakierowania, czego potrzebuje i czy faktycznie jest sens bawić się w natywne, skoro mam już doświadczenie w C# i XAML. Może są jakieś biblioteki do natywnych, o których nie wiem, ułatwienie życia, nauki. Może są tutaj ludzie, których też wkur*, denerwuje XML natywnych, Java, Kotlin, a muszą to robić. Jak przez to przebrnęli?

##PS
Pytanie chyba powinno być - tracić czas na nowe technologię czy iść za doświadczeniem?
Musiałem się wygadać komuś doświadczonemu, żona nie chciała mnie słuchać :D

2

Ja oddaję swój głos na fluttera. Nie mam doświadczenia w innych językach /technologiach mobilnych, więc nie mogę go porównać z konkurencją. Co do samej instalacji - mi poszło bezproblemowo, zarówno na Windows 10, jak i Linuksie, mimo że to bym mój pierwszy w życiu kontakt z Android studio i po prostu jechałem punkt po punkcie z howto na stronie.

Rzeczowiscie, sam początek jest ciężki/dziwny, ale po chwili/kilku dniach, jak się przedstawisz na flutterowy sposób patrzenia, wszystko staje się dość proste.

Boli brak wizualnego edytora (a przynajmniej oficjalnego, bo w necie jest kilka designerów działających online) i muszę przyznać, że jest to rzeczowiscie dużym minusem (myślę, że za pewien czas zużywają on dodany, flutter jest czarny czas mocno rozwijany), ale za to wynagradza to opcja wprowadzania i pokazywania na żywo zmian wprowadzonych w layoutcie. Plus jeszcze flutter jest bardziej przyszłościowy, bo nieoficjalnie się mówi, że ma być głównym narzędziem do pisania aplikacji na Fuchsia, czyli (nieoficjalnego) następcy Androida.

1
  1. Opisz co chcesz zrealizować: dla kogo projekt - dla Ciebie do używania, pet project, dla klienta wewnętrzny, dla klienta zewnętrzny.
  2. Co projekt ma robić?
  3. Czy widzisz potrzebę dodania jakiś zależności w postaci np bibliotek czy kodu natywnego / NDK.
  4. Jak długo projekt będzie pisany - mała aplikacja na dwa tygodnie dla jednego programisty czy piszemy drugie VoD - 5 devów - trzy lata do przodu?
0

@lubie_programowac:

  1. Dla klienta zewnętrznego. Mam już projekt w Angular + Net Core, ale niestety nie mogłem ogarnąć pracy offline tak jak bym chciał, więc ten projekt jest takim workaround.
  2. Projekt ma zapisywać offline do bazy danych zamówienia przedstawiciela handlowego na konkretne produkty, a później synchronizować z API, aby dokument był dostępny w systemie ERP. Baza kontrahentów i towarów wczytywałaby się online, aby można było robić zamówienia offline.
  3. Nie widzę potrzeby, ale też nie programuje na mobilniaki, więc może z powodu braku doświadczenia
  4. Jeden programista, wstępnie do końca sierpnia mam czas
0

Mówiąc szczerze: podszedłbym do tego żeby jednak rozwiązać problem w angularze. Wiem że problemy w Xamarinie i tak będziesz mieć większe czy mniejsze.

Jeśli to Ty musisz rozwiązać to zadanie i według Ciebie w xamarinie będzie prościej bo znasz C# to proponuję zrobić PoC - prostą aplikację która będzię dostarczać Core Twojej funkcjonalności np wspomnianą synchronizację.

Powodzenia!

0

Problem polega na tym, że PWA nie ma bazy danych gdzie bym mógł zapisać zamówienie na czas pracy offline, xamarin/android ma sqlite'a. Samo zrobienie synchronizacji mi nic nie da, ponieważ co niby mam synchronizować, gdzie, a co najważniejsze, po co w przypadku PoC? W sensie, że aplikacja PWA miałaby wrzucać dane do sqlite'a? Nie wiem czy dobrze rozumiem. Jeśli byłbym w stanie ogarnąć pracę offline po stronie angulara to mi xamarin/android niepotrzebny. Jeżeli wiesz jak ugryźć mój problem z pracą offline aplikacji PWA to proszę o odpowiedź w moim poście na ten temat.

PS.
Dzisiejsza próba ogarnięcia Xamarin Forms Shell poszła zdecydowanie lepiej niż wczorajszy Kotlin.
@cerrato
Flutter chyba odpada, fajny bajer, ale ten Dart jest jeszcze mniej czytelny niż Kotlin... :D

1

Nigdy nie pisałem w PWA, znalazłem taki kurs:
https://codelabs.developers.google.com/codelabs/workbox-indexeddb/index.html?index=..%2F..index#0

Sqlite jest często pierwszym wyborem uważam jednak że lepiej byłoby użyć Room ( nie wiem czy jest na xamarinie) albo Realm:
https://realm.io/blog/introducing-realm-xamarin/

1
lubie_programowac napisał(a):

Nigdy nie pisałem w PWA, znalazłem taki kurs:
https://codelabs.developers.google.com/codelabs/workbox-indexeddb/index.html?index=..%2F..index#0

Sqlite jest często pierwszym wyborem uważam jednak że lepiej byłoby użyć Room ( nie wiem czy jest na xamarinie) albo Realm

Takie trochę pomieszanie pojęć może niewprowadzoną osobę zdezorientować. Room - w odróżnieniu od Realma, który w ogóle jest rozwiązaniem typu No-SQL - to wciąż SQLite. A nie alternatywa dla SQLite. Jest on wyłącznie pewną warstwą abstrakcji ułatwiającą pracę z SQLite; coś jak ORM.

Jeszcze inna opcja to Paper, w każdym razie o ile piszemy natywnie.

1

Wszystko stanęło na Flutterze, więc temat nieaktualny.

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