Node.JS o Scala per app mobili e web [chiuso]

5

Vengo anch'io da uno sfondo php con qualche pitone. Voglio iniziare a lavorare su una lingua diversa sia per lo sviluppo web che per quello mobile. Mi interessano anche le app in tempo reale relative ai giochi.

Sto cercando node.js perché posso usare strumenti come titanium e / o phone gap per far sì che le mie app vengano portate e compilate su codice Java nativo, o in modo da renderle eseguibili su dispositivi mobili (viste Web). Mi piace questo percorso perché posso utilizzare le conoscenze JS esistenti per creare app.

Sto anche guardando scala. Ho fatto un po 'di C # e ho lavorato con Java circa 5 anni fa. E mi piace poter usare scala per creare app native per Android. Ma a differenza del nodo / j che può essere fatto per funzionare anche su altri sistemi operativi mobili, questo funziona solo su Android. In un certo senso, questo non mi infastidisce. Ma scala sembra che avrebbe prestazioni molto migliori per i giochi che JS ha compilato per Android. Ma non so quanto bene.

Alla fine voglio concentrarmi sulle app Web basate su socket e REST per le API a cui gli utenti possono avere accesso, nonché su alcuni sviluppi mobili. Voglio avvicinarmi ai giochi e alle app interattive.

La domanda è: quali caratteristiche di Scala potrebbero avvantaggiarmi sul lato nodo / js delle cose per realizzare applicazioni in tempo reale su web o mobile? Stavo cercando di usare framework come lift o play per il web.

Il nodo rende anche in tempo reale facile con socket.io e il nodo gestisce gran parte di quello in background. Questo è il motivo per cui penso che il nodo potrebbe essere un'ottima scelta. Quindi speravo che qualcuno potesse dare qualche idea sulle funzionalità di Node, che avrebbe qualche vantaggio su scala. Non voglio davvero sentire 'questo è meglio causa la sua scala di mercato o cose correlate. Speravo in più fatti sulle caratteristiche che avrebbero giovato a ciò che volevo fare. Ho già capito perché il nodo è buono. Non so molto di nulla su scala. O come potrebbero essere confrontati per quello che voglio realizzare.

    
posta skift 08.04.2013 - 18:39
fonte

2 risposte

4

I am looking at node.js because I can use tools like titanium and/or phone gap to have my apps ported and compiled to native java code, or in a way that makes it runnable on mobile (web views). I like this path because I can use existing JS knowledge to build apps.

Il nodo è una tecnologia lato server. Non dovresti lasciare che la tua lingua app decida la tua lingua lato server. Sì, ci sono alcune "sinergie" per avere il front-end e il back-end nella stessa lingua. Ma non è un proiettile d'argento, e può causare più mal di testa di quello che risolve. In effetti, la maggior parte degli scrittori di applicazioni sceglie esplicitamente di non farlo.

So I was hoping someone could give some insight on features in Node, that would have some benefit over scala.

Una ragione per NON usare Nodo è che JavaScript ha un sacco di verruche. (Cerca "JavaScript WTF".). Se vuoi JS sul server, preparati a diventare un esperto di JavaScript (specialmente le verruche). Considera anche CoffeeScript che aiuta a sbarazzarsi di alcune delle verruche, ma è facilmente trasformabile in JS. JavaScript è anche un linguaggio di scripting, quindi tende ad essere meno efficiente di Scala.

Scala utilizza la JVM e la storia JVM sul lato server è molto più matura del Nodo. Ma probabilmente è più difficile iniziare con Scala. Non so nulla di scrivere app in Scala, ma immagino che sia molto immatura.

Non pensare alla domanda come o-o. Sarai uno sviluppatore migliore se proverai a implementare in entrambe le lingue. Più lingue conosci, meglio programmerai nella tua lingua preferita.

    
risposta data 22.09.2013 - 02:35
fonte
2

Sono d'accordo con tutto ciò che @BraveNewCurrency ha detto. Vorrei aggiungere alcuni commenti.

Personalmente, userei Scala nel server e CoffeeScript nel client, AFAIK Play permette di integrarli nello sviluppo (posizionamento delle cartelle, ecc.), CoffeeScript ha la stessa interoperabilità di Javascript e una migliore sintassi e Scala ha la stessa maturità e disponibilità della libreria di Java, con una sintassi più piacevole (e semantica ?).

D'altro canto, se non hai bisogno della maturità e della disponibilità delle librerie di Java, allora Node.js fornisce un linguaggio uniforme per lo sviluppo e potresti avere più confidenza con Javascript che con Scala (e il suo ecosistema, come SBT o Maven, ecc. se confrontato con npm, ecc.). Non è un proiettile d'argento per il sistema, ma potrebbe essere comodo per lo sviluppatore. Questo dipende molto dalla persona. Personalmente preferisco avere tipi nel server, aiutano a usare il codice scritto da altre persone che potrebbero non essere i programmatori più disciplinati o migliori del mondo, il che statisticamente dovrebbe accadere abbastanza spesso.

Per concludere, per il client è Javascript o Coffeescript. Scala non avrebbe molto senso lì, è un gioco da ragazzi.

Nel server ci sono guru di Node.js che fanno cose impressionanti, e potrebbe essere più adatto per qualcosa di veloce (e "sporco") se il tuo kung fu è abbastanza strong. D'altra parte, Scala consentirà una migliore integrazione in qualcosa di grande (e "impresa"), specialmente se vorresti collaborare con più persone a un certo punto. Quindi è più una questione di idoneità per (uno scopo non ancora specificato) e gusti personali.

    
risposta data 23.09.2013 - 11:32
fonte