On Tuesday, 26 August 2014 at 22:07:49 UTC, Jeremy Powers via Digitalmars-d wrote:

If your users are having to install things then the problem is your
deployment mechanism not the JVM dependency hell system. Java
deployments are actually really quite easy. Either you package a total system with all dependencies and provide entry scripts, or you use Maven
Central (or increasingly BinTray) for accessing dependencies.


If I need deployment mechanisms like the ones above, then there's something wrong with the language. All these crutches and patches. To set up and test a deployment mechanism takes as long as writing the program. No
thank you.



This is what you get with shared libraries. If you don't want to deal with dependencies, either A) ship a static-linked binary or B) cross your
fingers and pray.

Statically linked binaries are still the best option, if you want to make sure things will work for the user (and you don't have time for customer service). It's also a good strategy for cross-platform development, this or you have to use an approach similar to Textadept that ships everything in one package. I usually ship all the additional dlls / libs, if there are any.

Relying on system wide dynamic linking is more for cases when you develop for one particular environment or when you're 90% sure that a certain library exists on most systems you develop for. The C standard library comes to mind, but even there are differences between Linux and Windows. And don't forget that, unlike Linux users, people who use Windows are usually not tech savvy in the sense that they can deal with downloading additional libraries.

It all depends on the products you're developing. But for our stuff it's better to go static or ship everything.

I've found the java ecosystem to be quite well fleshed out and mature in handling lib/jar dependencies, such that it was an unpleasant shock dealing with C++ after years away. Using maven, for instance, is a quick and easy way to abstract the problems away (though it is better suited for builds
than deployments).


As D gets more support for dynamic libraries, it would be good to take lessons from how Java and others have dealt with dependency management.

Yes, only better. :-)

Reply via email to