What is Dalvik?
I never knew that Dalvik was an important village in Iceland and was not known until Dan bornstein named the process virtual machine that he wrote for Android as Dalvik.
It is unique to the Android system and is mainly used to run Java applications that have been converted to. Dex (Dalvik executable) format on the Android system.
It is the basis for running Java on Android. The problem is that there is a standard Java Virtual Machine JVM. Why should we create a new Dalvik?
The answer is concise to better suit embedded systems with limited resources.
Maybe Google has made a lot of efforts to make Dalvik more efficient than JVM on Android, but in the end the industry is still not satisfied, that Dalvik slowed down the android speed.
Google made another attempt in android4.4, that is, the technology preview of art (Android runtime. Of course, I also switched (in settings -- developer options -- select the runtime environment ),
The result is that the original application will be re-compiled (Code pre-read and compiled), which is greatly improved and the speed is greatly improved. There is no big difference with the naked eye, however, the official data shows that the increase is still great.
However, some applications do not support art. In android5.0, Google took a big knife and finally cut down Dalvik and replaced it completely with art.
Dalvik's verbal war
A year ago, I spent my leisure time playing Weibo.
One day at noon, I went back to Weibo with Saturday and Zhou Quan's lunch and saw the message "csdn mobile:
[Bridge from Java to the objc language: New version of Google j2objc 0.7] Google recently released the latest version of the open-source command line tool j2objc: j2objc 0.7. J2objc is fully open-source. Through j2objc, you only need to use objective-C to write some UI code for iOS applications. Other functions can be implemented in Java.
I'm not very familiar with this kind of conversion. I glanced at the comment. I think the comment of an ID called office software is open to question. He said this:
"Android is not Java, it is nothing more than Java syntax, and its running level is basically irrelevant to Java ."
I think it is a bit awkward. Maybe the running level is basically unrelated to the Linux kernel of Java? However, I understand that the runtime layer includes application running and fwk, so it cannot escape from Java. I replied:
"Isn't the Java syntax used alone? The upper-layer applications are Java applications. The Dalvik virtual machines in the android runtime of the second layer are all Java instances. See the Android system architecture. In addition, Let's see why Google provides ndk ."
I did not expect that I simply described my understanding, but made the accusation of "office software:
"As you said, I used J # To package a bunch of Java APIs. Is it Java? Please do not be so unprofessional ."
With a calm and discussion attitude, I followed him and said:
"Brother, we can discuss some questions calmly. J # is Microsoft's use of Java syntax to attract original Java developers. As you said, this is only Java syntax, but J # is used. net is still a virtual machine."
The arrogance of the other party is disgusting:
"Unfortunately, for some students who like to confuse nouns, I only give three minutes for the interview"
I keep pressing the fire and continue back:
"Which of my terms is confusing? Didn't you look at people's context before talking? I still don't understand what others are saying? An interviewer like you usually only gives one minute. I have set my old qualifications. No one has ever been here... Haha"
"Maybe you haven't guessed it wrong. You always think that I am talking about" JVM = Dalvik VM ", but I mainly express that Dalvik VM is a Java virtual machine. In any case, my expression should be true. Welcome to graph grass ."
As a result, the thread was transferred to JVM and Dalvik, and the other party also returned three questions:
"Dalvik VM does not comply with JVM specifications at all, but you say this is a Java virtual machine? As you said, J # runs on the CLR, And the CLR is also a Java virtual machine ?"
"What you mainly express is," Dalvik VM is a Java Virtual Machine ", which of the following is a wonderful Java virtual machine ,"
"Jrockit is a Java virtual machine, j9 is a Java virtual machine, zingvm is a Java virtual machine, and hotspot is a Java Virtual Machine. Why is this definition? Because they follow the Java Virtual Machine specification, is Dalvik VM a Java Virtual Machine? It is estimated that only the author of the book you read thinks so"
Later, the debate began on the proposition that "is Dalvik a Java Virtual Machine. It reminds me of the white horse and non-Horse Theory. "Seeking horses and black horses can both be done. Seeking white horses and black horses cannot be done ".
However, some of his statements are worthy of recognition, such:
"The harmony virtual machine is a virtual machine that fully complies with the JVM standard. Android uses the harmony class library, but the android VM is completely different from the JVM standard ."
Qi Tian also saw this quarrel and said to me, the other party is an evil man. Does it mean to argue with him?
Refer:
1. Description of Dalvik in Wikipedia:
Dalvik is the Process Virtual Machine (VM) in Google's Android operating system, which, specifically, executes applications written for Android.
Work status of it idiots 22-a verbal war triggered by the Dalvik Virtual Machine