SBT

Het programma zal gemaakt worden in Scala. Java en Scala worden gewoonlijk gecompileerd naar Java byte-code, en draaien dan op dezelfde JVM Java Virtual Machine. Ze kunnen in dat geval ook door elkaar gebruikt worden binnen het zelfde project. Scala.js echter is een variant die vertaald wordt naar JavaScript en draait in de browser. Scala.js kan niet overweg met Java, dus vereist deze optie een cold-turkey switch naar Scala.

Als IDE Integrated Developement Environment gebruik ik Eclipse, maar daarin kun je je eigen voorkeur volgen.

Eenvoudige Scala programma's kunnen na installatie van de Scala-IDE voor Eclipse worden opgezet zonder verdere kennis van SBT Scala Build Tool.
Scala-IDE heeft een interne builder, dus het begin op de Scala-weg gaat gemakkelijk: het lijkt warempel wel Java (qua werkomgeving). Voor serieuze, uitgebreide projecten moet je echter over op SBT. Dat vereist wat gewenning: je zet een bepaalde directorystructuur op, met op bepaalde locaties instellingenbestanden.
Ook is de integratie met Eclipse belabberd. Effectief programmeer je binnen Eclipse, maar compileer en build je via de externe commandline-applicatie SBT. Ondanks deze sores, als het eenmaal draait functioneert het gladjes. Voor Scala.js is SBT praktisch de enige optie.

Ik ben er nog niet uit of het project uiteindelijk over meerdere projecten zal worden verdeeld (zoals in Java het geval was).

Eventuele tips m.b.t. SBT zal ik hier opnemen.
Update, maart 2019
Ondertussen functioneren diverse onderdelen van het genetics-project.
Veel schot zit er niet in, maar bijvoorbeeld de basis van de natuur-component (die DNA van geselecteerde organismen omzet in double-arrays) is geïntegreerd, alsook de xml-parsing (op basis van een xsd en een doublearray wordt xml gegenereerd, wat de uiteindelijke fenotypes bepaalt).

Wat betreft SBT is de belangrijkste nieuwigheid dat ik nu gebruik maak van "cross-compiling": de broncode is nu opgesplitst in drieën (of eigenlijk meer: er is ook testcode, en aan de jvm-kant Java-code): js, jvm en shared.
De jvm-kant gebruik ik vooral om parallel met de js-gui ook een Scala-swing gui te maken (die de gebruiker nooit te zien zal krijgen, maar die handig is voor de ontwikkelaar). Ook kan ik aan de jvm-kant Java-code gebruiken die nog niet is geconverteerd.

In build.sbt definieer je uiteindelijk een paar variabelen die naar de verschillende projecten (jvm en js) refereren, en die je vanuit SBT kunt gebruiken om tests te draaien of de code te runnen dan wel te genereren.