Da Zero a Hello World in Scala

Scala è uno dei linguaggi di programmazione più interessanti in questo momento. C'è molto clamore intorno a questo e i programmatori di tutto il mondo lo riconoscono pubblicamente come la prossima grande novità in programmazione. Ecco perché. Scala è tutto incentrato sulla programmazione funzionale in un contesto orientato agli oggetti. Cerca di prendere il meglio di entrambi i mondi e combinarli in un linguaggio altamente efficiente, intelligente e relativamente facile da capire. In questo momento è il leader nell'odierna rinascita dei linguaggi di programmazione funzionale.

Recentemente ho terminato il corso Scala di Martin Odersky e ho trovato molto difficile capire come iniziare. Sai, quel primo passo quando vuoi iniziare a programmare, ma non sai quali strumenti sono a tua disposizione, quale IDE usare, o quale quadro di test unitario scegliere. Questo tutorial riguarderà te, il nuovo arrivato di Scala, preparando il tuo ambiente di sviluppo in modo da poter iniziare più facilmente.


I pezzi del puzzle

Ecco i pezzi del puzzle di cui parleremo in questa lezione, sentiti libero di saltare quelli che già conosci:

  • Simple Build Tools (SBT) - questo è lo strumento che genera progetti, dipendenze, ecc. per Scala
  • NetBeans con i plugin Scala - come integrare Scala con NetBeans
  • Ciao mondo - creeremo il nostro primo file sorgente di Scala
  • ScalaTest - il framework di test dell'unità raccomandato per Scala

Prenderemo tutti gli argomenti della lista e discuterne a livello di principianti e finalmente vedremo come tutti questi pezzi lavoreranno insieme.


Requisiti software

Prima di iniziare, assicurarsi di disporre dell'ultimo SDK Java installato sul computer. Poiché Scala viene eseguito su Java Virtual Machine (JVM), è richiesto l'SDK. Il resto degli argomenti del nostro elenco potrebbe richiedere l'SDK Java, direttamente o indirettamente, quindi è bello averlo.

tu Non ho bisogno avere installato Scala. Ne parleremo nel prossimo capitolo.


Scala Simple Build Tools (SBT) di Scala

Se sei uno sviluppatore PHP, probabilmente conosci bene Composer. Se sei un guru dei Ruby, conosci e ami Bundler. Se si programma in un'altra lingua, sono sicuro che esiste anche un gestore di pacchetti.

SBT è simile ai precedenti gestori di pacchetti, ma, mentre Composer richiede che PHP sia preinstallato nello stesso modo in cui Bundler ha bisogno di Ruby, non è necessario che Scala sia installato sul sistema prima di poter usare SBT. In effetti, la specifica versione di Scala che si desidera utilizzare per il proprio progetto può essere semplicemente specificata come dipendenza in SBT. Potresti chiederti come sia possibile. Come ho detto prima, Scala funziona sulla JVM; fondamentalmente, è solo una libreria Java. I pacchetti per Scala possono anche essere semplici file .jar. Quindi, SBT, di per sé, è solo un programma Java. Hai solo bisogno di Java, che probabilmente hai già in ogni caso.

Esistono molti modi diversi per approcciare l'installazione di SBT. Per ragioni cross-platform tra Linux, Mac e Windows, il mio modo preferito per installare SBT è solo quello di prendere l'archivio, metterlo in una directory, estrarlo nella mia home directory e aggiungere il suo percorso al sistema.

Un modo indipendente dalla piattaforma per installare SBT

Scarica l'ultimo SBT stabile dal repository ufficiale. Cerca una cartella senza un "Beta" o "R" o "M" alla fine. Questa sarà la versione stabile. Al momento della stesura di questo tutorial, l'ultima versione stabile è la 0.12.3.

L'archivio contiene un sbt directory al suo interno. Basta estrarre questo nella tua posizione preferita. Preferisco che sia da qualche parte nella mia home directory come / Home / Csaba / Programmazione / Scala / sbt

Quindi, aggiungere il percorso alla directory bin SBT, alla variabile PATH. Sui sistemi UNIX, se usi Bash, aggiungi una linea come questa al tuo ~ / .Bash_profile o ~ / .Bashrc file:

