I was recently asked this quesion. But was not able to explain concisely what exactly sets both these concepts apart.
For example
Final and Immutable:<
final ensure that the address of the object remains the same. Where as the Immutable suggests that we can't change the state of the object once created.
final is just a keyword whereas Immutable is a pattern.
In Case of your first question you have marked the variable as
final, which means you would not be able to change the memory address of it and can't assign a value once more.In case of your second question
Immutableensures you can't change the state of the object you have created.