Scala offline development?

Sorry if my question is too obvious, but bare with me here. At my day job we have development computers without internet connection, please don’t ask me why, people here are kinda paranoid about security and stuff. We have separate compiters or laptop for googling stuff up and use stack overflow, we use usb flash drives to download something from the internet and put into our offline computers for development.

We’ve never used Scala or other JVM based language before, but I want to introduce Scala to my development team. Do you think I can really develop in Scala without internet access?

How do I properly install SBT with Scala compiler? As far as I understood on the first run SBT downloads a lot of stuff like the latest Scala compiler. What would be the prefered way to download all this stuff manually? Can I use jar-download.com or something to help me out with that? How do I make SBT use manually downloaded packages instead of going to the internet?

How do I properly install Scala Metals plugin for VSCode? As far as I understood it installs a few libraries from the internet as well on the first run.

What would be the preferred way of installing packages for SBT while being offline? I know there some tools like Artifactory or something like that, that is tipically used for restricted development environments, but sadly tools like that can’t be used here due to the paranoya described before.

When I played a bit with Kotlin I just use jar-download.com, made a Intellij IDEA folder based project, and added all downloaded jars to the project. It worked somewhat well, but I’d like to use Scala instead of Kotlin. And use VSCode instead of Intellij.

The usual solution for doing JVM development on computers that cannot connect to the internet is to set up internal servers that have what is needed. You will need a web server that will have approved downloads for the JVM , Scala and whatever else needs to be installed. You will also need a server running something like artifactory or nexus that will be a repository of the various libraries that your programs will depend on.

All of this will require some up-front commitment from your management. You will need to explain why they should shift to Scala. What benefits will it provide over what you are using now? What will the challenges be in the transition and how will they be overcome. You will need to have answers to these questions before you are able to convince your managers that a change of technology and a learning curve are worth it.

2 Likes

Do you have an intranet for your development machines, or rather no network of any kind? How do you install or update software in general?

We have a LAN network, no machines have access to the internet, windows and linux updates are downloaded manually and uploded to local wsus and apt-cache servers.

Why can’t you do the same with a local nexus or similar server? I don’t see any real difference.
By the way USB flash drives can also be attack vectors for malware.

3 Likes