PERCORSO = $ PERCORSO: $ HOME / Programmazione / Scala / sbt / bin PERCORSO di esportazione

Il $ HOME variabile di solito punta alla tua home directory. Puoi riutilizzarlo nei tuoi file di configurazione. Gli utenti Windows possono avere una variabile diversa per questo. Non dimenticare il esportare comando sulla seconda riga, altrimenti il ​​tuo SENTIERO la variabile sarà disponibile solo all'interno del file di configurazione.

Ora verifica che l'installazione SBT abbia avuto esito positivo. Aprire una console o uno strumento da riga di comando e digitare:

$ sbt --version sbt launcher versione 0.12.2

Il $ il segno è il prompt di Bash, il resto è il comando che inserirai. Come puoi vedere, ho installato la versione 0.12.2.

Per altri modi di installare SBT, è possibile controllare la documentazione di installazione ufficiale.

Creare un nuovo progetto

Crea una cartella in cui desideri inserire il tuo futuro codice, apri una console, cambia nella directory appena creata e semplicemente esegui il comando sbt.

csaba @ csaba ~ / Personal / Programming / NetTuts / Da zero a Hello World in Scala / Sorgenti $ sbt [info] Caricamento di plugin globali da /home/csaba/.sbt/plugins [informazioni] Aggiornamento di file: / home / csaba / .sbt / plugins / default-e430ed ... [info] Risoluzione di org.scala-sbt # precompiled-2_10_0; 0.12.2 ... [info] download http://repo.typesafe.com/typesafe/ivy-releases/org. scala-sbt / actions / 0.12.2 / jars / actions.jar ... [info] [SUCCESSFUL] org.scala-sbt # actions; 0.12.2! actions.jar (3648ms) [...] Molti altri download qui [info] [SUCCESSFUL] org.scala-tools.testing # test-interface; 0.5! Test-interface.jar (239ms) [info] Fine aggiornamento. [info] Imposta il progetto corrente su default-f502c6 (nel file di build: / home / csaba / Personale / Programmazione / NetTuts / Da% 20Zero% 20a% 20Ciao% 20Mondo% 20in% 20Scala / Fonti /)>

Si noti che il progetto corrente è stato impostato sulla cartella in cui ci si trova e che la console è stata modificata. Ora sei nella console SBT. Puoi lasciare questa console premendo CTRL + do CTRL + c o emettendo il comando Uscita.

In questa console, puoi dire a SBT di fare un sacco di cose. Basta premere due volte TAB e confermare con y per vedere la lista completa dei comandi disponibili.

Configurazione di costruzione basata su progetto

L'utilizzo delle impostazioni a livello di sistema o di livello utente per tutti i tuoi progetti potrebbe non essere l'opzione migliore. Ogni progetto è diverso, ha bisogno di diverse dipendenze, ha un nome diverso e così via. Per comunicare a SBT informazioni come questa, dobbiamo creare un file chiamato build.sbt. Deve essere inserito nella cartella principale del progetto, che puoi trovare nell'ultima riga, nell'esempio precedente.

Il linguaggio usato in questi file è un DSL che assomiglia alla sintassi di Scala, ma molto meno complesso. Per semplificare, di solito definirai alcuni valori come il nome del tuo progetto e la sua versione o dipendenze, come ad esempio le versioni Scala o SBT da utilizzare. I nomi di questi valori sono chiamati "chiavi". Lavoreremo solo con alcuni di loro. Controlla la pagina Keys.scala per un elenco completo delle chiavi.

Per il nostro progetto verranno specificate solo quattro chiavi. I loro nomi li rendono abbastanza auto esplicativi:

nome: = versione "Hellow World": = "1.0" scalaVersion: = "2.10.1" sbtVersion: = "0.12.3"

Fai molta attenzione con le righe vuote nel file di configurazione. Ogni definizione di valore chiave deve essere separata da una riga vuota. Ora corri aggiornamento sbt nella directory del tuo progetto.

