SBT

Sbt is the most improtant tooling one would need with scala. You really don’t even need scala. You need sbt only. Sbt can manage multiple versions of scala too. JVM needs to be there. The sbr process needs some variable in the environemnt with JVM location. What does SBT do for us? It ceeates project structure for you. You can give it the name of the template. It is probably fetching it from some remote git repo. The is a configuration file. The configuration is written on a domain specific language. Better not think too much about the DSL. It is on top of scala. We can get how to change the config from third party library’s documentation. Sbt new creates project. There are other sbt <command> type commands. You can also just call sbt. Then you move from your normal bash shell to sbt shell. There you can call commands like test, compile, run and things. Run runs the main file. These commands that have a variant that recompiles and reloada when files in the project change. You can also call shell to go to another scala shell where you can import stuff from the project and play wirh things. One book I read said you mostly develop in the interactive shell and then move the code to the repo. Since this is functional programming, you don’t need dependencies. Pure functions are easy to develop and test in the shell. There must be commands to get jars too, if that is how scala is deployed.