µ÷ÓÃJava±àÒëÆ÷API±àÒëJavaÔ´´úÂë
Compiling with the Java Compiler API
µ÷ÓÃJava±àÒëÆ÷API±àÒëJava
´ÓµÚÒ»Ì쿪ʼ,±ê×¼Javaƽ̨¾ÍȱÉÙÄܹ»±»µ÷ÓÃ,È¥²úÉúJava×Ö½ÚÂëµÄ±àÒëÆ÷½Ó¿Ú. ʹÓÃSunʵÏֵį½Ì¨,Ò»¸öÓû§¿ÉÒÔͨ¹ý·Ç±ê×¼µÄ com.sun.tools.javac °üÖеÄMain class È¥±àÒëÄãµÄ´úÂë (Äã¿ÉÒÔÔÚlib×ÓĿ¼Ï嵀 tools.jar ÎļþÀïÕÒµ½Ëü). È»¶øÕâ¸ö°ü²¢Ã»ÓÐÌṩһ¸ö±ê×¼µÄ¹«¿ªµÄ±à³Ì½Ó¿Ú. ʹÓÃÆäËüʵÏÖµÄÓû§±ØÈ»²»ÄÜ·ÃÎÊÕâ¸öÀà. ʹÓÃJava SE 6ºÍÔÚJSR-199Öж¨ÒåµÄËüµÄеÄJava±àÒëÆ÷½Ó¿Ú,Äã¿ÉÒÔ´ÓÄã×Ô¼ºµÄÓ¦ÓóÌÐòÀï·ÃÎÊjavac±àÒ빤¾ßÁË.
ÓÐÁ½ÖÖ·½Ê½Ê¹ÓÃÕâÖÖ¹¤¾ß. Ò»ÖÖÊǼòµ¥µÄ,Ò»ÖÖÊÇÉÔ΢¸´Ôӵ㵫ӵÓиü¶àÑ¡ÏîµÄ. ÄãÊ×ÏȽ«»áÓýϼòµ¥µÄÒ»ÖÖÈ¥±àÒë "Hello, World"³ÌÐò,¾ÍÊÇÏÂÃæµÄÕâ¸ö:
public class Hello {
public static void main(String args[]) {
System.out.println("Hello, World");
}
}
ÒªÏë´ÓJava³ÌÐòÀïµ÷ÓÃJava±àÒëÆ÷,ÄãÐèÒª·ÃÎÊJavaCompiler ½Ó¿Ú. ³ý´ËÍâ,ͨ¹ý·ÃÎÊÕâ¸ö½Ó¿Ú,Äã¿ÉÒÔÉèÖÃÔ´´úÂëµÄ·¾¶,classpath,ºÍÄ¿±êĿ¼. ͨ¹ýÖ¸¶¨¿É±àÒëµÄÎļþΪ JavaFileObjectinstance ,Äã¿ÉÒÔ½«ËüÃÇÈ«²¿±àÒë. È»¶ø,Äã²¢²»ÐèÒª¶Ô JavaFileObject Á˽â¶àÉÙ.
¿ÉÒÔʹÓà ToolProvider ÀàÈ¥ÇëÇó theJavaCompiler ½Ó¿ÚµÄȱʡʵÏÖ. Õâ¸ö ToolProvider ÀàÌṩÁËÒ»¸ö getSystemJavaCompiler() ·½·¨, Ëü·µ»ØÒ»¸ö JavaCompiler ½Ó¿ÚµÄʵÀý.
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
ʹÓà JavaCompiler ÔËÐбàÒë×î¼òµ¥µÄ·½·¨Êǵ÷ÓÃÔÚÕâ¸ö½Ó¿Ú¹¤¾ßÀﶨÒåµÄ run() ·½·¨,ËüµÄʵÏÖÊÇ:
int run(InputStream in,
OutputStream out,
OutputStream err,
String... arguments)
·Ö±ðΪǰÈý¸öȱʡ²ÎÊý System.in, System.out, and System.err ´«Èë null Öµ. ²ÎÊý¼¯ String ¶ÔÏó±íʾ×Å´«Èë±àÒëÆ÷µÄÎļþµÄÃû³Æ.
ÕâÑù,ÄãÓ¦¸ÃÏñÏÂÃæÕâÑùÈ¥±àÒëÇ°ÃæÏÔʾµÄ Hello Ô´³ÌÐò:
int results = tool.run(null, null, null, "Hello.java");
¼ÙÉèûÓбàÒë´íÎó,ÕâÑù»áÔÚÄ¿±êĿ¼Àï²úÉúÒ»¸ö Hello.classÎļþ. Èç¹ûÕâÀïÓдíÎó, run() ·½·¨»á°ÑËüÊä³öµ
Ïà¹ØÎĵµ£º
ÀàµÄ³õʼ»¯ºÍ¶ÔÏó³õʼ»¯ÊÇ JVM ¹ÜÀíµÄÀàÐÍÉúÃüÖÜÆÚÖзdz£ÖØÒªµÄÁ½¸ö»·½Ú£¬Google ÁËÒ»±éÍøÂ磬ÓйØÀà×°ÔØ»úÖÆµÄÎÄÕµ¹ÊDz»ÉÙ£¬È»¶øÀà³õʼ»¯ºÍ¶ÔÏó³õʼ»¯µÄÎÄÕ²¢²»¶à£¬ÌرðÊÇ´Ó×Ö½ÚÂëºÍ JVM ²ã´ÎÀ´·ÖÎöµÄÎÄÕ¸üÊÇÏÊÓÐËù¼û¡£
±¾ÎÄÖ÷Òª¶ÔÀàºÍ¶ÔÏó³õʼ»¯È«¹ý³Ì½øÐзÖÎö£¬Í¨¹ýÒ»¸öʵ¼ÊÎÊÌâÒýÈ룬½«Ô´´úÂëת»»³É JVM ×Ö½ÚÂëºó£¬ ......
´ÓCore Javaµ½Thinking in Java
JavaÊÇÒ»ÖÖ¿çÆ½Ì¨¡¢ÃæÏò¶ÔÏ󡢸øÓèÍøÂç¼°Ö§³Ö¶àýÌåµÄ±à³ÌÓïÑÔ£¬²¢¿É²åÈëµ½HTMLÎĵµÖС£
1.ÔÚhtmlÎĵµÖÐÌí¼ÓÁ´½Ó£¬¼´ÔÚ<body>±êÇ©¼ä²åÈëÒÔÏ´úÂ룺
<applet code=ÀàÃû.class width=¿í¶È height=¸ß¶È></applet>
2.·â×°ÊÇÒ»ÖÖ½«´úÂë¼°Æä´¦ÀíµÄÊý¾Ý°ó¶¨ÔÚÒ»Æð± ......
Ŀ¼
¡¡¡¡Ç°ÑÔ
¡¡¡¡Ò». Java ÎĵµºÍ javadoc
¡¡¡¡¶þ. Îĵµ×¢Ê͵ĸñʽ
¡¡¡¡¡¡¡¡1. Îĵµ×¢Ê͵ĸñʽ»¯
¡¡¡¡¡¡¡¡2. Îĵµ×¢Ê͵ÄÈý²¿·Ö
¡¡¡¡Èý. ʹÓà javadoc ±ê¼Ç
¡¡¡¡¡¡¡¡1. @see µÄʹÓÃ
¡¡¡¡¡¡¡¡2. ʹÓà @author¡¢@version ˵Ã÷Àà
¡¡¡¡¡¡¡¡3. ʹÓà @param¡¢@return ºÍ @exception ˵Ã÷·½·¨
¡¡¡ ......
µÚÒ»´Î³¢ÊÔдѧϰ±Ê¼Ç£¬ÒòΪ¾õµÃÒÔǰѧ¹ýµÄ¶«Î÷³¤Ê±¼ä²»ÓþͶ¼ÍüÁË¡£Ò²²»ÖªµÀÕâÑù×öÖµ²»ÖµµÃ£¬ÒòΪ±Ï¾¹Ð´Ñ§Ï°±Ê¼Ç»á»¨·ÑÒ»¶¨µÄʱ¼ä£¬¶ÔÓÚÒ»¸öÈí¼þ¹¤³ÌרҵµÄ´óÈýѧÉúÀ´Ëµ£¬¿Î³Ì·±ÖØÊÇÖÚËùÖÜÖªµÄ¡£¶øÇÒÎÒµÄÎıÊÓÖ²»ºÃ£¬Ê±³£Ð´×ÅдמͲ»ÖªµÀ¸ÃÕâôдÁË£¬ÊôÓÚÄÇÖÖÐÄÖª¶ÇÃ÷¾ÍÊÇ˵²»³öÀ´µÄÀàÐÍ¡£²»¹ý£ ......
JavaÈÕ»ýÔÂÀÛ-1£ºJavaÖÐbooleanÀàÐ͵ÄλÔËËã
1. Ê×ÏȻعËÒ»ÏÂjavaÖеÄ8Öлù±¾ÀàÐͼ°Æä´æ´¢ËùÕ¼ÓõÄbitÊý¡£
ÀàÐÍ
bitÊý
byte
8
short
16
int
32
float
32
long
64
double
64
char
16
boolean
1
2. ÔٻعËÒ»ÏÂjavaµÄÔËËã·ûºÍÓÅÏȼ ......