Using D

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


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.

[1] Have a look at this. It was really just as simple:

http://wiki.dlang.org/Win32_DLLs_in_D

>>> Actually virtually all other languages, including D, are just 
>>> as bad
>>> as Java (if not worse) in the aspects mentioned above. For 
>>> example, if
>>> you write code which heavily interacts with the filesystem, 
>>> you are
>>> bound to encounter platform/OS-specific problems no matter 
>>> what
>>> language. I'd bet money those "even simple things like 
>>> deleting
>>> files", you'd have in D as well. At least in Java the APIs 
>>> they are
>>> usually careful to specify which aspects of behavior are
>>> implementation-specific.
>>
>> Well, my statement refered to the fact that Java f**ked up big 
>> time
>> there, which clearly breaks the promise "write once, run 
>> everywhere",
>> especially because dealing with files is a feature one would 
>> expect to
>> be part and parcel of a programming language. Deleting files 
>> should not
>> give you a headache. Basically what you're saying is "Java is
>> cross-platform but it's not, but hey, other languages are just 
>> as bad!".
>> Well, then they should stop using the word "cross-platform" 
>> when
>> advertising their language.
>>
>
> If the core of the language was "working with with filesystem", 
> then yeah, they should not advertise it as cross-platform. But 
> it's not the core of language (even if it's part of the 
> standard library), it's just a minor library component, one 
> amongst many (the vast majority of it being fully 
> cross-platform).
>
>>> In other cases, such as the sound library or accessibility 
>>> library,
>>> most other cross-platform language don't even have those!, so 
>>> how can
>>> you be saying that D runs better on each platform that Java?..
>>> (Does a non-existent library run perfectly on every 
>>> conceivable
>>> platform? one could say yes...)
>>
>> D interfaces to existing audio / sound libraries in C 
>> (libsndfile,
>> portaudio). All you have to do is to include those libs and 
>> call the
>> functions you need. Doing this with Java is a bit more 
>> complicated
>> (you'll probably need tools).
>>
>> You are welcome to report on any serious issues you've 
>> encountered when
>> porting D programs to various platforms. Maybe it can be fixed 
>> in the
>> core of the language and it would help to make D even more 
>> portable. A
>> lot of cross-platform issues can be dealt with by including
>> "version(Windows/Posix ...)" in your code.



More information about the Digitalmars-d mailing list