$ sbt update [info] Caricamento dei plugin globali da /home/csaba/.sbt/plugins [info] Imposta il progetto corrente su Hellow World (nel file di build: / home / csaba / Personal / Programming / NetTuts / From% 20Zero% 20to% 20Hello% 20World% 20in% 20Scala / Fonti /) [informazioni] Aggiornamento file: / home / csaba / Personale / Programmazione / Tagli / Da% 20Zero% 20a% 20Ciao% 20Mondo% 20in% 20Scala / Fonti / default-f502c6 ... [info] Risolvi org.scala-lang # scala-library; 2.10.1 ... [info] Fine aggiornamento. [successo] Tempo totale: 1 s, completato il 13 maggio 2013 8:17:54 PM $ sbt [info] Caricamento dei plugin globali da /home/csaba/.sbt/plugins [info] Imposta il progetto corrente su Hellow World (in compilazione file: / home / csaba / Personale / Programmazione / NetTuts / Da% 20Zero% 20a% 20Ciao% 20Mondo% 20in% 20Scala / Fonti /)> versione sbt [info] 0.12.3> scala-versione [informazioni] 2.10.1 > esci

Come puoi vedere, Scala 2.10.1 è stato selezionato automaticamente e scaricato se necessario. Abbiamo anche aggiornato SBT a 0.12.3 al volo. Infine, noterai che durante il caricamento chiama il nostro progetto per nome: "Imposta il progetto corrente su Hellow World".

Convenzioni sulla struttura delle directory in SBT

Anche se puoi semplicemente inserire tutti i tuoi file sorgente nella directory radice del progetto, SBT consiglia e utilizza, per convenzione, una struttura di directory simile a Maven. Aggiorniamo le nostre directory in modo che assomiglino all'albero sottostante. Dovresti creare solo il src directory e i suoi figli, il resto sono stati generati quando abbiamo giocato con i comandi SBT. Se non lo fossero, non ti preoccupare, ti interessa solo il src elenco.

├── progetto │ └── obiettivo │ └── classi di configurazione ├── src │ ├── principale │ │ ├── risorse │ │ └── scala │ └── test │ ├── risorse │ └─ ─ scala └── bersaglio

Integrazione di Scala, SBT e NetBeans

Ora che abbiamo imparato le basi di SBT, abbiamo bisogno di un IDE per scrivere il nostro codice. Se preferisci usare editor semplici, come Sublime Text, puoi farlo e saltare questo passaggio.

NetBeans ha avuto il supporto per Scala molto prima di SBT. C'è un plugin chiamato "nbscala" che può creare progetti Scala per NetBeans e usare il linguaggio Scala installato sul sistema. Al momento, questo plugin sta passando a SBT e alla fine avrà la capacità di creare e gestire progetti SBT.

Attualmente, SBT e NetBeans si integrano abbastanza bene. L'unica cosa che devi creare manualmente al momento della stesura di questo articolo è il progetto SBT iniziale. Successivamente, NetBeans può quindi integrarsi perfettamente con esso.

Installazione del supporto Scala in NetBeans

Apriamo NetBeans, vai a Strumenti / plugins, seleziona il Plugin disponibili scheda e scorrere fino alla lettera S. Controlla tutti i plugin relativi a Scala, clicca Installare e lascia che installi i plugin con tutte le dipendenze necessarie.


Se sei curioso di sapere come viene scritto questo plugin, puoi controllare il suo repository Github.

Installazione del supporto NetBeans in SBT

Sì, hai letto bene, SBT ha un proprio sistema di plugin che può generare progetti NetBeans per te. Devi solo controllare un repository git e pubblicarlo localmente. Passare a una directory in cui si desidera controllare e installare il plug-in, quindi eseguire i seguenti comandi:

git clone [email protected]: dcaoyuan / nbsbt.git cd nbsbt sbt clean compile pubblica-locale

Ok, abbiamo quasi finito. Abbiamo il plugin, ora dobbiamo dire a SBT di usarlo. Puoi farlo per progetto, se lo desideri, ma ti consiglio di aggiungerlo alle impostazioni SBT dell'utente: ~ / .Sbt / plugins / plugins.sbt

Il ~ si riferisce alla tua directory home, dovresti già avere una directory chiamata .sbt in esso (notare il punto come primo carattere). Potresti o non potresti avere un plugins directory, se non lo fai, basta crearlo e quindi creare il plugins.sbt file. Ora aggiungi il seguente:

addSbtPlugin ("org.netbeans.nbsbt"% "nbsbt-plugin"% "1.0.2")

