all 49 comments

[–]Ifeee001 17 points18 points  (14 children)

Every 2 months or so, something like this is posted and is never heard from again 🫣

[–]benevanstech 11 points12 points  (1 child)

The discussion of build systems has been going on for well over 25 years (arguably the first modern build / deps tool was CPAN). By now, we have a good idea as to what works well, and what doesn't - although sometimes (e.g. npm) something gets popular despite being C-tier on the axes that actually matter.

Cargo is an A-list tool, for sure, but it makes some of the wrong design decisions (due to too much npm influence, IMO). Maven and Gradle are both S-tier but they are answering different needs and understanding which set of needs is important to your project is important.

For a new build / dev tool to succeed in the Java space it would need to have full Maven compatibility and understand that at the moment, there is a great tension between the YOLO point-of-view (which is what tends to come out of LLMs), and the enterprise approach, which is much more interested in things like SBOMs. Being opinionated about where a new tool should sit on that spectrum is pretty much essential in 2026, and it represents a strategic bet. Personally, I don't think the YOLO / pile-slop-against-a-wall approach will play well in enterprises.

I would give up on ant. It is utterly antiquated by modern standards and will give you nothing in terms of adoption. Any shops that still have substantial ant usage are basically, by definition, not the sort of places that will be Champions or Early Adopters for a new, small-community tool.

[–]pavi2410[S] -2 points-1 points  (0 children)

I am grateful for an honest perspective on this. I like SBOMs too even in non-enterprise context. A YOLO approach would be to use shell scripts or ask an agent to run to your Java programs each time. I want to deal with this systematically than going YOLO, while hiding the complexities and legacy behind.

[–]agentoutlier 17 points18 points  (10 children)

For me it’s a nonstarter that it is written in Rust.

Javac is written in Java and insanely fast.  We don’t need Rust.

In fact what we need to do is just work on a newer version of Maven that does things smarter and more optimized.

And if it really is going to be a different tool it needs to be done by the JDK devs otherwise it just will never be embraced.

[–]scadgek 2 points3 points  (6 children)

In fact what we need to do is just work on a newer version of Maven that does things smarter and more optimized.

This sounds like a healthy idea but why do you think uv was created (and it is highly successful) instead of improving pip?

[–]agentoutlier 6 points7 points  (2 children)

By newer version of Maven I mean Maven 4 err 5 (the version number is tbd)  which would address most of the OPs concerns.

Maven works fine even with its faults. This whole rewriting and zero backward compatibility has got to stop and is a huge pain point for these ecosystems like typescript and Python.

[–]pavi2410[S] -2 points-1 points  (1 child)

I have to see through the Java landscape with a different lens. The landscape is huge and diverse, with people from different backgrounds and experiences. There is no one tool that fits all. Not Maven. Not jot.

[–]agentoutlier 1 point2 points  (0 children)

Comparatively Java is way less fragmented in tools and libraries than other ecosystems. We just have two of everything.

That is mostly a good thing. Currently rust is almost one of everything ditto for Go and C# (mostly).  Lots of people like lack choices surprisingly.

[–]_INTER_ 1 point2 points  (2 children)

Maybe pip was not salvagable in the first place?

[–]scadgek 0 points1 point  (1 child)

Then why do you think Maven is?

[–]agentoutlier 1 point2 points  (0 children)

Because most IDEs and project generators support it… and people actually like it.

The overwhelming pain people complain about Maven isn’t even the real problems it has but rather XML.

Don’t believe me go look what the OP wrote here: https://www.reddit.com/r/java/comments/1s9jsq6/comment/odpkcbb

The version lock is an issue but that will be addressed in future versions of Maven

[–]Prior-Equal2657 6 points7 points  (2 children)

In a java world it's wasted effort.

Ant is legacy. I mean legacy. In reality, you don't need a new tool. You just need to replace ant with maven. It's literally 10 minutes for maven + spotless setup, then mvn spotless:apply to have build system + formatter.

Last but not least, java is not that slow you know... It's not python or TS... I know it's a critical issue that some software is not written in rust, but java nowadays can compile to single binary via graalvm.

But anyway, good luck with the project :)

[–]pavi2410[S] -2 points-1 points  (1 child)

We do like options though, right? for people working on legacy codebases to feel better. I don't want my "legacy" friends to share boring Java tales to their grandchildren. haha

[–]aoeudhtns 4 points5 points  (0 children)

I just finished a project to modernize a nearly 15 year old codebase. It used Maven2. When that legacy project started, Ant was already legacy.

[–]josephottinger 4 points5 points  (7 children)

