3 ms·
I mean, it's kind of farcical to complain about Java build systems and compare that to C, which has literally the worst build system/dependency management tooli
by seertaak 4y ago
I mean, it's kind of farcical to complain about Java build systems and compare that to C, which has literally the worst build system/dependency management tooling. Even with vcpkg and conan (which are infinitely better than what existed before), building projects with 4-5 dependencies (abseil, boost, folly, and range-v3, say) requires understanding why builds break complaining about iterator traits under C++20 on Clang 13. It's insane. How can Java possibly be worse than that? It may not be as nice as rust or python (even python can be pretty insane for dependency management, actually), but with Maven I could add 3/4 lines to my project, and in my IDE the dependency would "just work" and I could even navigate to the source code of the dependency.
And it's not like this is a slow language, Java is like 80-90% as fast as C if you know what you're doing, and for most use-cases, and isn't brain-dead in its handling of threads.
I'm a C++/Python developer, by the way, although I've had day jobs writing Java too. I honestly think this is way off base; it's a great language which has constantly evolved, and the JVM is a fantastic piece of technology. Rich Hickey was super smart in targeting the JVM, it was a great decision, and to my mind OP hasn't a clue of what he's talking about.
- oriolid 4y agoFor C and C++ Meson is quite nice.
- swlkr 4y agoI will say as far my limited understanding of the JVM goes, it seems like container tech can take care of any system dependencies that you might need for a complex c++ build. It also seems that the JVMs original purpose of running the same code across operating systems/architectures has also been superseded by containers, better cross compilation (llvm) and possibly wasm as well. Maybe at some point in the future, the JVM will mostly be relegated to legacy systems and most new software (assuming AI isn’t writing all future software) will target wasm or require some container runtime.
- Tainnor 4y agoYou can't complain about the complexities of the JVM and then propose containers, which are incredibly complex themselves, as a solution. I mean sure, most modern JVM apps deploy to containers, but developing in container images is quite another thing and requires you to understand and debug a lot of issues (e.g. mounting, caching, networking) that you'd like not to care about (especially if you're not particularly an infrastructure/ops person).
- swlkr 4y agoFair enough. This might also come down to editors and things that I didn’t cover in the post too. There’s probably a happy path for clojure/jvm via an IDE that I didn’t try (I use neovim) or something else I might have missed in my clojure years.
- pjmlp 4y agoThat isn't an IDE, this is, https://cursive-ide.com/ https://cursive-ide.com/
- mjburgess 4y agoNo one's comparing java and C. The phrase "C-derived" here includes, eg., python/php/ruby/javascript/etc. ie., all those languages whose targeted VM is extensible with C. The idea is that there's a "cluster of C-based ecosystems" of languages whose open-source philosophy, programming culture, etc. "is just fun". In contrast with the JVM ecosystem which, I think, just isnt.
- vips7L 4y agoSo you’re comparing the maven ecosystem to that of the maddening dependency graph of node?! The place where the _maintainer_ of your dependency may or may not introduce a zero day just to make a political statement? Or that of Python where the package managers _globally_ install dependencies and you need virtual environment shenanigans to not break everything???
- Tainnor 4y agoFWIW, there are Python package managers that don't install dependencies globally, such as Poetry (and before that Pipenv, although I really wouldn't recommend it). It's a shame most people (and projects) still use requirements.txt, though.