3 ms·
> Php perl and python have a better dependency story none of those have a better dependency manager than java's maven. The fact that the project you had to wor
by chii 3y ago
> Php perl and python have a better dependency story
none of those have a better dependency manager than java's maven. The fact that the project you had to work on didn't use maven isn't evidence that java's tooling is bad!
of all the current industry wide languages, java is the one with the best tooling, including IDEs, profiling and tracing, deployment options, and debugging and logging etc.
- catach 3y ago> The fact that the project you had to work on didn't use maven isn't evidence that java's tooling is bad! It can be simultaneously true that some Java tooling is excellent and some of it is subpar. This is a problem when both kinds have been historically popular.
- clem 3y agoWho can forget Jelly? https://commons.apache.org/proper/commons-jelly/ https://commons.apache.org/proper/commons-jelly/
- jillesvangurp 3y ago> The fact that the project you had to work on didn't use maven isn't evidence that java's tooling is bad! Indeed, that's amateur hour. Says more about the developers that checked in that code than about the language or tools. I have a love hate relation ship with maven and gradle. They are convoluted and over engineered. But they do work reliably once you get over that. Python dependencies are messy. That mostly relates to the fact that a lot of python needs native stuff which is just not that portable. This is why things like conda exist; so people can use native dependencies that otherwise would be hard to install on platforms like windows. There was a nice article on this on HN a few weeks ago I think. There seems to be no standard way to install stuff for python but about four or five competing ways to do this. With pip3 being the miserable baseline that the other ones are trying to improve on. I've tried several of those in the last year. Php actually has a decent dependency manager these days. I'm not necessarily a fan of the language but the php community has done a decent job modernizing their tools and language over the years. Things like Wordpress make it look worse than it really is. Java and Jvm tooling is indeed awesome. Best in class tooling has been a decades long tradition with the language. And of course Jetbrains is a big part of that. But Eclipse and IBM actually laid the groundwork for that when they bootstrapped out of the Smalltalk community in the nineties. Around that time other time other IDE builders of note were also providing tools for Java. Most of those are long forgotten by now. But the smalltalk refactoring browser was where it all started in IBM. And a lot of those people ended up working on enterprise Java. Eclipse as a tool is a direct descendent from that stuff (via IBM's Visual Age, which came out of their smalltalk tools). It was the first proper Java IDE with lots of refactoring options. Jetbrains followed with intellij. These days, there are many things you can do inside intellij with Java and Kotlin that few IDEs for others come close to being capable of. Even renames (of any symbols) are science fiction in some IDEs. And that was a standard feature in the very first version of eclipse. Stuff like this requires decent tools that work on abstract syntax trees. That tends to be hard for dynamically typed languages. But languages like Go, Rust and a few other modern languages don't have that excuse. And yet none of those have anything better to offer than what Jetbrains provides for those languages. Which while nice just isn't the full feature set that Java or Kotlin developers would expect. Good tools are hard.
- citrin_ru 3y agoI’m not a java developer and don’t know maven deep but once I’ve tried to perform a simple task and abandoned it after a couple hours of googling and experimenting: I’ve tried to remove from pom.xml dependencies which are listed there but not used in the source code and it was surprisingly hard to do. In Go it is as easy as running goimports and go mod tidy and one doesn’t have to be a Go expert to use them.
- cesarb 3y ago> I’ve tried to remove from pom.xml dependencies which are listed there but not used in the source code and it was surprisingly hard to do. You probably already know this, but since Java has dynamic loading of code, even if the dependency is not used in the source code, it does not mean the dependency will not be used when running the code. Either through direct use of reflection ("Class.forName()"), or a drop-in file used through ServiceLoader, or even a magic resource file which makes the code go through a different path when present. Carelessly removing a dependency might make your application break, possibly only when the specific functionality which dynamically needs the removed dependency is called. So yeah, you kind of have to be an expert on all the frameworks your application uses before you can start trying to remove unused dependencies in Java, and a tool cannot help you much.