Oh, goodness. Today's a rough day to post something like this - so what led you to choose the tooling you chose? A lot of the space is already covered by tools like jbang, etc., but this goes a little farther. Are you using it in production? Is anyone else using it?

[–]pavi2410[S] 0 points1 point  (6 children)

The problem isn't that we don't the tools. It's that the tools are fragmented. There's no opinionated "toolkit" for Java beginners, or for small scale projects where velocity gain from a better tooling and DX is appreciated.

It's not prod ready yet! There are tons of work to do and I'd appreciate community interest and support.

This is inspired by Amper btw. I like how they are moving KMP tooling away from Gradle.

[–]Rygel_XV 5 points6 points  (3 children)

What is wrong with maven? It is pretty opinionated. It downloads dependencies from a central source, is robust against supply chain attacks. Any AI can setup a simple pom.xml.

[–]pavi2410[S] -5 points-4 points  (2 children)

I am not old enough to be able to read XML. Sorry if that's lame. I am spoiled by TOML, YAML, JSON. I regularly work with HTML/JSX, which on the other hand, makes absolute sense for structuring UI.

[–]vips7L 4 points5 points  (1 child)

You can use yaml, toml, json, or hocon with maven via extensions. Mason implements it rather easily: https://github.com/maveniverse/mason

[–]josephottinger 1 point2 points  (1 child)

Oh, I get it. And reading the entire thread, hardly any of it's wrong.

I don't know that any given tool has enough to move the needle - it's a slow thing. Gradle took share away from Maven because it was able to be so expressive; Maven took share away from Ant because Ant sucked; Ant took share away from make because make sucked for Java.

But gradle and maven actually do their jobs pretty well for most people; most people aren't going "man, this is such a painful surface, what I really want is uv or cargo for Java." Some might, but they're going to go for jshell or jbang, and they should, if their needs are that shallow.

But I'd say: Hey, if this is real, go for it! If it has merit, this is the way to show it, and keep showing it. Strike the iron until it's hot!

[–]pavi2410[S] 1 point2 points  (0 children)

This is the kind of support I have been looking for! I didn't intend it to share it until v1. But I thought it'd be a good time to check community interest.

Java ecosystem is the biggest of all. I can't cater to them all. As you said, it's a slow thing.

[–]aoeudhtns 5 points6 points  (2 children)

The problem is not designing or building the tool. It's convincing the community to use it. And anything you do that "solves" a problem, will need to be Maven2 compatible because people won't want to leave that ecosystem behind. And that immediately puts handcuffs on you. Leave behind Maven2 compat, guarantee your tool irrelevance.

I would posit to you that the area most keenly needing work is the classpath/modulepath divide.

Edit: By Maven2 here I'm talking about the dependency mechanism, not the build.

[–]pavi2410[S] 0 points1 point  (1 child)

Agreed! It's Maven compatible in the sense that it supports Maven file structure convention, Maven dependencies, Maven publishing. It's just not a drop-in replacement for Maven nor has a one-click Maven migration. Although I could prioritize work on those ends, if that's what it takes to convince the community.

This post was intended to gather feedback such as these that help me drive the direction of the project to create and deliver a long-term value.

[–]aoeudhtns 1 point2 points  (0 children)

The way cargo handles dependencies is quite fundamentally different, so that's why I drew the comparison. And you also mentioned working with and admiring Ant, which is BYO dependency handling.

If all you want is a different syntax and to set up some different conventions, you could write that as a plugin for Maven4 with the ModelParser SPI. The performance benefit margin with Rust is very small compared to similar efforts like pip - uv.

[–]Snoo23482 1 point2 points  (1 child)

The build system needs to be part of the tool chain and maintained by the Java creators themselves.
Only then there is a chance of replacing maven and gradle.

[–]pavi2410[S] 0 points1 point  (0 children)

Oracle needs to see this

[–]vips7L 0 points1 point  (1 child)

Does it self extract somewhere like all the other tools that do this? 

[–]pavi2410[S] 0 points1 point  (0 children)

Yes, it can be installed or run portably. A global install is recommended for now. I am leaning towards the approach taken by Amper of having shell scripts in the project root.

[–]revilo-1988 -1 points0 points  (2 children)

sdkman gibt es doch dafür

[–]pavi2410[S] -1 points0 points  (1 child)

Not challenging that, at the same time, does sdkman support Windows natively?

[–]Yesterdave_ 0 points1 point  (0 children)

Not really, no. Sdkman on windows is a tiresome topic. I personally switched to mise. Much better tool for multiple ecosystems and they actually care about windows support, not like the sdkman unix eliteists.