Разница между JsonNullable и Optional в Java заключается в их назначении и области применения.
JsonNullable предназначен для работы с необязательными значениями, в основном используется в полях объектов. 1 С его помощью можно работать с нулевыми значениями, которые имеют определённый смысл. 1 Например, с помощью JsonNullable можно выполнять частичное обновление (патч) данных с явными нулевыми значениями. 3
Optional, в свою очередь, предназначен для использования в качестве возвращаемого значения из метода, когда результата может не быть. 2 Например, функция поиска может найти нужный элемент, а может и не найти. 2 При этом Optional не должен быть равен null. 1
Таким образом, JsonNullable используется для работы с необязательными значениями в полях объектов, а Optional — для ситуаций, когда результат может отсутствовать.