Scala is momenteel een van de meest aantrekkelijke programmeertalen. Er is veel hype omheen en programmeurs over de hele wereld erkennen het publiek als het volgende grote ding in programmeren. Dit is waarom. Bij Scala draait alles om functioneel programmeren in een objectgerichte context. Het probeert het beste van beide werelden te nemen en te combineren tot een zeer efficiënte, intelligente en relatief eenvoudig te begrijpen taal. Op dit moment is het de leider in de hedendaagse renaissance van functionele programmeertalen.
Ik heb onlangs de Scala-cursus van Martin Odersky voltooid en ik vond het erg moeilijk om erachter te komen hoe ik moest beginnen. Weet je, die eerste stap wanneer je met coderen wilt beginnen, maar je weet niet welke tools tot je beschikking staan, welke IDE je moet gebruiken of welk unit testing framework je moet kiezen. Deze tutorial gaat over u, de nieuwkomer van Scala, die uw ontwikkelomgeving voorbereidt, zodat u gemakkelijker aan de slag kunt.
Hier zijn de puzzelstukjes waar we het in deze les over zullen hebben, voel je vrij om de stukken over te slaan die je al kent:
We nemen elk onderwerp op de lijst en bespreken dit op een beginnersniveau en tot slot zullen we zien hoe al deze stukjes samenwerken.
Controleer voordat u begint of u de nieuwste Java SDK op uw computer hebt geïnstalleerd. Omdat Scala op de Java Virtual Machine (JVM) werkt, is de SDK vereist. Voor de rest van de onderwerpen op onze lijst is mogelijk de Java SDK vereist, direct of indirect, dus het is goed om te hebben.
U niet nodig om Scala zelf te laten installeren. We zullen hier in het volgende hoofdstuk over praten.
Als u een PHP-ontwikkelaar bent, bent u waarschijnlijk bekend met Composer. Als je een Ruby-goeroe bent, weet en ben je dol op Bundler. Als je in een andere taal programmeert, weet ik zeker dat daar ook een pakketbeheerder voor is.
SBT is vergelijkbaar met de bovenstaande pakketbeheerders, maar terwijl Composer vereist dat je PHP op dezelfde manier hebt geïnstalleerd als Bundler nodig heeft, hoeft Scala niet op het systeem te zijn geïnstalleerd voordat je SBT kunt gebruiken. In feite kan de specifieke Scala-versie die u voor uw project wilt gebruiken, eenvoudig worden gespecificeerd als een afhankelijkheid in SBT. Je vraagt je misschien af hoe dit mogelijk is. Zoals ik al eerder zei, draait Scala op de JVM; eigenlijk is het gewoon een Java-bibliotheek. De pakketten voor Scala kunnen ook eenvoudige .jar-bestanden zijn. Dus SBT zelf is slechts een Java-programma. Je hebt alleen Java nodig, wat je waarschijnlijk al hebt.
Er zijn veel verschillende manieren waarop u SBT kunt installeren. Voor platformonafhankelijke redenen tussen Linux, Mac en Windows, is mijn voorkeursmanier om SBT te installeren gewoon om het archief te nemen, het in een map te plaatsen, het uit te pakken in mijn thuismap en het pad aan het systeem toe te voegen.
Download de nieuwste stabiele SBT uit de officiële repository. Zoek naar een map zonder een "Beta" of "R" of "M" aan het einde. Dat zal de stabiele versie zijn. Op het moment van schrijven van deze tutorial is de nieuwste stabiele versie 0.12.3.
Het archief bevat een sbt
map erin. Haal dit gewoon naar uw favoriete locatie. Ik heb liever dat het ergens in mijn homedirectory is / Home / Csaba / Programmeren / Scala / SBT
Voeg vervolgens het pad naar uw SBT bin-map toe aan uw PATH-variabele. Op UNIX-achtige systemen, als je Bash gebruikt, voeg je een regel als deze toe aan je ~ / .Bash_profile
of ~ / .Bashrc
het dossier:
PATH = $ PATH: $ HOME / Programmering / Scala / sbt / bin export PATH
De $ HOME
variabele wijst meestal naar je homedirectory. U kunt het opnieuw gebruiken in uw configuratiebestanden. Windows-gebruikers kunnen hiervoor een andere variabele hebben. Vergeet het exporteren
commando op de tweede regel, anders jouw PAD
variabele is alleen beschikbaar in het configuratiebestand.
Test nu dat uw SBT-installatie succesvol was. Open een console of opdrachtregelprogramma en typ:
$ sbt --version sbt launcher versie 0.12.2
De $
teken is de Bash-prompt, de rest is de opdracht die u invoert. Zoals je kunt zien, heb ik versie 0.12.2 geïnstalleerd.
Voor andere manieren om SBT te installeren, kunt u de officiële installatiedocumentatie raadplegen.
Maak een map waarin u uw toekomstige code wilt hebben, open een console, ga naar de nieuw aangemaakte map en voer eenvoudig de opdracht uit sbt
.
csaba @ csaba ~ / Persoonlijk / Programmering / NetTuts / Van nul tot Hello World in Scala / Sources $ sbt [info] Wereldwijde plug-ins van /home/csaba/.sbt/plugins laden [info] Updating file: / home / csaba / .sbt / plugins / standaard-e430ed ... [info] Or.scala-sbt # precompiled-2_10_0; 0.12.2 ... [info] downloaden http://repo.typesafe.com/typesafe/ivy-releases/org. scala-sbt / actions / 0.12.2 / jars / actions.jar ... [info] [SUCCESSFUL] org.scala-sbt # acties; 0.12.2! actions.jar (3648ms) [...] Veel meer download hier [info] [SUCCESSFUL] org.scala-tools.testing # test-interface; 0.5! Test-interface.jar (239ms) [info] Klaar met updaten. [info] Stel huidig project in op standaard-f502c6 (in buildbestand: / home / csaba / Persoonlijk / Programmering / NetTuts / Van% 20Zero% 20 tot% 20Hello% 20World% 20in% 20Scala / Sources /)>
Merk op dat het huidige project was ingesteld op de map waarin u zich bevindt en dat uw console is gewijzigd. U bevindt zich nu in de SBT-console. U kunt deze console verlaten door op CTRL + d of CTRL + c te drukken of door de opdracht uit te voeren Uitgang
.
In deze console kun je SBT vertellen om veel dingen te doen. Druk twee keer op TAB en bevestig met Y
om de volledige lijst met beschikbare opdrachten te zien.
Het gebruik van de systeembrede of gebruikersbrede instellingen voor al uw projecten is misschien niet de beste optie. Elk project is anders, het heeft verschillende afhankelijkheden nodig, heeft een andere naam, enzovoort. Om SBT over dergelijke informatie te vertellen, moeten we een bestand maken met de naam build.sbt
. Het moet in de hoofdmap van het project worden geplaatst, die u op de laatste regel kunt vinden, in het vorige voorbeeld.
De taal die in deze bestanden wordt gebruikt, is een DSL die lijkt op de syntaxis van Scala, maar veel minder complex. Om het simpel te houden, definieert u gewoonlijk enkele waarden zoals de naam en versie van uw project of afhankelijkheden, zoals welke Scala- of SBT-versies u wilt gebruiken. De namen van deze waarden worden "sleutels" genoemd. We zullen met slechts een paar van hen werken. Bekijk de Keys.scala-pagina voor een volledige lijst met sleutels.
Voor ons project specificeren we slechts vier sleutels. Hun namen maken ze redelijk duidelijk:
name: = "Hellow World" -versie: = "1.0" scalaVersion: = "2.10.1" sbtVersion: = "0.12.3"
Wees voorzichtig met lege regels in het configuratiebestand. Elke sleutel / waarde-definitie moet worden gescheiden door een lege regel. Ren nu sbt update
in de map van uw project.
$ sbt update [info] Wereldwijde plug-ins laden van /home/csaba/.sbt/plugins [info] Stel huidig project in op Hellow World (in buildbestand: / home / csaba / Personal / Programming / NetTuts / From% 20Zero% 20to% 20Hello% 20World% 20in% 20Scala / Bronnen /) [info] Updating bestand: / home / csaba / Persoonlijk / Programmering / NetTuts / Van% 20Zero% 20to% 20Hello% 20World% 20in% 20Scala / Sources / standaard-f502c6 ... [info] Or.scala-lang # scala-library oplossen; 2.10.1 ... [info] Klaar met updaten. [succes] Totale tijd: 1 s, voltooid 13 mei 2013 8:17:54 PM $ sbt [info] Wereldwijde plug-ins van /home/csaba/.sbt/plugins laden [info] Huidig project instellen op Hellow World (in build file: / home / csaba / Persoonlijk / Programmeren / NetTuts / Van% 20Zero% 20to% 20Hello% 20World% 20in% 20Scala / Sources /)> sbt-versie [info] 0.12.3> scala-versie [info] 2.10.1 > exit
Zoals u kunt zien, is Scala 2.10.1 automatisch geselecteerd en gedownload indien nodig. We hebben ook SBT bijgewerkt naar 0.12.3 on-the-fly. Tot slot merk je dat het ons project bij het laden op naam noemt: "Zet het huidige project op Hellow World".
Ook al kunt u eenvoudig al uw bronbestanden in de hoofdmap van het project plaatsen, SBT raadt en gebruikt bij conventie een directorystructuur die vergelijkbaar is met Maven. Laten we onze mappen bijwerken zodat ze eruit zien als de onderstaande boom. Maak alleen de src
map en de bijbehorende kinderen, de rest werd gegenereerd toen we met de SBT-opdrachten speelden. Als ze dat niet waren, maak je geen zorgen, je bent alleen geïnteresseerd in de src
directory.
├── project │ └── doel │ └── config-klassen ├── src │ ├── belangrijkste │ │ ├── hulpbronnen │ │ └── scala │ └── test │ ├── middelen │ └─ ─ scala └── doelwit
Nu we de basis van SBT hebben geleerd, hebben we een IDE nodig om onze code te schrijven. Als u liever eenvoudige editors gebruikt, zoals Sublime Text, kunt u dit doen en deze stap overslaan.
NetBeans heeft Scala al lang vóór SBT ondersteund. Er is een plug-in genaamd "nbscala" die Scala-projecten voor NetBeans kan maken en de Scala-taal kan gebruiken die op het systeem is geïnstalleerd. Op dit moment is deze plugin overgestapt op SBT en zal uiteindelijk de mogelijkheid hebben om SBT-projecten te maken en te beheren.
Momenteel integreren SBT en NetBeans vrij goed. Het enige dat u handmatig moet maken op het moment dat dit artikel wordt geschreven, is het eerste SBT-project. Naderhand kan NetBeans het dan netjes integreren.
Laten we NetBeans openen, ga naar Extra / Plugins, selecteer de Beschikbare plug-ins tab en scroll naar beneden naar de letter S. Controleer alle plug-ins gerelateerd aan Scala, klik Installeren en laat het de plug-ins installeren met alle benodigde afhankelijkheden.
Als je nieuwsgierig bent naar hoe deze plug-in is geschreven, kun je de Github-repository bekijken.
Ja, je hebt het goed gelezen, SBT heeft een eigen plug-insysteem dat NetBeans-projecten voor je kan genereren. Je hoeft alleen maar naar een git repository te gaan en deze lokaal te publiceren. Ga naar een map waar u uw plug-in wilt laten controleren en installeren en voer de volgende opdrachten uit:
git clone [email protected]: dcaoyuan / nbsbt.git cd nbsbt sbt schoon compileren publiceren-lokaal
Ok, we zijn bijna klaar. We hebben de plugin, nu moeten we SBT laten weten dat hij deze moet gebruiken. Je kunt dit per project doen als je wilt, maar ik raad aan om het toe te voegen aan de SBT-instellingen van je gebruiker: ~ / .Sbt / plugins / plugins.sbt
De ~
verwijst naar je thuismap, je zou al een map moeten hebben met de naam .sbt
erin (let op de punt als eerste karakter). U kunt al dan niet een hebben plugins
map, als u dat niet doet, maakt u het en maakt u het plugins.sbt
het dossier. Voeg nu het volgende toe:
addSbtPlugin ("org.netbeans.nbsbt"% "nbsbt-plugin"% "1.0.2")
Dat is het, nu kan uw SBT NetBeans-projecten voor u genereren wanneer u het netbeans
commando in de SBT-console. Als alternatief kunt u in NetBeans een SBT-project eenvoudig openen (niet nieuw project, maar openen) en het genereert automatisch het NetBeans-materiaal voor u.
Vervolgens worden alle projectafhankelijkheden bijgewerkt en de netbeans
commando zal worden uitgevoerd in een SBT-console, binnenkant van NetBeans.
Nu zie je misschien meer tekst scrollen op het scherm afhankelijk van de afhankelijkheden die moeten worden geïnstalleerd, en je zou moeten kunnen zien dat de netbeans
commando werd automatisch voor ons uitgevoerd.
In het linkerdeelvenster, op de projectbrowser tab kunt u zelfs standaard SBT-opdrachten uitvoeren door simpelweg met de rechtermuisknop op het project te klikken en uit te voeren vernieuwen
, Schoon
, Compileren
enzovoorts.
Dit is geen tutorial om Scala te leren. We zullen alleen een aantal heel eenvoudige code schrijven, een klassieke Hello World. U kunt dus uw Scala-project uitbreiden en in het item "Scala-pakketten" klikken met de rechtermuisknop
object HelloWorld def main (args: Array [String]) = println ("Hello World!")
Als u totaal onbekend bent met Scala, wordt een object automatisch uitgevoerd en wordt een methode genoemd hoofd
zal opgezocht worden. De definitie van de methode is slechts een eenvoudige afdrukregel van Hallo Wereld
.
Ga naar je SBT-console voor dit project - als je het per ongeluk hebt gesloten, klik je met de rechtermuisknop op het Scala-project in het linkerdeelvenster en selecteer je Open de SBT-console. Typ nu rennen
in de console om het programma uit te voeren.
De eerste stap is om Scalatest te installeren, zodat we een testraamwerk hebben. De gemakkelijkste manier om dit te doen, is door ons te bewerken build.sbt
bestand en voeg de volgende regel toe; Vergeet niet dat je een lege regel tussen elke regel moet laten.
libraryDependencies + = "org.scalatest" %% "scalatest"% "1.9.1"% "test"
Nu kunt u in uw SBT-console een update uitvoeren (optioneel) en de test
commando. We hebben nog geen tests, dus de opdracht mag niet mislukken.
Het maken van onze eerste test zal vrij eenvoudig zijn. Het enige dat je moet weten, is dat het in de src / test / scala
map. Of, als je expandeert Scala-testpakketten in uw projectviewer en klik met de rechtermuisknop op
import org.scalatest.FunSuite class ExampleSuite breidt FunSuite uit test ("test 2 verwachte waarden zijn gelijk") assert (2 === 2) test ("test 2 waarden zijn verschillend en mislukken") beweren (2 == = 3)
Houd er rekening mee dat NetBeans mogelijk een aantal problemen heeft met het uitvoeren van uw tests, omdat de Scala-plug-in nog niet is voltooid. Maar raak niet in paniek, u kunt de tests nog steeds uitvoeren vanaf de SBT-console.
De test importeert alleen de Scalatest-testsuite FunSuite
(waar "Fun" van functioneel komt) en voert twee tests uit. Zoals je uit de code kunt afleiden, zal de eerste passeren, de tweede mislukt.
Als SBT om wat voor reden dan ook weigert om uw tests te compileren, sluit u de console gewoon in NetBeans, klikt u met de rechtermuisknop op uw project en selecteert u Herlaad sbt Project. Hiermee wordt het probleem verholpen en worden uw tests uitgevoerd zoals verwacht.
Daar ga je! Je hebt zojuist je eerste stappen gezet om Scala te leren. Ik hoop dat deze tutorial je heeft geholpen om beter te begrijpen hoe je aan de slag kunt gaan. Als ik in plaats van Netbeans, wat mijn voorkeurs-IDE is, ook een Google-zoekopdracht kunt doen om redelijk complete online documentatie te vinden over het gebruik van SBT & Scala met Eclipse, als dat uw voorkeur heeft.
Bedankt voor het lezen.