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..
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.
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.
--
Bruno Medeiros
https://twitter.com/brunodomedeiros