OT Java stuff [was Using D]

Chris via Digitalmars-d digitalmars-d at puremagic.com
Tue Aug 26 03:16:27 PDT 2014


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.


More information about the Digitalmars-d mailing list