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."