Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reference type of JVM

Tags:

java

jvm

In some Java literature, The statement

The reference type of the Java virtual machine is cleverly named reference

is widely popular. However, authors tend not to explain more why such statement is valid. Another thing that would make me understand this more is

What does the reference type of the JVM means ? Does the JVM represent itself in the heap ?

Would appreciate a lot an explanation on this statement.

Thank you,

Ashmawy

like image 669
3ashmawy Avatar asked Dec 10 '22 11:12

3ashmawy


2 Answers

The word you're looking for here is irony:

the use of words to convey a meaning that is the opposite of its literal meaning

The use of "clever" in that sentence is clearly ironic. "The reference type of the Java virtual machine is given the clearly really stupidly obvious name 'reference'" is another way to read that sentence.

like image 112
JUST MY correct OPINION Avatar answered Dec 11 '22 23:12

JUST MY correct OPINION


I think the cleverly part relates to the fact that a reference type is typically called a pointer, which necessitates the reader to learn two terms. The JVM terminology simply uses the term reference for this.

There's also a historical context.

When Java was introduced, its biggest competitor was C++. C++'s main problem was that it was deemed to be too difficult. Java initially positioned itself as the easy alternative to C++. It had a syntax very close to C++, but all the difficult stuff (operator overloading, templates, multiple pass-by mechanisms) etc were removed from the language.

And now comes the catch...

Java was initially marketed as not having pointers. The rationale for saying this was that pointers were deemed the most difficult thing of C++, so if Java would not have them, it had to be a simpler language.

The clever part thus comes from simply inventing another term for 'pointer'. Call them reference and you can state Java does not have pointers (but references).

This has lead to many debates and caused a good amount of confusion, especially since C++ already had the term 'reference' and uses it for something else (though conceptually a little related). The debate usually centers around two camps where one of them claims Java indeed does not have pointers, since you can't do pointer arithmetic with them and they don't directly represent memory addresses, while the other camp states that you don't have to be able to do arithmetic with a pointer to call it a pointer.

Put differently, whether it was clever to use the term reference is still open for debate.

like image 24
Arjan Tijms Avatar answered Dec 12 '22 00:12

Arjan Tijms