Чтобы ответить на первый вопрос: в первом случае вы создаете новый объект Fib
при каждом удаленном вызове, поэтому вы всегда начинаете с 0 + 1. В третьем случае, даже если на стороне клиента вы находитесьпри сохранении одного и того же объекта изменения, внесенные в него через RMI, не видны.
Вы не можете изменить содержимое объекта с помощью вызова RMI, поскольку объекты отличаются.Когда вы вызываете метод RMI, объект сериализуется и десериализуется с другой стороны, поэтому фактически существуют две копии объекта.Изменение копии на стороне сервера не повлияет на клиентскую сторону.
В четвертом случае вы используете локальный объект для вычисления чисел Фибоначчи, поэтому, очевидно, когда объект, переданный методу, изменяется,новое содержимое отображается в коде вызова.