Difference between Byte Code and Machine Code

Byte code is an intermediate code between the source code and machine code. It is a low-level code that is the result of the compilation of a source code which is written in a high-level language. It is processed by a virtual machine like Java Virtual Machine (JVM).

Byte code is a non-runnable code after it is translated by an interpreter into machine code then it is understandable by the machine. It is compiled to run on JVM, any system having JVM can run it irrespective of their operating system. That’s why Java is platform-independent. Byte code is referred to as a Portable code.

Machine Code:

Machine code is a set of instructions that is directly machine-understandable and it is processed by the Central Processing Unit (CPU). Machine code is in binary (0’s and 1’s) format which is completely different from the byte code and source code. It is regarded as the most lowest-level representation of the source code. Machine code is obtained after compilation or interpretation. It is also called machine language.

The below figure illustrates the example of how Java source code is converted to Byte code and then to machine code :



Difference between Byte Code and Machine Code

Difference between Byte Code and Machine Code:

S.NO. 

Byte Code

 Machine Code

 01. Byte Code consisting of binary, hexadecimal, macro instructions like (new, add, swap, etc) and it is not directly understandable by the CPU. It is designed for efficient execution by software such as a virtual machine.intermediate-level  Machine code consisting of binary instructions that are directly understandable by the CPU.
 02.  Byte code is considered as the intermediate-level code.  Machine Code is considered as the low-level code.
 03.  Byte code is a non-runnable code generated after compilation of source code and it relies on an interpreter to get executed.  Machine code is a set of instructions in machine language or in binary format and it is directly executed by CPU.
 04.  Byte code is executed by the virtual machine then the Central Processing Unit.  Machine code is not executed by a virtual machine it is directly executed by CPU.
 05.   Byte code is less specific towards machine than the machine code.  Machine code is more specific towards machine than the byte code.
 06.  It is platform-independent as it is dependent on the virtual machine and the system having a virtual machine can be executed irrespective of the platform.   It is not platform independent because the object code of one platform can not be run on the same Operating System. Object varies depending upon system architecture and native instructions associated with the machine.
 07.  All the source code need not be converted into byte code for execution by CPU. Some source code written by any specific high-level language is converted into byte code then byte code to object code for execution by CPU. All the source code must be converted into machine code before it is executed by the CPU.

Attention reader! Don’t stop learning now. Get hold of all the important Java and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up

I am a Computer Science Engineering student, have a great interest in android application development & now mostly focusing on Internet of Things (IoT) applications

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.