Toolstack

The SWEA course is focused on realistic, industrial, software development - and that means a lot of industrial strength tools.

Introduction

The central tools you need are

  1. An object-oriented programming language: Java 17+ required.
  2. Build and Dependency management: Gradle 7+ required.
  3. Software configuration management: Git required.
  4. An Integrated Development Environment (IDE): IntelliJ recommmended.

All provided code will run on Java 11 and higher versions.

There are basically two paths for getting the toolstack:

  1. Install the tools manually on your own machine. You have the freedom in choosing tools and the comfort of your favorite OS.
  2. As an alternative you can download the provided virtual machine (see below) with all tools correctly installed. It has some merits as a) virtualization is the 'name of the game' today, and b) as you will get used to Linux and c) when you have passed this course you just delete the VM and have not poluted your host machine with lots of SWEA tools.

In the last 10 years, I have simply stopped developing on my Windows laptop - I do that in Lubuntu Linux VMs instead to keep my own machine clean.

Manual Install on your Own Machine

You will need Java, Gradle, Git, and an IDE.

Java

Java JDK Standard Edition. You will need the 'JDK' to get the compile. Make sure you update your PATH environment variable so you can execute 'java' and 'javac' from a shell. On Ubuntu Linux you can 'sudo apt-get install openjdk-17-jdk' and get everything you want.

I install Java 21 LTS on Windows in this InstallJava21 video.

Gradle

Download it from https://gradle.org/install/. Do not do 'sudo apt install gradle' on Linux, as you will get an old version, you need gradle version 7.

I install Gradle on Windows in this Gradle video. And - get the HotStone starter codebase and test that is working with Java/Gradle in this HotStone video.

Git

Search the net for 'Downloading Git' and you will hit installation guides for all major platforms. For Ubuntu Linux, just use sudo apt-get install git.

Personally, I use 'SourceTree' on Windows (nice graphical overview of branches, code diff, and nice stuff); and use the raw command line on Linux.

I install Git on Windows in this Git Install on Windows video, and clone my HotStone project in this Git Clone HotStone video.

IntelliJ

Find IntelliJ download page for how to get it for the major platforms. The community edition is all you need.

I install IntelliJ on Windows in this IntelliJ video.

To get HotStone into IntelliJ, please follow the Import a Gradle project into IntelliJ guide; OR view this import video.

If you run into problems, please check my intellij tutorials, and/or ask at the forum or at classes!

Virtual machine: M16

I have advocated to use a virtual machine instead of local install for years---but generally SWEA students have not listened :). So - from E2024 it is no longer the recommended path and the M16 below is the E2023 build. Which means: It will work but when you first run it, it will need to security update the OS.

M16 is a Ubuntu based VM with LXDE as window manager. Ubuntu/Lubuntu are widely used Linux distributions and are thus also a perfect learning vehicle for getting to know Linux that is the OS for open source server systems...

If you have a Mac with an ARM-based CPU ("Apple Silicon"), you can unfortunately not use M16, as it is based on an Intel CPU architecture. Sorry about that.

To get going, you have to

  1. Download the VM in m16-swea.zip (5.6 GB / VMWare version 15+) and unzip it in some folder. Unzips to a folder with a VMWare virtual machine. It is a 64-bit Lubuntu 22.04 LTS Desktop machine with Java 17, Gradle 8.3, Git, and IntelliJ installed. User: csdev; pwd: csau.
  2. Download VMWare Workstation Player/Fusion. You have two options, one is to use our 'Adacemic Software Licensing Program', which is a changed initiative compared to previous years, so I have not myself tried it. Another is to get the Player evaluation. Player is free for non-commercial use. If you are on a Mac, you must get 'VMWare Fusion' instead of Player: Fusion evaluation, again free for non-commercial activity.
  3. Start your VMWare Workstation/Player, Select File->Open VM, and browse to the folder of the unzipped vm, and select the vm appearing. If asked, say you have copied it.
  4. Log onto Lubuntu using the credentials above.
  5. Want a shell? Hit Ctrl-Alt-T.
  6. Want the IntelliJ IDE? Click 'StartButton/Programming/IntelliJ'.
  7. What to quickly move back and forth between the four virtual desktops of Lubuntu: hit Ctrl-Shift-Left or Ctrl-Shift-Right; or click the panes in the bottom toolbar.
  8. Want a faster VM? If your laptop has spare muscles, shutdown the vm, and then edit settings - allocate more memory and/or more CPUs.

Why 'M16'? It is the old Messier catalogue number for the Eagle Nebula, which is the background picture of the VM: "Pillars of Creation". I have a degree in astronomy way back...

Note: The source code for the mandatory project is the E2023 version, and you need to remove that and get the right version for the course.

I have made screencasts of starting a Lubuntu VM You can find them here (it is an older VM but the process is the same)

  1. M17 Download and Run. Demo of starting the VM and a bit of overview of how to run test cases using Gradle and IntelliJ (in Danish).

Common Setup

No matter if you use M16 or your host machine, the following are setup that needs to be made.

Git configuration

One annoying thing about git is that it constantly asks you for your git repository password. Avoid that by setting up its credential cache. These commands should do the trick:

  git config --global user.name "(your name)"
  git config --global user.email "(your mail address)"

  git config --global credential.helper cache
  git config --global credential.helper 'cache --timeout=7200'
  git config --global push.default simple
    

An alternative is using SSH keys. It streamlines the daily use somewhat, but there are quite a few initial steps involved generating keys and stuff. So - if you know how - use it; if not - don't :).

Git Importing

And... You will in Mandatory Iteration 2 need to get a AU GitLab repository per group and get HotStone under Git control. Follow the guides on Weekplan 2.

Screencast production and publication

As a supplement to writing reports, hand-ins may require you to make a screencast: A video of your computer screen while you talk us through the actions you make.

I use BandiCam for recording (Windows) but it is not free. Students have over the years found and recommended tools, check out the following suggestions:

  1. https://obsproject.com
  2. https://www.nextofwindows.com/6-best-free-screencast-recording-tools-for-windows
  3. Mac's QuickTime can be used on MacOS.
  4. https://www.screencast-o-matic.com/ should work on Mac and Windows.
  5. 6 of the Best Free Linux Screencasting Software provides some options for Linux
Please, if you find others or have comments, post a note on the forum.

Hint: If your tool supports it, ensure that you turn on features that highligh the mouse and mouse clicks as this greatly enhances the TA's ability to view what you have been doing! In Bandicam, on the 'Video' tab, make sure to check "Show mouse cursor" and "Add mouse click effects".

If you start considering using video editing software, then I frankly think don't. If you are not used to a tool, it would take much more time to get acquinted with it, than to do the screen capture once more.

To let the TA view your screencast there are two options

Optional tools

UML Drawing Tools

A simple drawing tool is to write it on a whiteboard/paper, use your phone to take a picture, and paste it into your report! As long as you writing is easy to read, this is perfectly fine.

For more finesse, a UML drawing tool is handy to draw the required class and sequence diagrams for the exercises. I know there are free/open source tools, but have not experience regarding which is best. I myself use (an old version of) Visio.