Linked by fran on Sun 20th Feb 2011 19:00 UTC
Google "Over the last few months we have been hard at work getting Native Client ready to support the new Pepper plug-in interface. Native Client is an open source technology that allows you to build web applications that seamlessly and safely execute native compiled code inside the browser. Today, we've reached an important milestone in our efforts to make Native Client modules as portable and secure as JavaScript, by making available a first release of the revamped Native Client .[...]In the coming months we will be adding APIs for 3D graphics, local file storage, WebSockets, peer-to-peer networking, and more. We'll also be working on Dynamic Shared Objects (DSOs), a feature that will eventually allow us to provide Application Binary Interface (ABI) stability."
Thread beginning with comment 463810
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[7]: I still don't get it
by vodoomoth on Thu 24th Feb 2011 09:55 UTC in reply to "RE[6]: I still don't get it"
Member since:

"So you saying that Java is not-native code and it's not interpreted? Wow! What kind of logic is that? Having Java byte-code JIT'ed doesn't make it non-interpreted, otherwise it would be compiled which it isn't.
Unless a third option other than "compiled" or "interpreted" has been found just for Java, it is not different from any scripting, VM'ed, or compiled-to-intermediate-code language.

Yes. Please get your facts straight before going off on a rant. Java is *compiled* to Java byte code. It is a form of machine code that is run on a virtual machine. It is *not* interpreted.

I wrote:
Unless a third option other than "compiled" or "interpreted" has been found just for Java, it is not different from any scripting, VM'ed, or compiled-to-intermediate-code language.

which means I know the "facts". I know about Java, that's what I use in my professional life. But in a previous life, I was a researcher and academic, so I also happen to know a few things about theory and my judgment is not clouded by a common abuse of language.

If code, whether text or binary, is not machine code, it has to be converted to native machine code before being executed by the CPU. "Interpretation" is the name of that conversion operation when it happens at run-time, which is exactly what the Java VM does and is for. The input format for that operation, whether plain text or binary, is irrelevant: it still is interpretation. Java is interpreted and the "fact" that javac is "the Java compiler" is also irrelevant.

True, strict, compilation is converting anything, text or binary, into native machine code prior to runtime. Any other operation is an interpretation. In other words, compilation is a specific kind of interpretation where the target code is machine code. I can't even believe someone is arguing against that when obviously, Sun and now Oracle agree with me:

On the other side, if you so wished, you could "compile" Java to C++ or C to ASM. That's a text to text "compilation" that doesn't mean much except prove a concept. Which is also why nobody bothers to do it. However, to have it run on a CPU, you would need another compiler for the output C++ or ASM code that would then compile to native code. That's two "compilers" chained with only one doing a compilation.

I give up and leave you with your certitudes.

Reply Parent Score: 2

RE[8]: I still don't get it
by Moochman on Fri 25th Feb 2011 00:22 in reply to "RE[7]: I still don't get it"
Moochman Member since:


First off, let me apologize for my accusation that you don't know what you're talking about.

We are just arguing about terminology here. And according to common usage on just about every page that talks about Java, including Wikipedia and Oracle's own literature, Java is not "interpreted". The word "interpreted" is usually reserved to mean "translated from a high-level language into machine code at runtime". That's just common usage. You can argue that *technically* it is a kind of interpretation when you are converting bytecode to machine code, and you would be right, but IMHO by actually using the term "interpeted" in a casual context, you are just muddying up the definitions of these terms *as they are commonly used*.

It's just like when people talk about tomatoes being vegetables, and then some pedant comes and reminds them "technically, tomatoes are a fruit". Common usage does not always reflect technical truth. Except I'd say that even the *technical* definition of the word "interpreted" seems to be much less clear-cut than that of the word "vegetable", as the disparity between your usage and that of the Java literature illustrates.

Edited 2011-02-25 00:29 UTC

Reply Parent Score: 2