JPlus is fully compatible with Java, offering modern language features like null safety, boilerplate code generation and other modern language features to reduce developer burden and maximize productivity.
Notably, there is currently no ‘superset’ language that keeps Java syntax almost intact while extending the language with features like null checks at the language level. JPlus aims to fill this gap, providing a language that existing Java developers can naturally learn and adopt.


But there is a reason for null, its a really nice thing you can work with… I really don’t understand all the fuss about null safety, working against the language
Nulls are useful, but you can’t work with them in Java. Anything can be null at any time without warning, even when you have absolutely no reason to ever allow a null. Null safety as a language feature gives you the choice to allow nulls when they make sense or guarantee a value when needed. It saves you checking for nulls in the core of your logic when you already ruled them out at the boundary and enforced it at compile time.
If you check for them in your boundary, you shouldn’t check for them everywhere, only where you possibly introduce them …
But you can’t look at a method signature and instantly know who handles the null check. You need to inspect code and calls to know for sure. This will lead to paranoia, sooner or later
Null is fine if you remember to account for it everywhere.
I want to write functions that fail at compile time if called with a null object. You can use annotations to kinda do this, but they do not produce compile errors.
But you should just throw an exemption, and let the caller handle it. There is so many variations where an object is null, you can’t control, or you are deep inside your own code, it should be covered by a test.
The problem is that when an project is too big and a method is called from multiple contexts it’s very easy to lose track of the context where the null check has been done and where it hasn’t. This leads to a lot of duplicated null checks around the project and the constant paranoia of “can this be null here?”.
A much better way of doing this is using the
Optionalwhen an Object can be “null” and a direct instance where it cannot. This way, at any given context you know for absolute sure if a null check is needed or not. However, even with annotations this does not throw a compile error…This is exactly the core problem that JPlus aims to solve.