Ignition 8.3.4 Nullability Annotations

In Ignition 8.3.4, we've standardized our nullability annotations on JSpecify. As part of this change, we removed the JSR 305 (javax.annotation) and JetBrains (org.jetbrains.annotations) annotation dependencies from the platform.

Who is affected?

This only affects module developers who use nullability annotations like @Nullable, @Nonnull, @NotNull, etc. in their code. If you don't use these annotations, no action is needed.

What you need to do

If your module uses JSR 305 or JetBrains nullability annotations and you were relying on them being available transitively through the Ignition SDK, you have two options:

Option 1: Declare the dependency explicitly

Add the dependency to your build.gradle:


// For JSR 305

implementation 'com.google.code.findbugs:jsr305:3.0.2'

// Or for JetBrains annotations

implementation 'org.jetbrains:annotations:24.0.0'

Option 2: Migrate to JSpecify

We recommend migrating to JSpecify for consistency with the platform:


// Old

import javax.annotation.Nullable;

import org.jetbrains.annotations.NotNull;

// New

import org.jspecify.annotations.Nullable;

import org.jspecify.annotations.NonNull;

Note that JSpecify uses @NonNull rather than @Nonnull or @NotNull.

JSpecify should come in transitively via the dependency on ignition-common from the SDK.

4 Likes

This is already available if you switch your SDK dependency to 8.3.4-SNAPSHOT.

There's enough stuff coming in v8.3.4 that I think it will be my support baseline. FWIW.

Yeah it's going to be a good version :slight_smile:

I don't think that modules compiled for previous versions need to be updated or recompiled for 8.3.4, but I haven't been able to verify that yet.

It's just that if you do use these annotations, and you've updated your Ignition SDK dependency to 8.3.4, you may find some changes are needed.

3 Likes