Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

Przepisanie aplikacji iOS Swift -> Android Java


  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 OneGhost

OneGhost
  • 296 postów

Napisano 14 marca 2017 - 22:43

Napisałem pewien program na iOS w swifcie, na który składa się kilka modułów napisanych w taki sposób, żeby były łatwo skalowalne i na ich podstawie można szybko i w prosty sposób stworzyć różne aplikacje o zbliżonej funkcjonalności.

Następnym etapem jaki chciałbym osiągnąć jest przygotowanie wersji dla Androida. Termin nie jest jakiś bardzo naglący, ale też nie chciałbym, żeby to trwało wyjątkowo długo. Ogólnie rozmiar projektu oceniam jako średni - ok. 30 klas/struktur. Nie jest to jednak skończona aplikacja, a same moduły służące do zbudowania na ich podstawie działającej aplikacji.

Zastanawiam się jak do tego podejść. Ogólnie cały projekt znam bardzo dobrze, został całkowicie napisany przeze mnie, bez użycia zewnętrznych frameworków (czyste SDK iOS). Rozważam podszkolenie się w Javie i Androidzie i przepisanie tego samodzielnie lub wynajęcie kogoś kto przez jakiś czas będzie pisał to ze mną w formie extreme programming. Na początku chciałbym jednak sprawdzić na ile optymalne będzie pierwsze podejście.

Chciałbym prosić was o wszelkie sugestie (ogólne czy szczegółowe) jak do tego podejść. Miałem kiedyś lekkie doświadczenie z programowaniem w Javie i Androidem, jednak było to krótko i małe projekty (na zaliczenia na studiach przez 2 semestry). Aplikacja w dużej mierze korzysta z CoreLocation i CoreMotion. Pierwsze pytania jakie mi się narzucają to:

1) Jak bardzo różni się podejście do wykorzystania lokalizacji użytkownika i orientacji urządzenia oraz pisanie kodu działającego w tle,

2) Czy w tego typu przedsięwzięciach dużym problemem jest to, że swift przesyła kolekcje przez kopię, a java przez referencję. Czy sprawia to bardzo dużo problemów, czy łatwo jest je rozpoznać i poprawnie przerobić formułę działania.

3) Na ile można zazwyczaj przepisać algorytmy, a na ile trzeba zazwyczaj podchodzić zupełnie inaczej do różnych zadań. Nie mówię tu o bardzo prostych małych rzeczach, ale o lekko bardziej złożonych koncepcjach (interakcje pomiędzy elementami kodu).

4) Jak się obecnie ma sytuacja z wykorzystaniem kodu swift w androidzie. Wiem, że zupełnie inaczej będzie się korzystać z SDK (bo jest inne), ale czy jest to w ogóle realne i czy opłacalne.

5) Czy dobrym podejściem będzie możliwie przepisywanie gotowych rozwiązań na nowy język, biorąc pod uwagę różnice wynikające ze środowiska, czy lepiej najpierw przygotować dokładne UML'e i na ich podstawie pisać niemalże od nowa? Nie ukrywam, że wolałbym pierwszy sposób, bo dzięki temu aplikacje byłyby zbliżone w formie i mogłyby działać w taki sam sposób oraz ewentualne zmiany byłyby łatwiejsze do wprowadzenia na obydwu platformach na raz. Jednak to na pewno najlepiej będzie wiedział to ktoś kto ma realne doświadczenie w takich przeróbkach.

 

Trochę się robi długi post, więc narazie to będzie tyle. Będę wdzięczny za wszelkie sugestie i obiektywną ocenę tego pomysłu. Zdaję sobie sprawę, że ciężko to oszacować nie znając w ogóle projektu, ale na pewno osoby programujące w tych obydwu językach mogą podzielić się swoimi spostrzeżeniami.


Użytkownik OneGhost edytował ten post 14 marca 2017 - 22:51


#2 guziaster

guziaster
  • 40 postów
  • SkądChorzów

Napisano 21 marca 2017 - 08:06

Obserwując co się dzieje dookoła mnie, w androidzie jeśli chcesz projekt napisać szybko i dobrze warto korzystać z różnych bibliotek, usprawnień. Przeniesienie algorytmów, czy zasad działania w zasadzie nie powinno być problemem. Największy problem oczywiście jest z widokami, jak bardzo customowe chcesz elementy. Nie możesz zapomnieć o największej trudności androida - wiele urządzeń i wersji.

Pisanie kodu asynchronicznego, działającego w tle w javie wygląda nieco inaczej, dlatego wielu programistów androida korzysta np z rxjava, która udostępnia i upraszcza wiele rzeczy, których w javie brakuje. 






Użytkownicy przeglądający ten temat: 2

0 użytkowników, 2 gości, 0 anonimowych