2012-05-17 6 views
7

Apprezzo che questa domanda possa essere chiusa a causa della sua natura aperta, ma sono curioso nientemeno.Piattaforme Web cross-OS con tipizzazione statica: Java, Mono e cos'altro?

Se volessi sviluppare un'applicazione Web multipiattaforma utilizzando un linguaggio tipizzato staticamente, quali sarebbero le mie scelte? Sono a conoscenza di Mono e Java, ma cos'altro c'è?

(Quando dico cross-platform, voglio dire Windows e almeno un sapore comune Linux)

risposta

3

Ci sono diversi ad alte prestazioni Haskell framework web che sottolineano forte correttezza statica:

L'obiettivo è quello di appoggiarsi al sistema di tipo a fornire codice altamente ottimizzato e zero possibilità di errore di runtime.

Per citare il sito web Yesod:

bug Accendere runtime in errori di compilazione

Yesod crede nel filosofia di rendere il compilatore tuo alleato, non è il tuo nemico. Noi utilizziamo il il sistema di tipi per far rispettare il più possibile, dalla generazione di appropriati collegamenti , per evitare attacchi XSS, alla gestione dei problemi di codifica dei caratteri . In generale, se il tuo codice viene compilato, funziona. E invece di dichiarando i tipi ovunque si lascia che il compilatore li calcoli per con l'inferenza di tipo.

+0

Questi sono completamente nuovi per me, grazie per le informazioni! Tuttavia, sono scettico riguardo all'osservazione del "guasto zero runtime". Potresti approfondire questo argomento? La tipizzazione statica non rimuove i bug comportamentali ... –

+1

Dovrei chiarire: L'obiettivo * è quello di codificare quante più proprietà possibili nel sistema di tipi, per avvicinarsi a zero possibilità di errore di runtime, nel limite. Ciò non significa che hai un'applicazione web verificata formalmente, ma è un passo avanti verso di essa. –

+0

Impressionante, attualmente sto utilizzando la verifica formale in .NET tramite contratti di codice. Questi sembrano le mie lingue kinda :) –

1

credo Ruby è stongly digitato, quindi Ruby on Rails essere una buona scelta per questo.

+0

Sei sicuro che Ruby è fortemente digitato? Wikipedia sembra pensare diversamente ... –

+4

Sì, ma ruby ​​non è ** staticamente digitato **. Fortemente tipizzato significa che il sistema di programmazione rifiuta espressioni/operazioni in cui i tipi non corrispondono. Ma questo potrebbe essere applicato in fase di esecuzione, come in Ruby. –

+0

Ah sì certo, grazie per la pulizia. Aggiornerò la domanda! –

4

È possibile usare un linguaggio unico per le parti client e server:

  1. Java
  2. C#
  3. di Google Go
  4. Scala
  5. GWT (framework Java)
  6. Haskell web quadri
+0

PHP e Python non sono lingue tipizzate in modo statico. Quindi i loro framework non impediscono errori di tipo in fase di runtime da rottura del server. –

+0

Stai mescolando Framework e Lingue. GWT è un framework che utilizza Java. Questo può essere fuorviante IMHO. –

+0

@MikeMyers Oh, decisamente in aumento per averli elencati tutti, ma ho solo pensato che l'OP fosse abbastanza chiaro sulla mancanza di lingue, non su una lista di quadri che usano la stessa lingua. La domanda evidenzia le opzioni limitate delle lingue tipizzate staticamente per gli sviluppatori web. Sarebbe bello vedere la versione di nodejs tipizzata in modo statico. –

2

Se si intende la tipizzazione statica, purtroppo non c'è molta scelta. Il linguaggio Go di Google sembra iniziare a crescere nello spazio delle applicazioni Web (esiste il supporto per Google App Engine e progetti come GoWeb), ma questi sforzi probabilmente non sono ancora molto maturi.

Scala potrebbe essere un'altra opzione possibile. Sebbene funzioni anche su JVM, i suoi framework web sono molto diversi a causa delle funzionalità avanzate della lingua (vedi ad esempio Lift) e potrebbero valere un aspetto distinto.

2

Oltre a Java e C# (via mono), si potrebbe anche usare C (moderna) ++ nella forma del
Wt (C++ Web Toolkit). Ora la parte C compatibile con le versioni precedenti di C++ non è fortemente tipizzata, ma per il resto i programmi C++ sono sicuri.

Se si desidera una sicurezza di tipo veramente forte, è possibile utilizzare Haskell con Yesod. L'obiettivo di Yesod è di usare tipi forti per prevenire errori comuni nella programmazione di applicazioni web. Gli URL, ad esempio, sono controllati. Non è possibile costruire un collegamento intra-applicazione senza fornire i parametri corretti. L'escaping del contenuto dell'utente durante il rendering della pagina Web è un'altra situazione in cui viene utilizzato il compilatore Haskell per garantire che le stringhe siano debitamente escappate prima di essere incluse in una pagina sottoposta a rendering.