Difference of jal and jalr simply
jal calculates it relative to the current program counter (PC).
eg: "jump to this specific place in my code."
jalr calculates it based on the value in any general-purpose register.
eg: "jump to the address that is stored in this variable/register."