On Tuesday, 26 August 2014 at 09:45:15 UTC, Russel Winder via Digitalmars-d wrote:
On Tue, 2014-08-26 at 08:46 +0000, Chris via Digitalmars-d wrote:
[…]
The problem was that Java didn't behave as expected on Windows. Things that worked fine on Linux and OS X didn't work on Windows (even simple things like deleting files). User reported all sorts of problems, one of them being that the Java Access Bridge didn't work. Why, nobody knows. The lack of a proper sound API / library. Then there was the versioning hell with JRE/JVM and having to tell users what version they had to download (the non tech savvy crowd). I know that MS doesn't make it easy for Java either. Well, I could have sorted the problems out with Java web start, SWT and all that kind of stuff. Instead, I learned D which I can compile and run on each platform without a problem.

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
not to say there are not portability and dependency problems, there are,
but it is good to blame the right reason at the right time.

See answer above.

I am surprised by the platform dependency problem you cite. Yes there are platform issues with the Java Platform but I had thought all the
ones you are alluding to were fixed by Java 1.4.2.

It was long after 1.4.2.

Media APIs for Java have always been a bit of a pain. With any luck JavaFX, and the far more important GroovyFX, will cause a resurgence of interest in media APIs on the Java Platform, and this time get them
right.

"With some luck". I can't wait that long. That's exactly what I mean: you have to wait ages and hope and pray that you can write a useful program someday. No thanks. With D I grabbed existing C/C++ audio frameworks and moved on to more important issues.

In my opinion, if a technology like Java needs so many crutches to make it work on different platforms, then it's useless for cross-platform development. Also, once you need interaction with the system or other (native) applications, then it becomes frustrating pretty soon. D solved all these problems for me and more, in fact it helped me to design a better product, because it opened doors for me as regards both programming patterns and interaction with the system and various libraries. That there are other languages with which I could have achieved similar things, I do not doubt. But I do doubt that it would have been so easy, and the fact that new languages that aim for what D already stands for are still being invented (cf. Nimrod) shows that existing mainstream technologies like Java, C++, C# don't meet programmers' demands yet.

I am pleased D is working for you when you feel Java didn't at that time. Things move on though: what may have been true about Java then may not be now. Decisions must always be being reassessed after a while.

Why on earth should I reassess this decision now? D works for _me_ (maybe not for everybody). Why should I rewrite the whole thing in Java or use Java for new projects, when I know there are still issues that are absolute deal breakers for me (like the sound API)? Java is just not a good language to write cross-platform programs that have to be integrated into the system or (native) 3rd party applications. So why bother?

All
languages have some platform dependent issues unless they are only working on only a single platform. Java, Python, Ruby, etc. generally depend on the virtual machine and support libraries to get things right, but allowing platform dependent application code as well. C, C++, etc. put essentially all of the portability issues into the programmers hands
and hence lots of build sophistication or #if.

At least you have control over it.

Then there is the dynamic link library problem creating a mass of pain.

D and Go ran away from this by having statically linked code only, at
the expense of 2–10MB executables!

I have no problem with that, still better than delivering a 40 MB Java package for an otherwise tiny plug-in. The DLL I have in D is 855.6 kB, the whole package with libs and various resource files is ~4.2 MB download size as zip and ~8 MB when installed.

With shared libraries becoming an issue in D again, that set of
dependency and platform problems will raise their heads.

Reply via email to