this post was submitted on 06 Nov 2025
17 points (74.3% liked)

Programming

23417 readers
224 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
 

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.

you are viewing a single comment's thread
view the rest of the comments
[–] justicecoder@programming.dev 1 points 3 days ago* (last edited 3 days ago) (1 children)

Kotlin isn’t a superset, you can’t just compile a java file with kotlin and have it work afaik. That seems to be the point here.

This is more like a preprocessor anyway, like SASS to CSS. The compiler spits out Java source code, not jvm bytecode.

Exactly, as you said, Kotlin isn’t a Java superset. you can’t just compile a Java file with Kotlin and have it work. JPlus works similarly in that it outputs standard Java source code rather than JVM bytecode.

However, JPlus is not merely a “preprocessor.” It actually parses Java source like a compiler, performs null-safety checks and boilerplate code generation on the generated parse tree, and finally produces standard Java code. In that sense, JPlus should be considered a compiler. The only difference is that its output is Java code; if the code generation step were extended to produce JVM bytecode directly, it could bypass the Java source entirely and generate bytecode straightaway.

The key point is that, just like TypeScript addresses JavaScript’s lack of type safety, JPlus fills in some of Java’s gaps. It allows you to keep almost all of your existing Java code while adding features like null-safety and automatic boilerplate generation, improving both safety and developer convenience.

[–] Pamasich@kbin.earth 2 points 3 days ago (1 children)

However, JPlus is not merely a “preprocessor.” It actually parses Java source like a compiler, performs null-safety checks and boilerplate code generation on the generated parse tree, and finally produces standard Java code. In that sense, JPlus should be considered a compiler. The only difference is that its output is Java code

A preprocessor is basically a compiler which produces input for another compiler. Yes, it's a compiler. The difference is that it produces source files, not bytecode.

From Wikipedia:

In computer science, a preprocessor (or precompiler)[1] is a program that processes its input data to produce output that is used as input in another program. [...], which is often used by some subsequent programs like compilers.

The emphasis is mine.

Both Typescript and SASS are examples of preprocessors.

[–] justicecoder@programming.dev 1 points 3 days ago (2 children)

From Wikipedia:

In computer science, a preprocessor (or precompiler)[1] is a program that processes its input data to produce output that is used as input in another program. […], which is often used by some subsequent programs like compilers.

The emphasis is mine.

Both Typescript and SASS are examples of preprocessors.

By that logic, the C compiler would also be a preprocessor since it converts C code into assembly. Simply calling something a preprocessor just because its output is source code is not logically correct. The same applies to JPlus: the fact that it ultimately produces Java source code does not make it a preprocessor. Internally, it performs compiler-level processes such as AST generation, null-safety checks, and boilerplate code generation, so it should be regarded as a proper compiler.

[–] SavinDWhales@lemmy.world 2 points 1 day ago (1 children)

Wouldn't JPlus be a Transpiler, just like Typescript is?

[–] justicecoder@programming.dev 1 points 1 day ago

t’s true that JPlus holds a similar position to TypeScript. However, it is a programming language. Here’s a definition quoted from the main page of the TypeScript website -> “TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.”

Similarly,

JPlus is a Java superset programming language — fully compatible with Java, offering modern language features like null safety, boilerplate code generation, and other enhancements to reduce developer burden and maximize productivity.

[–] AbelianGrape@beehaw.org 2 points 2 days ago (1 children)

The C Preprocessor also does all of those things. That's expected of a preprocessor. If you say "you can write java code with a bit of extra sugar and JPlus turns it back into 'regular' java," then that's a preprocessor.

[–] justicecoder@programming.dev 1 points 2 days ago

The C Preprocessor also does all of those things. That’s expected of a preprocessor. If you say “you can write java code with a bit of extra sugar and JPlus turns it back into ‘regular’ java,” then that’s a preprocessor.

A simple preprocessor only performs code transformation and cannot analyze the meaning of the code or ensure type safety. However, JPlus goes beyond mere transformation by providing static analysis capabilities, such as generating a parse tree and checking nullability. It also includes functionality to automatically generate necessary Java code through the apply syntax. As a result, the combination of performing nullability static analysis and generating code via apply cannot be expressed or handled using any existing Java syntax alone.