Questo è tutto, ora il tuo SBT può generare progetti NetBeans per te quando esegui il NetBeans comando nella console SBT. In alternativa, in NetBeans, puoi semplicemente aprire (non un nuovo progetto, ma aprire) qualsiasi progetto SBT e genererà automaticamente il materiale NetBeans per te.


Quindi tutte le dipendenze del progetto verranno aggiornate e il NetBeans il comando verrà eseguito in una console SBT, all'interno di NetBeans.


Ora puoi vedere più testo scorrere sullo schermo a seconda delle dipendenze necessarie per essere installato, e dovresti essere in grado di vedere che il NetBeans il comando è stato eseguito automaticamente per noi.

Nel riquadro sinistro, sul browser di progetto scheda, è anche possibile eseguire i comandi SBT di base semplicemente facendo clic con il pulsante destro del mouse sul progetto ed eseguendolo Ricaricare, Pulito, Compilare e così via.


Ciao mondo in Scala

Ora, questo non è un tutorial per imparare Scala. Scriveremo solo un codice molto semplice, un classico Hello World. Quindi, puoi andare avanti ed espandere il tuo progetto Scala e nella voce "Pacchetti Scala", fai clic con il tasto destro del mouse su e selezionare Nuovo -> Oggetto Scala. Dagli un nome, qualcosa come "HelloWorld" andrà benissimo. Quindi all'interno di esso, inserisci il seguente codice:

oggetto HelloWorld def main (args: Array [String]) = println ("Hello World!")

Se non conosci completamente Scala, un oggetto verrà eseguito automaticamente e verrà chiamato un metodo principale sarà alzato lo sguardo. La definizione del metodo è solo una semplice linea di stampa di Ciao mondo.

Vai alla tua console SBT per questo progetto: se lo hai chiuso per errore, fai clic con il pulsante destro del mouse sul progetto Scala nel riquadro sinistro e seleziona Apri console sbt. Ora, digita correre nella console, per eseguire il programma.



Aggiunta di test

Il primo passo è installare Scalatest in modo da avere un framework di test. Il modo più semplice per farlo è modificare il nostro build.sbt file e aggiungi la seguente riga; ricorda che devi lasciare una linea vuota tra ogni linea.

libraryDependencies + = "org.scalatest" %% "scalatest"% "1.9.1"% "test"

Ora, nella tua console SBT puoi rilasciare un aggiornamento (opzionale) ed eseguire il test comando. Non abbiamo ancora nessun test, quindi il comando non dovrebbe fallire.


Creare il nostro primo test sarà abbastanza facile. L'unica cosa che devi sapere è che deve essere nel src / test / Scala cartella. Oppure, se espandi Pacchetti di test Scala nel visualizzatore del progetto e fai clic con il pulsante destro del mouse su , puoi selezionare Nuovo -> Scala Class e creane uno con il nome "ExampleSuite" e aggiungi il codice qui sotto:

importare la classe org.scalatest.FunSuite ExampleSuite estende FunSuite test ("test 2 valori attesi sono uguali") assert (2 === 2) test ("test 2 valori sono diversi e fail") assert (2 == = 3)

Tieni presente che NetBeans potrebbe avere alcuni problemi con l'esecuzione dei test, poiché il plug-in di Scala non è ancora completo. Ma non fatevi prendere dal panico, è ancora possibile eseguire i test dalla console SBT.

Il test importa solo la suite di test Scalatest FunSuite (dove "Fun" deriva da funzionale) e esegue due test. Come potresti capire dal codice, il primo passerà, il secondo fallirà.


Se, per qualche ragione, SBT rifiuta di compilare i test, basta chiudere la console in NetBeans, fare clic con il pulsante destro del mouse sul progetto e selezionare Ricarica il progetto sbt. Questo risolverà il problema e i test verranno eseguiti come previsto.


Pensieri finali

Ecco qua! Hai appena completato i tuoi primi passi verso l'apprendimento di Scala. Spero che questo tutorial ti abbia aiutato a capire meglio come iniziare. Se, invece di usare Netbeans, che è il mio IDE preferito, puoi anche fare una ricerca su Google per trovare una documentazione online abbastanza completa su come usare SBT e Scala con Eclipse, se è quello che preferisci.

Grazie per aver letto.