Domanda Sviluppo Cross-platform

zDanix

Utente Bronze
2 Gennaio 2017
33
8
0
31
Ciao a tutti, sono un ragazzo di 17 anni che ha iniziato a studiare programmazione da 2-3 anni circa.
Un anno fa ho iniziato a costruire applicazioni con Xamarin (C#) ma non ero molto pratico. Perciò, seguendo i consigli ricevuti su inforge, sono passato ad Android studio (Java). Posso dire di conoscere discretamente lo sviluppo di Mobile Apps con Java ma ultimamente mi sono posto un problema: se, avuta un idea interessante, volessi realizzare un servizio sia per iOS che per Android, sarebbe miglior cosa imparare un linguaggio cross-platform oppure usare java e imparare Objective-c? Ognuna delle due scelte mi ha portato comunque ad alcuni dubbi.

1) Angular: E' un framework apprezzato per il cross-platform. Da quanto ho visto, lo sviluppo è molto diverso da quello tradizionale con Java e Android Studio, e non capisco molto bene quali siano i casi in cui bisogni prediligerlo o meno.

2) Objective-c: Linguaggio con cui posso programmare app iOS. Utilizzare questo e java vorrebbe dire che debba scrivere lo stesso codice java in un altro linguaggio. Domanda: Una software house impegnata nella realizzazione di un' app è composta da due gruppi di developers che sviluppano le stesse funzionalità ma in linguaggi diversi?

In conclusione, in relazione anche a ciò che è di moda nel mondo della programmazione software, qual'è la miglior scelta per una singola persona che vuole sviluppare un servizio cross-platform da sè?
 
Lavoro da qualche anno nell'ambito mobile e posso dirti che le aziende che divise tra programmazione nativa e cross-platform. Entrambe le scelte hanno vantaggi e svantaggi.
Con il nativo devi conoscere due linguaggi: Java o Kotlin per Android e Objective-C o Swift (consigliato) per IOS. Questo significa che in progetto abbastanza grandi devi avere due team di sviluppo separati oppure considerare un tempo doppio perchè prima devi occuparti di una piattaforma e poi l'altra. Dire che il codice è lo stesso ma in linguaggio diverso è un grosso sbaglio. Android e IOS lavorano in modo diverso per quanto si possa pensare che siano simili. La gestione dell'UI è completamente diverso e anche i componenti cambiano totalmente.

(Quanto segue non è da prendere come verità assoluta perchè ho sempre lavorato in aziende che prediligono il nativo quindi non ho esperienza diretta)
Con il cross-platform ovviamente il codice è unico e devi conoscere solamente un linguaggio a seconda del framework che utilizzi. Xamarin con c# è perfetto visto che lo conosci già ma non è per forza l'unica soluzione.
Questo significa che il team è unico ma il codice non è perfettamente ottimizzato per le singole piattaforme. Quando vengono fuori errori rischi di sistemare una e rompere l'altra.

A mio parere personale il nativo è la via migliore. Se vuoi partire con le ultime tecnologie ti consiglio di imparare Kotlin e Swift. Parti da applicazioni piccole ed espandile pian piano. Questo ti permetterà di comprendere le differenze delle due architetture e di saper gestire tutte le situazioni. Ci vorrà un po' più di tempo perchè sono due linee di studio ma il risultato è migliore. In futuro nulla ti vieta di spostarti al cross-platform
 
Lavoro da qualche anno nell'ambito mobile e posso dirti che le aziende che divise tra programmazione nativa e cross-platform. Entrambe le scelte hanno vantaggi e svantaggi.
Con il nativo devi conoscere due linguaggi: Java o Kotlin per Android e Objective-C o Swift (consigliato) per IOS. Questo significa che in progetto abbastanza grandi devi avere due team di sviluppo separati oppure considerare un tempo doppio perchè prima devi occuparti di una piattaforma e poi l'altra. Dire che il codice è lo stesso ma in linguaggio diverso è un grosso sbaglio. Android e IOS lavorano in modo diverso per quanto si possa pensare che siano simili. La gestione dell'UI è completamente diverso e anche i componenti cambiano totalmente.

(Quanto segue non è da prendere come verità assoluta perchè ho sempre lavorato in aziende che prediligono il nativo quindi non ho esperienza diretta)
Con il cross-platform ovviamente il codice è unico e devi conoscere solamente un linguaggio a seconda del framework che utilizzi. Xamarin con c# è perfetto visto che lo conosci già ma non è per forza l'unica soluzione.
Questo significa che il team è unico ma il codice non è perfettamente ottimizzato per le singole piattaforme. Quando vengono fuori errori rischi di sistemare una e rompere l'altra.

A mio parere personale il nativo è la via migliore. Se vuoi partire con le ultime tecnologie ti consiglio di imparare Kotlin e Swift. Parti da applicazioni piccole ed espandile pian piano. Questo ti permetterà di comprendere le differenze delle due architetture e di saper gestire tutte le situazioni. Ci vorrà un po' più di tempo perchè sono due linee di studio ma il risultato è migliore. In futuro nulla ti vieta di spostarti al cross-platform
Sono perfettamente d'accordo anche se non mi è capitato di lavorare in aziende, le prestazioni con un linguaggio cross-platform sono molto ma molto basse rispetto al linguaggio nativo. Un po di tempo fa stavo parlando con un ragazzo che voleva imparare java lui programmava non mi ricordo con quale framework cross-platform tipo ionic o react mi raccontava che le applicazioni,anche molto semplici impiegavano fino ad un minuto per aprirsi. Quindi eviterei assolutamente.

L'unica cosa è che io consigliere di partire da Java rispetto a Kotlin, in quanto per un neofita la documentazione, i codici, i libri, i pdf insomma tutto è molto più vasto rispetto a Kotlin che è relativamente giovane quindi potrebbe essere un po più complesso. Poi ognuno fa come vuole, però una volta fatte le ossa con Java passare a Kotlin non mi sembra difficilissimo, anzi.