Java ByteCode
Java ByteCode
1£¬Ê²Ã´ÊÇBytecode
C/C++±àÒëÆ÷°ÑÔ´´úÂë±àÒë³É»ã±à´úÂ룬Java±àÒëÆ÷°ÑJavaÔ´´úÂë±àÒë³É×Ö½ÚÂëbytecode¡£
Java¿çƽ̨Æäʵ¾ÍÊÇ»ùÓÚÏàͬµÄbytecode¹æ·¶×ö²»Í¬Æ½Ì¨µÄÐéÄâ»ú£¬ÎÒÃǵÄJava³ÌÐò±àÒë³Ébytecodeºó¾Í¿ÉÒÔÔÚ²»Í¬Æ½Ì¨ÅÜÁË¡£
.net¿ò¼ÜÓÐIL(intermediate language)£¬»ã±àÊÇC/C++³ÌÐòµÄÖмä±í´ï·½Ê½£¬¶øbytecode¿ÉÒÔ˵ÊÇJavaƽ̨µÄÖмäÓïÑÔ¡£
Á˽âJava×Ö½ÚÂë֪ʶ¶Ôdebugging¡¢performance tuningÒÔ¼°×öһЩ¸ß¼¶ÓïÑÔÀ©Õ¹»ò¿ò¼ÜºÜÓаïÖú¡£
2£¬Ê¹ÓÃjavapÉú³ÉBytecode
JDK×Ô´øµÄjavap.exeÎļþ¿ÉÒÔ·´»ã±àBytecode£¬ÈÃÎÒÃÇ¿´¸öÀý×Ó:
Test.java:
Java´úÂë
public class Test {
public static void main(String[] args) {
int i = 10000;
System.out.println("Hello Bytecode! Number = " + i);
}
}
public class Test {
public static void main(String[] args) {
int i = 10000;
System.out.println("Hello Bytecode! Number = " + i);
}
}
±àÒëºóµÄTest.class:
Java´úÂë
Êþº¾ 1 +
<init> ()V Code LineNumberTable main ([Ljava/lang/String;)V
SourceFile Test.java
! " java/lang/StringBuilder Hello Bytecode! Number = # $ # % & ' ( ) * Test java/lang/Object java/lang/System out Ljava/io/PrintStream; append -(Ljava/lang/String;)Ljava/lang/StringBuilder; (I)Ljava/lang/StringBuilder; toString ()Ljava/lang/String; java/io/PrintStream println (Ljava/lang/String;)V !
* > ' < Y
Êþº¾&nb
Ïà¹ØÎĵµ£º
¡¡¡¡ÄÇôҪ³ÉΪ¼Ü¹¹Ê¦µÄ;¾¶ËƺõÖ»ÓÐÏÖÔÚ½ÏΪÁ÷ÐеÄÈí¼þѧԺºÍ¸öÈË×ÔÎÒÅàÑøÁË¡£¹ØÓÚÈí¼þѧԺÎÒ½Ó´¥¹ý²»ÉÙ£¬Æä×ÚÖ¼¾ø´ó²¿·Ö¶¼ÊÇÔì¾Í(or´òÔì)ÆóÒµ ÐèÒªµÄÈí¼þ¼Ü¹¹Ê¦(or³ÌÐòÔ±orÈ˲Å)¡£½ÌʦÀ´Ô´ÓëÆóÒµ¡¢Ñ§Ô±À´Ô´ÓëÆóÒµ¡¢È˲ÅÊäË͵½ÆóÒµÊÇËûÃǰìѧµÄÊֶΡ£¾¡¹Ü¸÷¸öÈçÓêºó´ºËñ°ã³öÏÖµÄÈí¼þѧԺ¿ÚºÅ²î ²»¶à£¬µ«¿ÖÅ´ó¶àÖ»ÊÇΪÁËȦ ......
°æÈ¨ËùÓУ¬×ªÔØ×¢Ã÷³ö´¦£¡
×ªÔØÇëЯ´ø´ËÐÅÏ¢£ºhuangfox
-----------------------------------------------------------------
³éÏ󹤳§ºÍ¹¤³§·½·¨ ¸Õ¿ªÊ¼ºÜÈÝÒ×»ìÏý£¬ÖÁÉÙÎÒÊÇÕâÑùµÄ£¡
²»¹ýËûÃDzúÉúµÄÔµÓÉÀ´¿´£¬»¹ÊÇ¿ÉÒԺúÃÇø·ÖµÄ¡£
1.¹¤³§·½·¨£ºÊÇΪÁ˱ÜÃâÓ¦ÓÃÖ±½ÓʵÀýÀà²ã´Î½á¹¹ÖеľßÌåÀ࣬Ìṩһ¸ö·½·¨¸ù¾ÝÔËÐÐÇé ......
½ñÌ츴ϰÁËÒ»ÏÂÕâЩ֪ʶ£¬Ë³±ã×öÁËϱʼÇ.
1.¼Ä´æÆ÷£º×î¿ìµÄ´æ´¢Çø, ÓɱàÒëÆ÷¸ù¾ÝÐèÇó½øÐзÖÅä,ÎÒÃÇÔÚ³ÌÐòÖÐÎÞ·¨¿ØÖÆ.
2. Õ»£º´æ·Å»ù±¾ÀàÐ͵ıäÁ¿Êý¾ÝºÍ¶ÔÏóµÄÒýÓ㬵«¶ÔÏó±¾Éí²»´æ·ÅÔÚÕ»ÖУ¬¶øÊÇ´æ·ÅÔÚ¶Ñ£¨new ³öÀ´µÄ¶ÔÏ󣩻òÕß³£Á¿³ØÖУ¨×Ö·û´®³£Á¿¶ÔÏó´æ·ÅÔÚ³£Á¿³ØÖС££©
3. ¶Ñ£º´æ·ÅËùÓÐnew³öÀ´µÄ¶ÔÏó¡£
4. ¾²Ì¬Óò£ ......
Java ASM
ÎÒÃÇÖªµÀJavaÊǾ²Ì¬ÓïÑÔ£¬¶øpython¡¢rubyÊǶ¯Ì¬ÓïÑÔ£¬Java³ÌÐòÒ»µ©Ð´ºÃºÜÄÑÔÚÔËÐÐʱ¸ü¸ÄÀàµÄÐÐΪ£¬¶øpython¡¢ruby¿ÉÒÔ¡£
²»¹ý»ùÓÚbytecode²ãÃæÉÏÎÒÃÇ¿ÉÒÔ×öһЩÊֽţ¬À´Ê¹Java³ÌÐò¶àһЩÁé»îÐÔºÍMagic£¬ASM¾ÍÊÇÕâÑùÒ»¸öÓ¦Óù㷺µÄ¿ªÔ´¿â¡£
ASM is a Java bytecode manipulation framework. It can be used t ......