
Why and How Java Developers Break APIs - echo-4
https://arxiv.org/abs/1801.05198
======
bunderbunder
As a relative newcomer, the most frustrating thing for me about settling into
the Java ecosystem is the frequent breaking changes and inevitable dependency
conflicts that result.

Breaking changes are sometimes a necessary evil. But they don't belong on
minor releases. There should really be a stronger community standard that
package maintainers sit on their hands and simply deprecate calls they want to
get rid of until they can sweep them up in the next major release. It's also
not cute to abuse semantic versioning by incrementing the major version number
several times a year. (I'm looking at you, Guava.) That sort of stuff might be
fine if a packages were relatively isolated affairs, but then the rest of the
ecosystem doesn't really do anyone any favors by pulling in deep hierarchies
of transitive dependencies that make it very difficult to limit one's exposure
to the bad players. And _then_ the build tools get to pile on and (as Maven
does, at least) default to unpredictable dependency conflict resolution rules
that obfuscate any latent problems.

I suppose it's no wonder that Java's the only place I've ever seen something
like package relocation. But, at the same time, that practice has got to be
the most distressing code smell I've encountered in my career to date.

Hopefully Java 9 makes some of this better (we're not ready to upgrade to it,
yet), but I can't shake the feeling that this stuff really shouldn't have to
have been such a hassle in the first place.

~~~
kuschku
> As a relative newcomer, the most frustrating thing for me about settling
> into the Java ecosystem is the frequent breaking changes and inevitable
> dependency conflicts that result.

After working with many languages, it feels like Java is the most stable
ecosystem yet.

The JS ecosystem breaks APIs almost daily, similar in ruby (just look at
factorygirl), and other such languages.

Maybe it’s better in Haskell or C, though.

~~~
fiddlerwoaroof
I have successfully compiled and used 30 year old Common Lisp code bases with
minimal or no changes.

~~~
taeric
If there is any higher praise of that ecosystem, I haven't seen it.

