Will Java go native?
PauloPinto
pjmlp at progtools.org
Thu Sep 19 04:05:26 PDT 2013
On Thursday, 19 September 2013 at 10:06:54 UTC, deadalnix wrote:
> On Thursday, 19 September 2013 at 08:26:03 UTC, Russel Winder
> wrote:
>> And Windows native code applications don't ship with a version
>> of all
>> the Windows DLLs for every application?
>>
>> Java is no longer under-performant compared to C, C++,
>> Fortran, D, Go,
>> Rust. Check the benchmarks.
>>
>
> Benchmarks in Java are often misleading. The language promote a
> style with a lot of indirections, in the code and in datas.
> Once your application reach a certain size, cache effect makes
> it slowdown dramatically. But most benchmark applications
> aren't big enough to exhibit that behavior.
>
> That being said, if you code in D like in java, you'll have the
> same trouble (in fact, it is likely to be worse in D). Compile
> time polymorphism and value types are here a major benefit of
> C/C++/C#/D (pick whatever you like).
>
> Obviously, you'll find some pathologic cases where java is
> faster (usually mono-threaded memory allocation intensive
> benchmark exhibit that, as the JVM is able to add concurrency
> to the equation via the GC). But that doesn't represent the
> typical way most a program works (and when they do, you want to
> fix that as this is a performance killer, in every language,
> even if java suffers less from it).
>
> The main problem of java isn't the VM, it is its addiction to
> indirections.
>
>>> *Java's sluggish performance was what made me look for
>>> alternatives in the first place, and I found D.
>>
>> I accept this as true as it is a statement by you about your
>> decision
>> making, but Java 8 is not Java 1. Early desktop Java was pure
>> interpretation, and hence slow. Modern Java, via the JIT,
>> generally
>> executes native code. With Java 7 and method handles and
>> invokedynamic,
>> the world changed even more and now computationally intensive
>> codes can
>> run basically as fast using Java as using C, C++, Fortran, D,
>> Rust, Go.
>> (After initial "warm up" of the JIT.)
>>
>
> Yes, the warm up is usually a severe drawback for user
> applications. Server app do not suffer from it that much. I
> guess that is why java is so much used server side, but not
> that much to create GUI apps.
Java might eventually gain value types. The IBM J9 VM already has
them.
http://duimovich.blogspot.ca/2012/11/packed-objects-in-java.html
http://www.slideshare.net/mmitran/ibm-java-packed-objects-mmit-20121120
--
Paulo
More information about the Digitalmars-d
mailing list