{"id":295502,"date":"2019-12-17T16:17:45","date_gmt":"2019-12-17T16:17:45","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=295502"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=295502","title":{"rendered":"Hello World \u0438\u0437 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430 \u0434\u043b\u044f JVM"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/480550\/\">\n<p>\u0421\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0443\u044e &#171;Hello World&#187; \u0438 \u043f\u0440\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u043f\u043e \u0435\u0433\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435<\/p>\n<p>  <\/p>\n<p>\u041d\u0435 \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434 \u0438 \u043a\u0430\u043a \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 JVM (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 (\u0437\u043d\u0430\u043d\u0438\u0435 \u043e\u0431 \u0438\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438)).<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0441\u043b\u043e\u0436\u043d\u043e. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 <code>javap<\/code> \u0438\u0437 JDK \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<p>  <\/p>\n<p>\u0410 \u043c\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0440\u0430\u0437\u0431\u043e\u0440\u0443 \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430 \u0434\u043b\u044f JVM<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>\u041e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043a\u043d\u0438\u0433\u043e\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0430\u043b\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f JVM \u2014 The Java Virtual Machine Specification \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se8\/jvms8.pdf\">oracle<\/a><\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">    public class Main {         public static void main(String ... args) {             System.out.println(\"Hello World\");         }     } <\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u0435\u0451 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>javac Main.java<\/code> \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u043d\u0433 <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    javap -c -v Main<\/code><\/pre>\n<p>  <\/p>\n<p><em>Main.class<\/em><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">Classfile \/C:\/Users\/Arthur\/playground\/java\/jvm\/Main.class   Last modified 26.10.2019; size 413 bytes   MD5 checksum 6449121a3bb611fee394e4f322401ee1   Compiled from \"Main.java\" public class Main   minor version: 0   major version: 52   flags: ACC_PUBLIC, ACC_SUPER Constant pool:    #1 = Methodref          #6.#15         \/\/ java\/lang\/Object.\"&lt;init&gt;\":()V    #2 = Fieldref           #16.#17        \/\/ java\/lang\/System.out:Ljava\/io\/PrintStream;    #3 = String             #18            \/\/ Hello World    #4 = Methodref          #19.#20 \/\/ java\/io\/PrintStream.println:(Ljava\/lang\/String;)V    #5 = Class              #21            \/\/ Main    #6 = Class              #22            \/\/ java\/lang\/Object    #7 = Utf8               &lt;init&gt;    #8 = Utf8               ()V    #9 = Utf8               Code   #10 = Utf8               LineNumberTable   #11 = Utf8               main   #12 = Utf8               ([Ljava\/lang\/String;)V   #13 = Utf8               SourceFile   #14 = Utf8               Main.java   #15 = NameAndType        #7:#8          \/\/ \"&lt;init&gt;\":()V   #16 = Class              #23            \/\/ java\/lang\/System   #17 = NameAndType        #24:#25        \/\/ out:Ljava\/io\/PrintStream;   #18 = Utf8               Hello World   #19 = Class              #26            \/\/ java\/io\/PrintStream   #20 = NameAndType        #27:#28        \/\/ println:(Ljava\/lang\/String;)V   #21 = Utf8               Main   #22 = Utf8               java\/lang\/Object   #23 = Utf8               java\/lang\/System   #24 = Utf8               out   #25 = Utf8               Ljava\/io\/PrintStream;   #26 = Utf8               java\/io\/PrintStream   #27 = Utf8               println   #28 = Utf8               (Ljava\/lang\/String;)V {   public Main();     descriptor: ()V     flags: ACC_PUBLIC     Code:       stack=1, locals=1, args_size=1          0: aload_0          1: invokespecial #1                  \/\/ Method java\/lang\/Object.\"&lt;init&gt;\":()V          4: return       LineNumberTable:         line 1: 0    public static void main(java.lang.String...);     descriptor: ([Ljava\/lang\/String;)V     flags: ACC_PUBLIC, ACC_STATIC, ACC_VARARGS     Code:       stack=2, locals=1, args_size=1          0: getstatic     #2        \/\/ Field java\/lang\/System.out:Ljava\/io\/PrintStream;          3: ldc           #3        \/\/ String Hello World          5: invokevirtual #4\/\/ Method java\/io\/PrintStream.println:(Ljava\/lang\/String;)V          8: return       LineNumberTable:         line 4: 0         line 5: 8 } SourceFile: \"Main.java\" <\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u0432\u0438\u0434\u0435\u0442\u044c \u043b\u0435\u0433\u0447\u0435, \u0447\u0435\u043c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434, \u043d\u043e \u0441\u0430\u043c \u043e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u043d\u0430\u0447\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    cafe babe 0000 0034 001d 0a00 0600 0f09     0010 0011 0800 120a 0013 0014 0700 1507     0016 0100 063c 696e 6974 3e01 0003 2829     5601 0004 436f 6465 0100 0f4c 696e 654e     756d 6265 7254 6162 6c65 0100 046d 6169     6e01 0016 285b 4c6a 6176 612f 6c61 6e67     2f53 7472 696e 673b 2956 0100 0a53 6f75     7263 6546 696c 6501 0009 4d61 696e 2e6a     6176 610c 0007 0008 0700 170c 0018 0019     0100 0b48 656c 6c6f 2057 6f72 6c64 0700     1a0c 001b 001c 0100 044d 6169 6e01 0010     6a61 7661 2f6c 616e 672f 4f62 6a65 6374     0100 106a 6176 612f 6c61 6e67 2f53 7973     7465 6d01 0003 6f75 7401 0015 4c6a 6176     612f 696f 2f50 7269 6e74 5374 7265 616d     3b01 0013 6a61 7661 2f69 6f2f 5072 696e     7453 7472 6561 6d01 0007 7072 696e 746c     6e01 0015 284c 6a61 7661 2f6c 616e 672f     5374 7269 6e67 3b29 5600 2100 0500 0600     0000 0000 0200 0100 0700 0800 0100 0900     0000 1d00 0100 0100 0000 052a b700 01b1     0000 0001 000a 0000 0006 0001 0000 0001     0089 000b 000c 0001 0009 0000 0025 0002     0001 0000 0009 b200 0212 03b6 0004 b100     0000 0100 0a00 0000 0a00 0200 0000 0400     0800 0500 0100 0d00 0000 0200 0e<\/code><\/pre>\n<p>  <\/p>\n<p>(\u041c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0430\u0448 <code>.class<\/code> \u0444\u0430\u0439\u043b \u0447\u0435\u0440\u0435\u0437 Sublime Text \u0443\u043a\u0430\u0437\u0430\u0432 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c File-&gt; Save with Encoding -&gt; Hexademical)<\/p>\n<p>  <\/p>\n<p>\u0421 \u044d\u0442\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u043c\u044b \u0438 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0435\u0433\u043e \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c\u0441\u044f \u0447\u0442\u043e \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f, \u0430 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0438\u043c\u0435\u0435\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u0436\u0435\u0441\u0442\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    ClassFile {         u4             magic;         u2             minor_version;         u2             major_version;         u2             constant_pool_count;         cp_info      constant_pool[constant_pool_count-1];         u2             access_flags;         u2             this_class;         u2             super_class;         u2             interfaces_count;         u2             interfaces[interfaces_count];         u2             fields_count;         field_info    fields[fields_count];         u2             methods_count;         method_info    methods[methods_count];         u2             attributes_count;         attribute_info attributes[attributes_count];     }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0451 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 JVM <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-4.html#jvms-4.1\">Chapter 4.1 The ClassFile Structure<\/a><\/p>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u0441\u043b\u0435\u0432\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0432 \u0431\u0430\u0439\u0442\u0430\u0445, \u0430 \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0431\u0430\u0439\u0442-\u043a\u043e\u0434 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432 hexadecimal, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u0446\u0438\u0444\u0440\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 4 \u0431\u0438\u0442\u0430, \u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0430 \u0434\u0432\u0430 \u0431\u0430\u0439\u0442\u0430 \u2014 4 \u0446\u0438\u0444\u0440\u044b \u0438 \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u0431\u0430\u0439\u0442\u0430 \u2014 8 \u0446\u0438\u0444\u0440.<\/p>\n<p>  <\/p>\n<p><strong>magic<\/strong><\/p>\n<p>  <\/p>\n<p>magic \u2014 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430. \u041e\u043d \u0440\u0430\u0432\u0435\u043d <code>0xCAFEBABE<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u044e <a href=\"https:\/\/en.wikipedia.org\/wiki\/Java_class_file#Magic_Number\">\u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f<\/a>.<\/p>\n<p>  <\/p>\n<p><strong>minor_version, major_version<\/strong><\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u0430\u0448\u0435\u0433\u043e <code>class<\/code> \u0444\u0430\u0439\u043b\u0430. \u0415\u0441\u043b\u0438 \u043c\u044b \u043d\u0430\u0437\u043e\u0432\u0435\u043c <code>major_version<\/code> M \u0438 <code>minor_version<\/code> m, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e \u043d\u0430\u0448\u0435\u0433\u043e <code>class<\/code> \u0444\u0430\u0439\u043b\u0430 \u043a\u0430\u043a <code>M.m<\/code><\/p>\n<p>  <\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u044f \u0441\u0440\u0430\u0437\u0443 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437 \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b &#171;Hello World&#187;, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    cafe babe   -- magic     0000         -- minor_version     0034         -- major_version<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0433\u043e \u0436\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u0432 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435, \u043d\u043e \u0443\u0436\u0435 \u0432 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    ...     public class Main       minor version: 0       major version: 52       flags: ACC_PUBLIC,      ...<\/code><\/pre>\n<p>  <\/p>\n<p><strong>constant_pool_count<\/strong><\/p>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u043f\u0443\u043b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0435, \u0442\u043e \u0432\u0430\u043c \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u043a\u0430\u0436\u0435\u0442\u0435 \u043d\u0435 \u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0442\u043e \u0432\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u043e\u043b\u0435\u0442\u0438\u0442 \u043a \u0447\u0435\u0440\u0442\u044f\u043c (\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e!).<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0443\u0434\u0430 <code>\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e_\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445_\u0432_\u043f\u0443\u043b\u0435 + 1<\/code><\/p>\n<p>  <\/p>\n<p>\u0418\u0442\u043e\u0433\u043e, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    cafe babe   -- magic     0000 0034   -- version     001d        -- constant_pool_count<\/code><\/pre>\n<p>  <\/p>\n<p><strong>constant_pool[]<\/strong><\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 \u043f\u0443\u043b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    cp_info {      u1 tag;      u1 info[];     }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c <code>tag<\/code>, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u0442\u0438\u043f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438 \u043f\u043e \u0442\u0438\u043f\u0443 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>info[]<\/code><\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0441 \u0442\u044d\u0433\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-4.html#jvms-4.4-140\">Table 4.3 Constant pool tags<\/a><\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u043e\u0442 \u0442\u0430\u0431\u043b\u0438\u0447\u043a\u0430:<\/p>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th>Constant Type<\/th>\n<th>Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>CONSTANT_Class<\/code><\/td>\n<td>7<\/td>\n<\/tr>\n<tr>\n<td><code>CONSTANT_Fieldref<\/code><\/td>\n<td>9<\/td>\n<\/tr>\n<tr>\n<td><code>CONSTANT_Methodref<\/code><\/td>\n<td>10<\/td>\n<\/tr>\n<tr>\n<td><code>CONSTANT_InterfaceMethodref<\/code><\/td>\n<td>11<\/td>\n<\/tr>\n<tr>\n<td><code>CONSTANT_String<\/code><\/td>\n<td>8<\/td>\n<\/tr>\n<tr>\n<td><code>CONSTANT_Integer<\/code><\/td>\n<td>3<\/td>\n<\/tr>\n<tr>\n<td><code>CONSTANT_Float<\/code><\/td>\n<td>4<\/td>\n<\/tr>\n<tr>\n<td><code>CONSTANT_Long<\/code><\/td>\n<td>5<\/td>\n<\/tr>\n<tr>\n<td><code>CONSTANT_Double<\/code><\/td>\n<td>6<\/td>\n<\/tr>\n<tr>\n<td><code>CONSTANT_NameAndType<\/code><\/td>\n<td>12<\/td>\n<\/tr>\n<tr>\n<td><code>CONSTANT_Utf8<\/code><\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td><code>CONSTANT_MethodHandle<\/code><\/td>\n<td>15<\/td>\n<\/tr>\n<tr>\n<td><code>CONSTANT_MethodType<\/code><\/td>\n<td>16<\/td>\n<\/tr>\n<tr>\n<td><code>CONSTANT_InvokeDynamic<\/code><\/td>\n<td>18<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0440\u0430\u043d\u0435\u0435 \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u043e\u0441\u044c, \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <code>CONSTANT_Class<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    CONSTANT_Class_info {         u1 tag;         u2 name_index;     }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u043b\u044f \u0438 \u043c\u0435\u0442\u043e\u0434\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    CONSTANT_Fieldref_info {         u1 tag;         u2 class_index;         u2 name_and_type_index;     }      CONSTANT_Methodref_info {         u1 tag;         u2 class_index;         u2 name_and_type_index;     }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u0432\u0430\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043d\u0443\u044e \u0434\u043b\u0438\u043d\u0443.<\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0430\u0441\u0442\u044c \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    cafe babe      0000 0034      001d -- constant_pool_count      0a00 0600 0f09 0010 0011 0800 12 ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0438 \u0443\u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0431\u0430\u0439\u0442 \u043e\u0442\u0432\u0435\u0434\u0435\u043d \u043f\u043e\u0434 \u0442\u0438\u043f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u0438\u0434\u0438\u043c <code>0a<\/code> (10) \u2014 \u0430, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u044d\u0442\u043e <code>CONSTANT_Methodref<\/code><\/p>\n<p>  <\/p>\n<p>\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0433\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    CONSTANT_Methodref_info {         u1 tag;         u2 class_index;         u2 name_and_type_index;     }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u0434\u043b\u044f \u0442\u044d\u0433\u0430, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0435\u0449\u0435 4 \u0431\u0430\u0439\u0442\u0430 \u0434\u043b\u044f <code>class_index<\/code> \u0438 <code>name_and_type_index<\/code><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    cafe babe      0000 0034      001d -- constant_pool_count       0a 0006 000f -- CONSTANT_Methodref     0900 1000 1108 0012 ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043c\u044b \u043d\u0430\u0448\u043b\u0438 \u043e\u0434\u043d\u0443 \u0438\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0443\u043b\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442. \u0418\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435. \u0421\u043c\u043e\u0442\u0440\u0438\u043c, <code>09<\/code> \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u0442\u0438\u043f <code>CONSTANT_Fieldref<\/code> <\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    cafe babe      0000 0034      001d -- constant_pool_count       0a 0006 000f -- CONSTANT_Methodref     09 0010 0011 -- CONSTANT_Fieldref     08 0012 ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0442\u0438\u043f\u043e\u0432 \u0438\u043c\u0435\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0443\u044e \u0444\u043e\u0440\u043c\u0443, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a.<br \/>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u0438\u043f\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a, <code>CONSTANT_String<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    CONSTANT_String_info {         u1 tag;         u2 string_index;     }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u044d\u0442\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-4.html#jvms-4.4\">Chapter 4.4 The Constant Pool<\/a><\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0430\u0442 \u0442\u0438\u043f\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0430\u043c\u043e\u0433\u043e <code>info<\/code><\/p>\n<p>  <\/p>\n<p>\u041c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u043f\u043e\u0434 \u043f\u0430\u0442\u0442\u0435\u0440\u043d <code>*_index<\/code> \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0430\u0434\u0440\u0435\u0441 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u0443\u043b\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>class_index<\/code> \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441 \u0442\u0438\u043f\u043e\u043c <code>CONSTANT_Class_info<\/code>, \u0430 <code>string_index<\/code> \u043d\u0430 <code>CONSTANT_Utf8_info<\/code><\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0436\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u0432 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    #1 = Methodref       #6.#15         \/\/ java\/lang\/Object.\"&lt;init&gt;\":()V     #2 = Fieldref           #16.#17        \/\/ java\/lang\/System.out:Ljava\/io\/PrintStream;     #3 = String             #18<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    0a 0006 000f  -- CONSTANT_Methodref     09 0010 0011 -- CONSTANT_Fieldref     08 0012      -- CONSTANT_String<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u0435\u043b \u0438 \u0441\u0442\u0440\u043e\u043a.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u0435\u043b \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0433\u043b\u0430\u0432\u044b <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-4.html#jvms-4.4.4\">4.4.4<\/a>, \u0430 \u043c\u044b \u043f\u043e\u043a\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043b\u0438\u0448\u044c \u0441\u0442\u0440\u043e\u043a\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0447\u0438\u0441\u043b\u0430 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0432\u0445\u043e\u0434\u044f\u0442 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 Hello World<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u043e\u0442 \u0442\u0430\u043a \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    CONSTANT_Utf8_info {         u1 tag;         u2 length;         u1 bytes[length];     }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0448 Hello World:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    01      -- tag     000b    -- length     48 65 6c 6c 6f 20 57 6f 72 6c 64    -- bytes[length] \/\/ H e l l o   W o r l d<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u044f \u0432\u0435\u0441\u044c \u043f\u0443\u043b \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430, \u043f\u043e\u043b\u0443\u0447\u0438\u043c:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u0435\u0441\u044c \u043f\u0443\u043b \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">    -- [Constant Pool]      -- methodref      0a 0006 000f      -- fieldref     09 0010 0011       -- string     08 0012       -- methodref     0a 0013 0014      -- Class     07 0015      -- Class     07 0016      -- Utf8     01 0006      3c 69 6e 69 74 3e       -- Utf8     01 0003      28 29 56       -- Utf8     01 0004      43 6f 64 65       -- Utf8     01 000f      4c 69 6e 65 4e 75 6d     62 65 72 54 61 62 6c 65      -- Utf8     01 0004      6d 61 69 6e       -- Utf8     01 0016      28 5b 4c 6a 61 76 61 2f 6c 61 6e 67     2f 53 74 72 69 6e 67 3b 29 56       -- Utf8     01 000a      53 6f 75 72 63 65 46 69 6c 65      -- Utf8     01 0009      4d 61 69 6e 2e 6a 61 76 61       -- NameAndType     0c 0007 0008       -- Class     07 0017       -- NameAndType     0c 0018 0019      -- Utf8     01 000b      48 65 6c 6c 6f 20 57 6f 72 6c 64       -- Class     07 001a      -- NameAndType     0c 001b 001c       -- Utf8     01 0004      4d 61 69 6e       -- Utf8     01 0010     6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74      -- Utf8     01 0010      6a 61 76 61 2f 6c 61 6e 67 2f 53 79 73 74 65 6d      -- Utf8     01 0003      6f 75 74       -- Utf8     01 0015      4c 6a 61 76 61 2f 69 6f 2f 50 72 69 6e 74 53 74      72 65 61 6d 3b      -- Utf8     01 0013      6a 61 76 61 2f 69 6f 2f 50 72 69 6e 74 53 74 72      65 61 6d       -- Utf8     01 0007      70 72 69 6e 74 6c 6e      -- Utf8     01 0015      28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69      6e 67 3b 29 56       -- [Constant Pool END]<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0441 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    Constant pool:        #1 = Methodref       #6.#15         \/\/ java\/lang\/Object.\"&lt;init&gt;\":()V        #2 = Fieldref           #16.#17        \/\/ java\/lang\/System.out:Ljava\/io\/PrintStream;        #3 = String             #18            \/\/ Hello World        #4 = Methodref       #19.#20  \/\/ java\/io\/PrintStream.println:(Ljava\/lang\/String;)V        #5 = Class              #21            \/\/ Main        #6 = Class              #22            \/\/ java\/lang\/Object        #7 = Utf8               &lt;init&gt;        #8 = Utf8               ()V        #9 = Utf8               Code       #10 = Utf8               LineNumberTable       #11 = Utf8               main       #12 = Utf8               ([Ljava\/lang\/String;)V       #13 = Utf8               SourceFile       #14 = Utf8               Main.java       #15 = NameAndType        #7:#8          \/\/ \"&lt;init&gt;\":()V       #16 = Class                     #23            \/\/ java\/lang\/System       #17 = NameAndType        #24:#25        \/\/ out:Ljava\/io\/PrintStream;       #18 = Utf8               Hello World       #19 = Class                      #26            \/\/ java\/io\/PrintStream       #20 = NameAndType        #27:#28        \/\/ println:(Ljava\/lang\/String;)V       #21 = Utf8               Main       #22 = Utf8               java\/lang\/Object       #23 = Utf8               java\/lang\/System       #24 = Utf8               out       #25 = Utf8               Ljava\/io\/PrintStream;       #26 = Utf8               java\/io\/PrintStream       #27 = Utf8               println       #28 = Utf8               (Ljava\/lang\/String;)V<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0432, \u0447\u0442\u043e \u0432\u0441\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442, \u0432\u0435\u0434\u044c \u043f\u043e \u0441\u0443\u0442\u0438 <code>javap<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434 \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u043c \u0435\u0433\u043e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435.<\/p>\n<p>  <\/p>\n<p>\u041f\u0443\u043b \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">      public Main();         descriptor: ()V         flags: ACC_PUBLIC         Code:           stack=1, locals=1, args_size=1              0: aload_0              1: invokespecial #1  \/\/ \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 1 \u0432 \u043f\u0443\u043b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442              4: return<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u0442\u0438\u043f\u0430\u0445 \u0432 \u043f\u0443\u043b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0432 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-4.html#jvms-4.4\">Chapter 4.4 The Constant Pool<\/a><\/p>\n<p>  <\/p>\n<p>\u0418\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 <em>ClassFile<\/em><\/p>\n<p>  <\/p>\n<p><strong>access_flags<\/strong><\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0431\u0438\u0442\u043e\u0432\u0430\u044f \u043c\u0430\u0441\u043a\u0430 \u0434\u043b\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432<\/p>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th>Flag Name<\/th>\n<th>Value<\/th>\n<th>Interpretation<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>ACC_PUBLIC<\/code><\/td>\n<td>0x0001<\/td>\n<td>Declared <code>public<\/code>; may be accessed from outside its package.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_FINAL<\/code><\/td>\n<td>0x0010<\/td>\n<td>Declared <code>final<\/code>; no subclasses allowed.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_SUPER<\/code><\/td>\n<td>0x0020<\/td>\n<td>Treat superclass methods specially when invoked by the <em>invokespecial<\/em> instruction.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_INTERFACE<\/code><\/td>\n<td>0x0200<\/td>\n<td>Is an interface, not a class.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_ABSTRACT<\/code><\/td>\n<td>0x0400<\/td>\n<td>Declared <code>abstract<\/code>; must not be instantiated.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_SYNTHETIC<\/code><\/td>\n<td>0x1000<\/td>\n<td>Declared synthetic; not present in the source code.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_ANNOTATION<\/code><\/td>\n<td>0x2000<\/td>\n<td>Declared as an annotation type.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_ENUM<\/code><\/td>\n<td>0x4000<\/td>\n<td>Declared as an <code>enum<\/code> type.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p><strong>this_class<\/strong><\/p>\n<p>  <\/p>\n<p>\u0414\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 <code>this<\/code> \u043a\u043b\u0430\u0441\u0441\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043e\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 5:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    Constant pool:        #1 = Methodref          #6.#15        \/\/ java\/lang\/Object.\"&lt;init&gt;\":()V        #2 = Fieldref           #16.#17        \/\/ java\/lang\/System.out:Ljava\/io\/PrintStream;        #3 = String             #18               \/\/ Hello World        #4 = Methodref          #19.#20     \/\/ java\/io\/PrintStream.println:(Ljava\/lang\/String;)V        #5 = Class              #21               \/\/ Main        #6 = Class              #22               \/\/ java\/lang\/Object       ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c <code>CONSTANT_Class_info<\/code><\/p>\n<p>  <\/p>\n<p><strong>super_class<\/strong><\/p>\n<p>  <\/p>\n<p>\u0410\u0434\u0440\u0435\u0441 \u043f\u0440\u0435\u0434\u043a\u0430 \u043a\u043b\u0430\u0441\u0441\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>#6<\/code>. \u041d\u0443, \u0438 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>CONSTANT_Class_info<\/code><\/p>\n<p>  <\/p>\n<p>\u0418\u043c\u0435\u043d\u0430 \u044d\u0442\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0437\u0430\u0434\u0430\u043d\u044b \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b <code>CONSTANT_Utf8_info<\/code>. \u0415\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u044f\u0447\u0435\u0439\u043a\u0438 <code>#21<\/code> \u0438 <code>#22<\/code>, \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">      ...       #21 = Utf8               Main       #22 = Utf8               java\/lang\/Object       ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0432 \u044d\u0442\u0438\u0445 \u044f\u0447\u0435\u0439\u043a\u0430\u0445 \u0443\u043a\u0430\u0437\u0430\u043d <code>name_index<\/code> \u0438\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    CONSTANT_Class_info {         u1 tag;         u2 name_index;     }<\/code><\/pre>\n<p>  <\/p>\n<p><strong>interfaces_count, fields_count<\/strong><\/p>\n<p>  <\/p>\n<p>\u0418\u0445 \u0432 \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043d\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0432\u043d\u044b 0000, \u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 <code>fields[]<\/code>, <code>interfaces[]<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<p>  <\/p>\n<p>\u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-4.html#jvms-4.1\">4.1 The ClassFile Structure<\/a><\/p>\n<p>  <\/p>\n<p><strong>methods_count<\/strong><\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0425\u043e\u0442\u044c \u0438 \u0432 \u043a\u043e\u0434\u0435 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043e\u0434\u0438\u043d \u043c\u0435\u0442\u043e\u0434 \u0432 \u043a\u043b\u0430\u0441\u0441\u0435, \u043d\u043e, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0438\u0445 \u0434\u0432\u0430. \u041a\u0440\u043e\u043c\u0435 <code>main<\/code> \u043c\u0435\u0442\u043e\u0434\u0430 \u0435\u0449\u0435 \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0432\u043d\u043e \u0434\u0432\u0443\u043c, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435.<\/p>\n<p>  <\/p>\n<p><strong>methods[]<\/strong><\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 <code>method_info<\/code> \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0432 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-4.html#jvms-4.6\">Chapter 4.6 Methods<\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    method_info {         u2             access_flags;         u2             name_index;         u2             descriptor_index;         u2             attributes_count;         attribute_info attributes[attributes_count];     }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u043d\u0430\u0448\u0435\u043c \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0435 (\u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c, \u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438) \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    -- [methods]      -- public Main();      0001 --access_flags     0007 -- name_index     0008 -- descriptor_index     0001 -- attributes_count      -- attribute_info     0009 -- attribute_name_index (Code)     0000 001d - attribute_length     0001 -- max_stack     0001 -- max_locals     0000 0005 -- code_length      2a b7 00 01 b1  -- code[]      0000 -- exception_table_length     0001 --  attributes_count;     000a -- attribute_name_index     0000 0006 -- attribute_length     00 01 00 00 00 01      -- public static void main(java.lang.String...);      0089  --access_flags     000b  -- name_index     000c  -- descriptor_index     0001  -- attributes_count      -- attribute_info     0009          -- attribute_name_index (Code)     0000 0025  -- attribute_length     0002          -- max_stack     0001          -- max_locals      0000 0009  -- code_length      b2 00 02 12 03 b6 00 04 b1 -- code[]      0000 -- exception_table_length     0001 -- attributes_count     000a -- attribute_name_index     0000 000a -- attribute_length     00 02 00 00 00 04 00 08 00 05       -- [methods END]<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043f\u043e-\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u0435\u0442\u043e\u0434\u043e\u0432:<\/p>\n<p>  <\/p>\n<p><strong>access_flags<\/strong><\/p>\n<p>  <\/p>\n<p>\u041c\u0430\u0441\u043a\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432. <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-4.html#jvms-4.6-200-A.1\">Table 4.5 Method access and property flags<\/a><\/p>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th>Flag Name<\/th>\n<th>Value<\/th>\n<th>Interpretation<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>ACC_PUBLIC<\/code><\/td>\n<td>0x0001<\/td>\n<td>Declared <code>public<\/code>; may be accessed from outside its package.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_PRIVATE<\/code><\/td>\n<td>0x0002<\/td>\n<td>Declared <code>private<\/code>; accessible only within the defining class.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_PROTECTED<\/code><\/td>\n<td>0x0004<\/td>\n<td>Declared <code>protected<\/code>; may be accessed within subclasses.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_STATIC<\/code><\/td>\n<td>0x0008<\/td>\n<td>Declared <code>static<\/code>.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_FINAL<\/code><\/td>\n<td>0x0010<\/td>\n<td>Declared <code>final<\/code>; must not be overridden (<a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-5.html#jvms-5.4.5\">\u00a75.4.5<\/a>).<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_SYNCHRONIZED<\/code><\/td>\n<td>0x0020<\/td>\n<td>Declared <code>synchronized<\/code>; invocation is wrapped by a monitor use.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_BRIDGE<\/code><\/td>\n<td>0x0040<\/td>\n<td>A bridge method, generated by the compiler.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_VARARGS<\/code><\/td>\n<td>0x0080<\/td>\n<td>Declared with variable number of arguments.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_NATIVE<\/code><\/td>\n<td>0x0100<\/td>\n<td>Declared <code>native<\/code>; implemented in a language other than Java.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_ABSTRACT<\/code><\/td>\n<td>0x0400<\/td>\n<td>Declared <code>abstract<\/code>; no implementation is provided.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_STRICT<\/code><\/td>\n<td>0x0800<\/td>\n<td>Declared <code>strictfp<\/code>; floating-point mode is FP-strict.<\/td>\n<\/tr>\n<tr>\n<td><code>ACC_SYNTHETIC<\/code><\/td>\n<td>0x1000<\/td>\n<td>Declared synthetic; not present in the source code.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u0438\u0437 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430, \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>public Main();<\/code> (\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440) \u0441\u0442\u043e\u0438\u0442 \u043c\u0430\u0441\u043a\u0430 <code>0001<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <code>ACC_PUBLIC<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>main<\/code>. \u0412\u043e\u0442, \u0447\u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c:<\/p>\n<p>  <\/p>\n<ul>\n<li>public \u2014 ACC_PUBLIC \u2014 0x0001<\/li>\n<li>static \u2014 ACC_STATIC \u2014 0x0008<\/li>\n<li>String\u2026 args \u2014 ACC_VARARGS \u2014 0x0080<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u0430\u0441\u043a\u0443: 0x0001 + 0x0008 + 0x0080 = <code>0x0089<\/code>. \u0418\u0442\u0430\u043a, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 <code>access_flag<\/code><\/p>\n<p>  <\/p>\n<blockquote><p>\u041a \u0441\u043b\u043e\u0432\u0443, ACC_VARARGS \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439, \u0432 \u0442\u043e\u043c \u043f\u043b\u0430\u043d\u0435, \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b \u043c\u044b<br \/>  \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 String[] args \u0432\u043c\u0435\u0441\u0442\u043e String\u2026 args, \u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430 \u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e<\/p><\/blockquote>\n<p><strong>name_index<\/strong><\/p>\n<p>  <\/p>\n<p>\u0410\u0434\u0440\u0435\u0441 \u0438\u043c\u0435\u043d\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 (<code>CONSTANT_Utf8_info<\/code>) \u0432 \u043f\u0443\u043b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442. \u0417\u0434\u0435\u0441\u044c \u0432\u0430\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0438\u043c\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u044d\u0442\u043e \u043d\u0435 Main, \u0430 <code>&lt;init&gt;<\/code>, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0432 \u044f\u0447\u0435\u0439\u043a\u0435 #7.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e <code>&lt;init&gt;<\/code> \u0438 <code>&lt;clinit&gt;<\/code> \u0432 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-2.html#jvms-2.9\">Chapter 2.9 Special Methods<\/a><\/p>\n<p>  <\/p>\n<p><strong>descriptor_index<\/strong><\/p>\n<p>  <\/p>\n<p>\u0413\u0440\u0443\u0431\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u044d\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043d\u0430 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u0430. \u042d\u0442\u043e\u0442 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u0438\u043f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u0442\u0438\u043f \u0435\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435, \u0432 JVM \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f:<\/p>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><em>BaseType<\/em> Character<\/th>\n<th>Type<\/th>\n<th>Interpretation<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>B<\/code><\/td>\n<td><code>byte<\/code><\/td>\n<td>signed byte<\/td>\n<\/tr>\n<tr>\n<td><code>C<\/code><\/td>\n<td><code>char<\/code><\/td>\n<td>Unicode character code point in the Basic Multilingual Plane, encoded with UTF-16<\/td>\n<\/tr>\n<tr>\n<td><code>D<\/code><\/td>\n<td><code>double<\/code><\/td>\n<td>double-precision floating-point value<\/td>\n<\/tr>\n<tr>\n<td><code>F<\/code><\/td>\n<td><code>float<\/code><\/td>\n<td>single-precision floating-point value<\/td>\n<\/tr>\n<tr>\n<td><code>I<\/code><\/td>\n<td><code>int<\/code><\/td>\n<td>integer<\/td>\n<\/tr>\n<tr>\n<td><code>J<\/code><\/td>\n<td><code>long<\/code><\/td>\n<td>long integer<\/td>\n<\/tr>\n<tr>\n<td><code>L<\/code> <em>ClassName<\/em> <code>;<\/code><\/td>\n<td><code>reference<\/code><\/td>\n<td>an instance of class <em>ClassName<\/em><\/td>\n<\/tr>\n<tr>\n<td><code>S<\/code><\/td>\n<td><code>short<\/code><\/td>\n<td>signed short<\/td>\n<\/tr>\n<tr>\n<td><code>Z<\/code><\/td>\n<td><code>boolean<\/code><\/td>\n<td><code>true<\/code> or <code>false<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>[<\/code><\/td>\n<td><code>reference<\/code><\/td>\n<td>one array dimension<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    ( ParameterDescriptor* ) ReturnDescriptor<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    Object method(int i, double d, Thread t) {..}<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    (IDLjava\/lang\/Thread;)Ljava\/lang\/Object<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, <code>I<\/code> \u2014 \u044d\u0442\u043e <code>int<\/code>, <code>D<\/code> \u2014 \u044d\u0442\u043e <code>double<\/code>, \u0430 <code>Ljava\/lang\/Thread;<\/code> \u043a\u043b\u0430\u0441\u0441 <code>Thread<\/code> \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <code>java.lang<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435, \u0438\u0434\u0443\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430, \u043a\u0430\u043a \u0438 \u0432\u0441\u0435\u0433\u0434\u0430, \u0438\u0434\u0435\u0442 \u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e <code>attributes_count<\/code><\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u0441\u0430\u043c\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0441\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0432 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-4.html#jvms-4.7\">Chapter 4.7 Attributes<\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    attribute_info {         u2 attribute_name_index;         u4 attribute_length;         u1 info[attribute_length];     }<\/code><\/pre>\n<p>  <\/p>\n<p><strong>attribute_name_index<\/strong><\/p>\n<p>  <\/p>\n<p>\u0423\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0443 \u043e\u0431\u043e\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u044d\u0442\u043e <code>Code<\/code>. \u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0442\u0435\u043c\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u0436\u0435 \u0441\u0432\u043e\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b. \u041d\u043e \u043d\u0430\u043c \u043f\u043e\u043a\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e <code>attribute_name_index<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u0432 \u043f\u0443\u043b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0441\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 <code>CONSTANT_Utf8_info<\/code><\/p>\n<p>  <\/p>\n<p><strong>attribute_length<\/strong><\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u043b\u0438\u043d\u0443 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430, \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f <code>attribute_name_index<\/code> \u0438 <code>attribute_length<\/code><\/p>\n<p>  <\/p>\n<p><strong>info<\/strong><\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 <code>Code<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 <code>attribute_name_index<\/code> \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043f\u0443\u043b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 <code>Code<\/code>. <\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435: <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-4.html#jvms-4.7.3\">Chapter 4.7.3 The Code Attribute<\/a><\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u0435\u0433\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    Code_attribute {         u2 attribute_name_index;         u4 attribute_length;         u2 max_stack;         u2 max_locals;         u4 code_length;         u1 code[code_length];         u2 exception_table_length;         {   u2 start_pc;             u2 end_pc;             u2 handler_pc;             u2 catch_type;         } exception_table[exception_table_length];         u2 attributes_count;         attribute_info attributes[attributes_count];     }<\/code><\/pre>\n<p>  <\/p>\n<p><strong>max_stack<\/strong><\/p>\n<p>  <\/p>\n<p>\u041c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0438\u043c\u044f \u044d\u0442\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u0437-\u0437\u0430 \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0438 max. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u044d\u0442\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u043d\u0443\u0436\u043d\u044b\u0439 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u041d\u0443, \u044d\u0442\u043e \u0438\u043c\u044f \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0443, \u0435\u0441\u043b\u0438 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0423\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, JVM \u0432\u044b\u0434\u0435\u043b\u0438\u0442 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0441\u0442\u0435\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432. \u0422\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043d\u0443\u0436\u043d\u043e, \u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432 \u044d\u0442\u043e\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043e\u0448\u0438\u0431\u043a\u0435.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0442\u0435\u043c\u0443 \u0441\u0442\u0435\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c &#171;<a href=\"https:\/\/www.tune-it.ru\/web\/bleizard\/blog\/-\/blogs\/o-steke-i-kuce-v-kontekste-mira-java?_com_liferay_blogs_web_portlet_BlogsPortlet_redirect=https%3A%2F%2Fwww.tune-it.ru%2Fweb%2Fbleizard%2Fblog%3Fp_p_id%3Dcom_liferay_blogs_web_portlet_BlogsPortlet%26p_p_lifecycle%3D0%26p_p_state%3Dnormal%26p_p_mode%3Dview%26_com_liferay_blogs_web_portlet_BlogsPortlet_cur%3D2%26_com_liferay_blogs_web_portlet_BlogsPortlet_delta%3D10%26p_r_p_resetCur%3Dfalse\">\u041e \u0441\u0442\u0435\u043a\u0435 \u0438 \u043a\u0443\u0447\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043c\u0438\u0440\u0430 Java<\/a>&#187; \u0438\u043b\u0438 \u0432 &#171;<a href=\"http:\/\/blog.jamesdbloom.com\/JVMInternals.html\">JVM Internals<\/a>&#171;<\/p>\n<p>  <\/p>\n<p><strong>max_locals<\/strong><\/p>\n<p>  <\/p>\n<p>\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445<\/p>\n<p>  <\/p>\n<p>\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0441\u044f \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u0432 <a href=\"https:\/\/jrebel.com\/rebellabs\/rebel-labs-report-mastering-java-bytecode-at-the-core-of-the-jvm\/\">Mastering Java Bytecode at the Core of the JVM<\/a> \u0438\u043b\u0438 \u0432 \u0442\u043e\u043c \u0436\u0435 <a href=\"http:\/\/blog.jamesdbloom.com\/JVMInternals.html\">JVM Internals<\/a><\/p>\n<p>  <\/p>\n<p><strong>code_length<\/strong><\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430<\/p>\n<p>  <\/p>\n<p><strong>code[]<\/strong><\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u0434 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e. \u0422\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f <code>optcode<\/code> \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441 \u043c\u043d\u0435\u043c\u043e\u043d\u0438\u043a\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0432\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0438 \u2014 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Java_bytecode_instruction_listings\">Java bytecode instruction listings<\/a> \u0438\u043b\u0438 \u0432 \u0441\u0430\u043c\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043d\u0438\u0433\u0438<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u043d\u0430\u0448 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    -- public Main();      0001 --access_flags     0007 -- name_index     0008 -- descriptor_index     0001 -- attributes_count      -- attribute_info     0009 -- attribute_name_index (Code)     0000 001d - attribute_length     00 01 -- max_stack     00 01 -- max_locals     00 00 00 05 -- code_length      2a b7 00 01 b1  -- code[]      0000 -- exception_table_length     0001 --  attributes_count;     00 0a -- attribute_name_index     0000 0006 -- attribute_length     00 01 00 00 00 01<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u0439\u0442\u0438 \u043d\u0430\u0448 \u043a\u043e\u0434:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    2a b7 00 01 b1<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u0449\u0435\u043c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    2a - aload_0     b7 0001 - invokespecial #1     b1 - return<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0437\u0434\u0435\u0441\u044c: <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-4.html#jvms-4.10.1.9\">Chapter 4.10.1.9. Type Checking Instructions<\/a><\/p>\n<p>  <\/p>\n<p><strong>exception_table_length<\/strong><\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u0434\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 exception_table. \u0423 \u043d\u0430\u0441 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u043e\u0432 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c. \u041d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-4.html#jvms-4.7.3\">Chapter 4.7.3 The Code Attribute<\/a><\/p>\n<p>  <\/p>\n<p><strong>exception_table[]<\/strong><\/p>\n<p>  <\/p>\n<p>\u0418\u043c\u0435\u0435\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    {            u2 start_pc;         u2 end_pc;         u2 handler_pc;         u2 catch_type;     }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443\u043f\u0440\u043e\u0449\u0430\u0442\u044c, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u043e, \u043a\u043e\u043d\u0435\u0446 (<code>start_pc<\/code>, <code>end_pc<\/code>) \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c <code>handler_pc<\/code> \u0438 \u0442\u0438\u043f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f <code>catch_type<\/code><\/p>\n<p>  <\/p>\n<p><strong>attributes_count<\/strong><\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0432 <code>Code<\/code><\/p>\n<p>  <\/p>\n<p><strong>attributes[]<\/strong><\/p>\n<p>  <\/p>\n<p>\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u0438\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<hr>\n<p>  <\/p>\n<h3 id=\"sredstva-dlya-raboty-s-bayt-kodom\">\u0421\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u043e\u043c<\/h3>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u0442\u0430 \u0442\u0435\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043d\u043e \u0432\u0441\u0435 \u0436\u0435 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u043d\u0435\u0439.<\/p>\n<p>  <\/p>\n<p>\u0421\u0440\u0435\u0434\u0441\u0442\u0432 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u043e\u043c, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e. \u0417\u0434\u0435\u0441\u044c \u044f \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/commons.apache.org\/proper\/commons-bcel\/\">Byte Code Engineering Library<\/a> (BCEL) \u043e\u0442 Apache Commons.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0433\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">        \/\/ read file from resources\/complied\/ClassA.class         InputStream inputStream = ClassParserExample.class.getResourceAsStream(\"\/compiled\/ClassA.class\");         if (inputStream == null) throw new FileNotFoundException();          ClassParser parser = new ClassParser(inputStream, \"ClassA.class\");          JavaClass clazz = parser.parse();          final String HEX_BYTECODE = getHex(clazz.getBytes());          System.out.println(\"Hex bytecode: \");         System.out.println(HEX_BYTECODE);         System.out.println();          final String MINOR_VER      =   getHex(clazz.getMinor());         final String MAJOR_VER      =   getHex(clazz.getMajor());         final String CONSTANT_POOL  =   getHex(clazz.getConstantPool().getConstantPool());         final String ACCESS_FLAGS   =   getHex(clazz.getAccessFlags());         final String THIS_CLASS     =   getHex(clazz.getClassName().getBytes());         final String SUPER_CLASS    =   getHex(clazz.getSuperClass().getBytes());         final String INTERFACES     =   getHex(clazz.getInterfaces());         final String FIELDS         =   getHex(clazz.getFields());         final String METHODS        =   getHex(clazz.getMethods());         final String ATTRIBUTES     =   getHex(clazz.getAttributes());<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043b\u043d\u044b\u0439 \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u043a\u043e\u0434\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">import org.apache.bcel.classfile.*; import org.apache.commons.codec.binary.Hex;  import java.io.*;  public class ClassParserExample {      public static void main(String... args) throws IOException, ClassNotFoundException {          \/\/ read file from resources\/complied\/ClassA.class         InputStream inputStream = ClassParserExample.class.getResourceAsStream(\"\/compiled\/ClassA.class\");         if (inputStream == null) throw new FileNotFoundException();          ClassParser parser = new ClassParser(inputStream, \"ClassA.class\");          JavaClass clazz = parser.parse();          final String HEX_BYTECODE = getHex(clazz.getBytes());          System.out.println(\"Hex bytecode: \");         System.out.println(HEX_BYTECODE);         System.out.println();          final String MINOR_VER      =   getHex(clazz.getMinor());         final String MAJOR_VER      =   getHex(clazz.getMajor());         final String CONSTANT_POOL  =   getHex(clazz.getConstantPool().getConstantPool());         final String ACCESS_FLAGS   =   getHex(clazz.getAccessFlags());         final String THIS_CLASS     =   getHex(clazz.getClassName().getBytes());         final String SUPER_CLASS    =   getHex(clazz.getSuperClass().getBytes());         final String INTERFACES     =   getHex(clazz.getInterfaces());         final String FIELDS         =   getHex(clazz.getFields());         final String METHODS        =   getHex(clazz.getMethods());         final String ATTRIBUTES     =   getHex(clazz.getAttributes());          System.out.println( \"minor: \"           + MINOR_VER    );   \/\/ 0         System.out.println( \"major: \"           + MAJOR_VER    );   \/\/ 34         System.out.println( \"constant pool: \"   + CONSTANT_POOL);   \/\/ not correctly         System.out.println( \"access flags: \"    + ACCESS_FLAGS );   \/\/ 21         System.out.println( \"this class: \"      + THIS_CLASS   );         System.out.println( \"super class: \"     + SUPER_CLASS  );   \/\/ Object         System.out.println( \"interfaces: \"      + INTERFACES   );   \/\/ &lt;empty&gt;         System.out.println( \"fields: \"          + FIELDS       );   \/\/ &lt;empty&gt;         System.out.println( \"methods: \"         + METHODS      );   \/\/ one method: psvm hello world         System.out.println( \"attributes: \"      + ATTRIBUTES   );   \/\/ 536f7572636546696c65 - I think it's instructions for Java tools      }      private static String getHex(byte[] bytes){         return Hex.encodeHexString(bytes);     }      private static String getHex(int intNum){         return Integer.toHexString(intNum);     }      private static String getHex(Constant[] constants){         if (constants == null) return null;          StringBuilder sb = new StringBuilder();         for (Constant c : constants){             if (c == null) continue;             sb.append(getHex(c.getTag())).append(\" \");         }          return sb.toString();     }      private static String getHex(JavaClass[] clazzes){         if (clazzes == null) return null;          StringBuilder sb = new StringBuilder();         for (JavaClass c : clazzes){             sb.append(getHex(c.getClassName().getBytes())).append(\" \");         }          return sb.toString();     }      private static String getHex(Field[] fields){         if (fields == null) return null;          StringBuilder sb = new StringBuilder();         for (Field c : fields){             sb.append(getHex(c.getName().getBytes())).append(\" \");         }          return sb.toString();     }      private static String getHex(Method[] methods){         if (methods == null) return null;          StringBuilder sb = new StringBuilder();         for (Method c : methods){             sb.append(getHex(c.getName().getBytes())).append(\" \");         }          return sb.toString();     }      private static String getHex(Attribute[] attributes){         if (attributes == null) return null;          StringBuilder sb = new StringBuilder();         for (Attribute c : attributes){             sb.append(getHex(c.getName().getBytes())).append(\" \");         }          return sb.toString();     }  }  \/*     Class A:     public class ClassA {         public static void main(String[] args) {             System.out.println(\"Hello world\");         }     }  *\/  \/*     Class A bytecode:     cafe babe 0000 0034 0022 0a00 0600 1409     0015 0016 0800 170a 0018 0019 0700 1a07     001b 0100 063c 696e 6974 3e01 0003 2829     5601 0004 436f 6465 0100 0f4c 696e 654e     756d 6265 7254 6162 6c65 0100 124c 6f63     616c 5661 7269 6162 6c65 5461 626c 6501     0004 7468 6973 0100 1d4c 636f 6d2f 6170     706c 6f69 6478 7878 2f70 6172 7365 2f43     6c61 7373 413b 0100 046d 6169 6e01 0016     285b 4c6a 6176 612f 6c61 6e67 2f53 7472     696e 673b 2956 0100 0461 7267 7301 0013     5b4c 6a61 7661 2f6c 616e 672f 5374 7269     6e67 3b01 000a 536f 7572 6365 4669 6c65     0100 0b43 6c61 7373 412e 6a61 7661 0c00     0700 0807 001c 0c00 1d00 1e01 000b 4865     6c6c 6f20 776f 726c 6407 001f 0c00 2000     2101 001b 636f 6d2f 6170 706c 6f69 6478     7878 2f70 6172 7365 2f43 6c61 7373 4101     0010 6a61 7661 2f6c 616e 672f 4f62 6a65     6374 0100 106a 6176 612f 6c61 6e67 2f53     7973 7465 6d01 0003 6f75 7401 0015 4c6a     6176 612f 696f 2f50 7269 6e74 5374 7265     616d 3b01 0013 6a61 7661 2f69 6f2f 5072     696e 7453 7472 6561 6d01 0007 7072 696e     746c 6e01 0015 284c 6a61 7661 2f6c 616e     672f 5374 7269 6e67 3b29 5600 2100 0500     0600 0000 0000 0200 0100 0700 0800 0100     0900 0000 2f00 0100 0100 0000 052a b700     01b1 0000 0002 000a 0000 0006 0001 0000     0006 000b 0000 000c 0001 0000 0005 000c     000d 0000 0009 000e 000f 0001 0009 0000     0037 0002 0001 0000 0009 b200 0212 03b6     0004 b100 0000 0200 0a00 0000 0a00 0200     0000 0800 0800 0900 0b00 0000 0c00 0100     0000 0900 1000 1100 0000 0100 1200 0000     0200 13  *\/  \/*     Assembled code:     Classfile \/C:\/java\/BCEL\/src\/main\/resources\/compiled\/ClassA.class       Last modified 08.12.2019; size 563 bytes       MD5 checksum bcd0198f6764a1dc2f3967fef701452e       Compiled from \"ClassA.java\"     public class com.apploidxxx.parse.ClassA       minor version: 0       major version: 52       flags: ACC_PUBLIC, ACC_SUPER     Constant pool:        #1 = Methodref          #6.#20         \/\/ java\/lang\/Object.\"&lt;init&gt;\":()V        #2 = Fieldref           #21.#22        \/\/ java\/lang\/System.out:Ljava\/io\/PrintStream;        #3 = String             #23            \/\/ Hello world        #4 = Methodref          #24.#25        \/\/ java\/io\/PrintStream.println:(Ljava\/lang\/String;)V        #5 = Class              #26            \/\/ com\/apploidxxx\/parse\/ClassA        #6 = Class              #27            \/\/ java\/lang\/Object        #7 = Utf8               &lt;init&gt;        #8 = Utf8               ()V        #9 = Utf8               Code       #10 = Utf8               LineNumberTable       #11 = Utf8               LocalVariableTable       #12 = Utf8               this       #13 = Utf8               Lcom\/apploidxxx\/parse\/ClassA;       #14 = Utf8               main       #15 = Utf8               ([Ljava\/lang\/String;)V       #16 = Utf8               args       #17 = Utf8               [Ljava\/lang\/String;       #18 = Utf8               SourceFile       #19 = Utf8               ClassA.java       #20 = NameAndType        #7:#8          \/\/ \"&lt;init&gt;\":()V       #21 = Class              #28            \/\/ java\/lang\/System       #22 = NameAndType        #29:#30        \/\/ out:Ljava\/io\/PrintStream;       #23 = Utf8               Hello world       #24 = Class              #31            \/\/ java\/io\/PrintStream       #25 = NameAndType        #32:#33        \/\/ println:(Ljava\/lang\/String;)V       #26 = Utf8               com\/apploidxxx\/parse\/ClassA       #27 = Utf8               java\/lang\/Object       #28 = Utf8               java\/lang\/System       #29 = Utf8               out       #30 = Utf8               Ljava\/io\/PrintStream;       #31 = Utf8               java\/io\/PrintStream       #32 = Utf8               println       #33 = Utf8               (Ljava\/lang\/String;)V     {       public com.apploidxxx.parse.ClassA();         descriptor: ()V         flags: ACC_PUBLIC         Code:           stack=1, locals=1, args_size=1              0: aload_0              1: invokespecial #1                  \/\/ Method java\/lang\/Object.\"&lt;init&gt;\":()V              4: return           LineNumberTable:             line 6: 0           LocalVariableTable:             Start  Length  Slot  Name   Signature                 0       5     0  this   Lcom\/apploidxxx\/parse\/ClassA;       public static void main(java.lang.String[]);         descriptor: ([Ljava\/lang\/String;)V         flags: ACC_PUBLIC, ACC_STATIC         Code:           stack=2, locals=1, args_size=1              0: getstatic     #2                  \/\/ Field java\/lang\/System.out:Ljava\/io\/PrintStream;              3: ldc           #3                  \/\/ String Hello world              5: invokevirtual #4                  \/\/ Method java\/io\/PrintStream.println:(Ljava\/lang\/String;)V              8: return           LineNumberTable:             line 8: 0             line 9: 8           LocalVariableTable:             Start  Length  Slot  Name   Signature                 0       9     0  args   [Ljava\/lang\/String;     }     SourceFile: \"ClassA.java  *\/<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043b\u0438 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 Jasmin) \u0431\u0430\u0439\u0442-\u043a\u043e\u0434.<\/p>\n<p>  <\/p>\n<p>\u041f\u0430\u0440\u043e\u0447\u043a\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 <a href=\"https:\/\/github.com\/AppLoidx\/JVM-research\">\u043c\u043e\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a> \u0438\u043b\u0438 \u0432 <a href=\"https:\/\/github.com\/apache\/commons-bcel\/tree\/master\/src\/examples\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445<\/a><\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435, \u044f \u0443\u0434\u0435\u043b\u0438\u043b \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0438 <strong>Jasmin<\/strong>. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u044f \u043d\u0435 \u0437\u043d\u0430\u044e, \u0447\u0435\u043c \u043e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043d\u043e \u044f \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u0440\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b JVM \u0441 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u043e\u043c.<\/p>\n<p>  <\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u043c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u043c \u043a\u043e\u0434\u0435:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Hello World<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">.bytecode 52.0  .source Main.j .class public Main .super java\/lang\/Object  .method public static main([Ljava\/lang\/String;)V         .limit stack 2         .limit locals 2      getstatic java\/lang\/System\/out Ljava\/io\/PrintStream;     ldc \"Hello world!\"     invokevirtual java\/io\/PrintStream.println(Ljava\/lang\/String;)V     return .end method<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">; ClassCreating.j  .bytecode 52.0 .source ClassCreating.java .class public ClassCreating .super java\/lang\/Object  .method public &lt;init&gt;()V     .limit stack 1     .limit locals 1     .line 1     0: aload_0     1: invokespecial java\/lang\/Object\/&lt;init&gt;()V     4: return .end method  .method public static main([Ljava\/lang\/String;)V     ; Flag ACC_VARARGS set, see JVM spec     .limit stack 2     .limit locals 3     .line 3     0: new java\/lang\/String     3: dup     4: invokespecial java\/lang\/String\/&lt;init&gt;()V     7: astore_1     .line 4     8: new ClassCreating     11: dup     12: invokespecial ClassCreating\/&lt;init&gt;()V     15: astore_2     .line 5     16: aload_2     17: invokevirtual ClassCreating\/sayHello()V     .line 6     20: return .end method  .method public sayHello()V     .limit stack 2     .limit locals 1     .line 9     0: getstatic java\/lang\/System\/out Ljava\/io\/PrintStream;     3: ldc \"Hello, User!\"     5: invokevirtual java\/io\/PrintStream\/println(Ljava\/lang\/String;)V     .line 10     8: return  .end method<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<hr>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u043c\u044b \u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043a\u0443 Hello World<\/p>\n<p>  <\/p>\n<p>\u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430 \u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 \u043c\u043e\u0435\u043c \u0433\u0438\u0441\u0442\u0435: <a href=\"https:\/\/gist.github.com\/AppLoidx\/7173d7277dd73025ae06377a7cc75ed0\">gist.github<\/a><\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u043e\u0448\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0438\u043b\u0438 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0445.<\/p>\n<p>  <\/p>\n<p><strong>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430<\/strong><\/p>\n<p>  <\/p>\n<ul>\n<li>The Java Virtual Machine Specification \u2014 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se8\/jvms8.pdf\">docs.oracle<\/a><\/li>\n<\/ul>\n<\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d() } } }t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>      <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/480550\/\"> https:\/\/habr.com\/ru\/post\/480550\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/480550\/\">\n<p>\u0421\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0443\u044e &#171;Hello World&#187; \u0438 \u043f\u0440\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u043f\u043e \u0435\u0433\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435<\/p>\n<p>  <\/p>\n<p>\u041d\u0435 \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434 \u0438 \u043a\u0430\u043a \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 JVM (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 (\u0437\u043d\u0430\u043d\u0438\u0435 \u043e\u0431 \u0438\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438)).<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0441\u043b\u043e\u0436\u043d\u043e. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 <code>javap<\/code> \u0438\u0437 JDK \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<p>  <\/p>\n<p>\u0410 \u043c\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0440\u0430\u0437\u0431\u043e\u0440\u0443 \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430 \u0434\u043b\u044f JVM<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-295502","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/295502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=295502"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/295502\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=295502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=295502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=295502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}