Using D

Chris via Digitalmars-d digitalmars-d at puremagic.com
Fri Sep 5 07:42:04 PDT 2014


On Friday, 5 September 2014 at 14:18:46 UTC, Paulo  Pinto wrote:
> On Friday, 5 September 2014 at 13:42:56 UTC, Chris wrote:
>> On Friday, 5 September 2014 at 11:27:17 UTC, Bruno Medeiros 
>> wrote:
>>> On 04/09/2014 16:21, Chris wrote:
>>>> On Thursday, 4 September 2014 at 14:19:02 UTC, Bruno 
>>>> Medeiros wrote:
>>>>> On 26/08/2014 09:46, Chris 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.
>>>>>
>>>>> The promise of "Write once run everywhere" is still pretty 
>>>>> much
>>>>> accurate if you stick to core Java code and libraries. Of 
>>>>> course once
>>>>> you start using OS/implementation specific code you will 
>>>>> have to code
>>>>> more carefully, and are more likely to encounter 
>>>>> cross-platform
>>>>> problems. That's just the nature of things, you can't say 
>>>>> it's a
>>>>> failure of Java.
>>>>> It's like coding in D using lots of malloc/free in your 
>>>>> code, and then
>>>>> when your program breaks, you complain that "the D GC 
>>>>> doesn't work!".
>>>>> Of course the GC only is only guaranteed to work if you 
>>>>> stick to
>>>>> GC-managed memory.
>>>>
>>>> I can expect the Java Access Bridge to work, because Java 
>>>> offers it as a
>>>> built-in technology. If it does not work, it's a broken 
>>>> promise. Simple
>>>> as that.
>>>>
>>>
>>> Does Java Access Bridge really not work, or you just didn't 
>>> use it right? Or are you trying to use in for a purpose it's 
>>> aimed to be used? Unfortunately, I'm not familiar with JAB, 
>>> so I can't comment further on it..
>>
>> I used it with Swing. It was ignored by all the screen readers.
>>
>>>>> To be honest I smell a load of Java-biased *BS* here, 
>>>>> especially
>>>>> because of this sentence:
>>>>> "Instead, I learned D which I can compile and run on each 
>>>>> platform
>>>>> without a problem."
>>>>
>>>> Which is true. I could compile it on Linux, OS X and 
>>>> Windows. It was
>>>> almost trivial to write a DLL that third party software can 
>>>> use. Try
>>>> that with Java and tell me if it's trivially easy. I think 
>>>> what you
>>>> meant was _anti_-Java *BS*. I'm only writing about my 
>>>> experience with
>>>> the two languages. The one worked for me, the other didn't.
>>>>
>>>
>>> When you say DLL, do you mean a shared library in general, or 
>>> really an actual Windows DLL? I'm assuming it's the former, 
>>> otherwise that doesn't make sense. Well In Java you can 
>>> create them quite easily: jars. They are trivial to be used 
>>> by other Java programs! I don't see your point.
>>
>> I mean a DLL that can be loaded by say a Python program (as in 
>> my case) or any other software that wants to use my 
>> plug-in[1]. A jar can only be used by another Java program. 
>> Making a Java program accessible to 3rd party software via a 
>> DLL is not so simple, and the JVM has to be up and running all 
>> the time. Java is cross-platform as long as you stay within 
>> the safe and cosy Java bubble that floats on top of the JVM. 
>> But once you step outside of the JVM, gravity kicks in.
>>
>> Don't get me wrong. I like the concept of a VM. Only Java has 
>> been screwed up over the years by bad and wrong decisions, 
>> partly due to ideology and partly due to strategic / marketing 
>> decisions. It's a pity really. It started out as a very 
>> promising language but got caught under the wheels of 
>> corporate decisions and OOP evangelists.
>>
>
> You can write DLLs in Java, for example with 
> http://www.excelsiorjet.com/.

I know, I know, but in D it comes for free. This would have 
broken the bank.

> The fact that the Java reference implementation is a VM, 
> doesn't tie the language to a VM.
>
> There are quite a few commercial compilers and JVMs with AOT 
> support to choose from.
>
> Oracle is finally thinking about adding a AOT compilation mode 
> to the standard toolchain in the Java 9+ release.
>
> http://www.oracle.com/technetwork/java/jvmls2014goetzrose-2265201.pdf

Finally, I've been waiting for this since forever. I always 
wondered why they didn't do it. Then again it was all about the 
"write once ..." ideology and they thought AOT would undermine 
this (which is not true). Why shouldn't programmers be able to 
make the decision (VM / AOT where it makes sense)?

> As for OOP evangelists, had Java not happened, probably your 
> rant would be now be about Smalltalk and Eiffel. The two OO 
> languages getting an enterprise foothold at the time Sun 
> started pushing Java.
>
> --
> Paulo

It's not a rant. I'm happier in the D world than in the Java 
world, that's all. It's only when you step outside of the Java 
world that you realize who restricted and restrictive it is. For 
what it's worth, Java is a safe enough technology for companies. 
Middle of the road type of thing.


More information about the Digitalmars-d mailing list