Discussione: react native o no?
View Single Post
Old 13-01-2020, 11:11   #2
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
Quote:
Originariamente inviato da acronalb Guarda i messaggi
in futuro probabilmente anche per ios
Il che già potrebbe portarti ad escludere qualsiasi soluzione non cross-platform. Cioè, potresti cominciare con Java/Kotlin e Android SDK, poi in futuro usare Swift/Cocoa o passare ad un framework multipiattaforma.

Ma tanto vale che cominci direttamente con uno multipiattaforma!!

Quote:
Originariamente inviato da acronalb Guarda i messaggi
conosco le basi di C,php e javascript ma nulla che possa permettermi lo sviluppo di un'intera applicazione
Ottimo. Se tu fossi stato un programmatore JS, ti avrei consigliato React Native senza pensarci su. In fondo lo scopo di questi strumenti è quello di poter riutlizzare le proprie conoscenze.

Cioè Electron ( per esempio ) non è nato per sfizio, ma perchè qualcuno ha voluto consentire ai programmatori esperti di JS di scrivere programmi per desktop, senza dover imparare da zero altre tecnologie.


Quote:
Originariamente inviato da acronalb Guarda i messaggi
Ho capito che react native è un framework javascipt ma non capisco come possa diventare un'app compatibile con piu' piattaforme!
Oddio, RN usa JSX. Però si, alla fine ti servono html, css e js ( oltre a conoscenze specifiche di jsx, ma niente di drammatico ).

Come fa a creare app per ios/android/uwp? Semplice. Il compilatore contiene del codice Java, Swift, ecc... che rappresenta lo scheletero dell'app per la piattaforma specifica. Dentro ci ficca una virtual machine javascript, che esegue il codice js scritto da te.

Dal tuo punto di vista, conta il fatto di poter scrivere l'app in js.

[quote=acronalb;46572528
Dato che devo comunque iniziare ad imparare un linguaggio dal principio, le applicazioni sviluppate con react native sono paragonabili ad app native o conviene sempre uno sviluppo ad Hoc usando java per android e object C per ios?
[/QUOTE]

Ecco, questa è la parte fondamentale. Intanto cominci da zero in ogni caso e quindi non hai il bias dovuto ad una conoscenza pregressa.

Detto questo, RN è discreto, ma c'è di meglio.

Xamarin, Qt, Flutter. Poi Ionic, Cordova. E ce ne sono altri.

I primi a comparire furono Cordova e i suoi figli. La tua app è una pagina web ( SPA nella parlata corrente dei programmatori js ) e gira in una webview. Ha limitata capacità di interagire col sistema operativo. E' lenta.

Per questo motivo nacquero soluzioni come React Native e Nativescript ( un concorrente di RN ). Non usano la webview. Offrono moduli per interfacciarsi con tutte o quasi le funzionalità del sistema operativo. Sono discretamente veloci.

Nessuna di queste due soluzioni batte quella nativa in termini di accesso diretto al sistema operativo e di performance.

Poi però qualcuno penso di fare ancora meglio. Nacquero Xamarin ( che in verità è più vecchio di RN ), Qt fu portato su Android e iOS, nacque Flutter ( di Google ).

Questi qui implementano praticamente tutto da zero. Usano il sistema operativo solo per le funzionalità base. Sono scritti in C/C++/C#. Pensa che implementano pure i controlli grafici ex novo.

Sono più veloci ( in molti casi, non tutti, ma molti ) del nativo.

Qt però è C++. Molto grosso e complesso. Basato su un'architettura anni '90.

Xamarin non mi ha mai convinto più di tanto. Fa il suo lavoro, ma ha le sue pecche. Bug, architettura presa da .Net. E' valido se sei già un programmatori .Net.

Flutter è imho la scelta migliore. Usa Dart come linguaggio, che è nato per sostituire JS ed è quindi molto espressivo e facile da usare. E' molto veloce. Ha un'architettura pensata per i moderni workflow. L'UI si definisce nel codice ( niente XML, XAML, designer WYSIWYG, ecc... ). Supporta l'hot reloading megli di RN ( che già lo supportano ottimamente ).

Quindi, per me, dovresti puntare su Flutter. Ho usato un pò di tutto negli anni ed è stato uno dei pochi strumenti a farmi esclamare "Wow!".

Inoltre lo stanno portando ovunque. Attualmente supporta le principali piattaforme mobile e il web. Stanno lavorando su Windows/Linux/macOS.

E' un ottimo investimento pure in ottica futura. E sarà il framework di default per programmare su Fuchsia ( il futuro sistema operativo di Google ).
pabloski è offline   Rispondi citando il messaggio o parte di esso