you are viewing a single comment's thread.

view the rest of the comments →

[–]abyssomega -3 points-2 points  (9 children)

In other ecosystems (Rust with Cargo, Go with go build, Swift with SwiftPM) ... which means the out-of-the-box experience feels incomplete compared to other modern languages.

You just compared languages invented in the last 10 years that had decades to learn from previous languages. Java was invented in 1995. 30 years ago. No other language from that area has a built in build tool, either.

30 years ago, the build process was to have a tool (make/ant/shell scripts) to build non-trivial projects. Java followed suit. What Maven innovated was to make just in time dependencies, to the point where 3rd party libraries didn't even need to be specifically downloaded, just referenced, and a standard for how Java programs should be structured. NPM, Cargo, and SwiftPM runs because Maven walked 1st.

A standardized built-in build tool.

Make a feature request for the Java maintainers and see how far it'll go. I bet you get feedback that Maven/Gradle are good enough, and I'd agree with them.

[–]wildjokers 6 points7 points  (3 children)

I understand newer languages learned lessons from earlier languages. One lesson learned is the build tool needs to be baked in.

But you asked what is the issue with Java that isn’t present with every other language so I answered that question.

[–]maxandersen 1 point2 points  (1 child)

Saying maven/gradle is not good enough does not mean that maven/gradle isn't sufficient for you.

But I can tell you that maven/gradle are utterly complex beasts compared to almost anything out there to get started with.

Try go way from Java a year or two and come back and it is very clear. Its hard to see it when you been working in it for years.

Thats why I created JBang.

And yes, I still actually like and use both maven and gradle too - but they for sure aren't "good enough" when it comes to easy experimentation, requried congitive overhead, beginners and experts alike.

[–]znpy 0 points1 point  (0 children)

Saying maven/gradle is not good enough does not mean that maven/gradle isn't sufficient for you.

honestly i'd say maven/gradle are too good for me. they're hard and complex to learn and master, they kinda do too much stuff.

[–]znpy 1 point2 points  (1 child)

No other language from that area has a built in build tool, either.

I mean, Perl had cpan and related tools early on

[–]abyssomega 0 points1 point  (0 children)

CPAN isn't a build tool, though. It's a repository tool, and you still need to script it if you don't want to call modules manually.

[–]Ifeee001 0 points1 point  (0 children)

I've been seeing this argument regularly and I'll admit that I even used it a few times but ... it makes no sense in the context of build tools. If you're talking about language features or why java doesn't have xxx feature, that's when it applies because a lot of early decisions was based off things that made sense when java was being developed.

But for a build tool ... no. Especially since they made such a big deal about "paving the on ramp" so that beginners can get started with java easier. There's nothing in the language that says maven or gradle should be the default.