How does JVM understand the byte code compiled by both the JDK and Eclipse while both are different?
<p>Compiled byte code by Eclipse and JDK are different. Then how does the JVM understand both the byte codes?
Example:</p>

<p>package com.hcl.raj.utilities;</p>

<p>public class StringTest {</p>

<pre><code>/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    String name = "Rajkumar";
    byte[] byteCodes = new byte[] {15,22,35,48};
    String str1 = new String(byteCodes);
    System.out.println(str1);

}
</code></pre>

<p>}</p>

<p>Compiled code of the above source code by JDK as follows,</p>

<p>Êþº¾   2 "</p>

<pre><code>       &lt;init&gt;   ()V   Code   LineNumberTable   main   ([Ljava/lang/String;)V  
</code></pre>

<p>SourceFile   StringTest.java </p>

<p>Rajkumar   java/lang/String </p>

<pre><code> ¬ 
</code></pre>

<p>!   com/hcl/raj/utilities/StringTest   java/lang/Object   ([B)V   java/lang/System   out   Ljava/io/PrintStream;   java/io/PrintStream  println   (Ljava/lang/String;)V !                 </p>

<pre><code>        *•  ±      
</code></pre>

<p>T       ,  L¼ Y   TY   TY  #TY  0TM»  Y,•  N²  -¶  ±      </p>

<p>$   +            </p>

<p>Compiled code of the above source code by Eclipse</p>

<p>Êþº¾   2 ,<br>
StringTest  java/lang/Object  ()V Code
       LineNumberTable LocalVariableTable this LStringTest; main ([Ljava/lang/String;)V  Rajkumar  java/lang/String
     ([B)V      java/lang/System   out Ljava/io/PrintStream;
     java/io/PrintStream ! " println (Ljava/lang/String;)V args [Ljava/lang/String; <strong><em>name</em></strong> Ljava/lang/String;   byteCodes [B str1 
SourceFile StringTest.java !               /     *· ±    </p>

<pre><code>       „     ,L¼YTYTY#TY0TM» Y,· N² -¶ ±    

 $ 
</code></pre>

<p>+     *    , # $    ) % &amp;    ' (  $  ) &amp;   *    +</p>
