Простой поиск в Google, чтобы найти документы, дает очень очевидную разницу между ними.
javax.annotation.Nonnull
является частью JSR-305, которая кажется мертвой.Даже если бы это было не так, указанная аннотация использовалась бы только для статического анализа кода, например, ваша IDE предупреждала вас о том, что вы передаете нулевое значение где-то, где это недопустимо.
lombok.NonNull
это совсем другая история.Прежде всего, указанная аннотация НЕ используется для целей валидации или, скорее, для статического анализа кода.Lombok использует эту аннотацию для запуска NPE всякий раз, когда переменная экземпляра или параметр имеют значение null, когда они не должны.
Lombok, будучи постпроцессором аннотации, будет эффективно извлекать эту аннотацию в процессе предварительной компиляции и автоматически генерирует необходимый код для эффективной обработки этих случаев (манипулируя AST).
Вы можете прочитать больше об этом здесь: Lombok - NonNull .
Похоже, что ваше знакомство с функциональностью, связанной с javax.annotation
, и с функциональностью Lombok не самое удачное, поэтому я бы посоветовал внимательно прочитать, что к чему.