µ÷ÓÃ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() ·½·¨»á°ÑËüÊä³öµ
Ïà¹ØÎĵµ£º
Java NIO APIÏê½â
ÔÚJDK
1.4ÒÔÇ°£¬JavaµÄIO²Ù×÷¼¯ÖÐÔÚjava.ioÕâ¸ö°üÖУ¬ÊÇ»ùÓÚÁ÷µÄ×èÈû£¨blocking£©API¡£¶ÔÓÚ´ó¶àÊýÓ¦ÓÃÀ´Ëµ£¬ÕâÑùµÄAPIʹÓúܷ½
±ã£¬È»¶ø£¬Ò»Ð©¶ÔÐÔÄÜÒªÇó½Ï¸ßµÄÓ¦Óã¬ÓÈÆäÊÇ·þÎñ¶ËÓ¦Óã¬ÍùÍùÐèÒªÒ»¸ö¸üΪÓÐЧµÄ·½Ê½À´´¦ÀíIO¡£´ÓJDK 1.4Æð£¬NIO
API×÷Ϊһ¸ö»ùÓÚ»º³åÇø£¬²¢ÄÜÌṩ·Ç×èÈû(non-blo ......
javaÕýÔò±í´ïʽͨ¹ýjava.util.regex°üϵÄPatternÀàÓëMatcherÀàʵÏÖ(½¨ÒéÔÚÔĶÁ±¾ÎÄʱ,´ò¿ªjava APIÎĵµ,µ±½éÉܵ½Äĸö·½·¨Ê±,²é¿´java APIÖеķ½·¨ËµÃ÷,Ч¹û»á¸ü¼Ñ).
PatternÀàÓÃÓÚ´´½¨Ò»¸öÕýÔò±í´ïʽ,Ò²¿ÉÒÔ˵´´½¨Ò»¸öÆ¥Åäģʽ,ËüµÄ¹¹Ôì·½·¨ÊÇ˽ÓеÄ,²»¿ÉÒÔÖ±½Ó´´½¨,µ«¿ÉÒÔͨ¹ýPattern.complie(String regex)¼òµ¥¹¤³§·½· ......
×÷Îı¾±à¼Æ÷µÄʱºò£¬³·Ïú(undo)¡¢»Ö¸´(redo)ÊDZز»¿ÉÉÙµÄÁ½¸ö¹¦ÄÜ¡£ÊµÏÖÕâ¸ö¹¦ÄÜ£¬ÒªÓõ½javax.swing.undo°üÖеÄUndoManagerÀà¡£
UndoManagerÀàÓÐÈçϳ£Ó÷½·¨£º
boolean canUndo() ——ÅжÏÄÜ·ñ½øÐг·Ïû²Ù×÷£¬¿ÉÒÔÔò·µ»Øtrue¡£
boolean canRedo() ——ÅжÏÄÜ·ñ½øÐлָ´²Ù×÷£¬¿ÉÒÔÔò·µ ......
Java Singleton
ģʽ(µ¥Éíģʽ,µ¥Ì¬Ä£Ê½)ÊÇÒ»ÖÖ´´½¨ÐÍÉè¼Æģʽ¡£ÓÃÀ´±£Ö¤ÔÚÔËÐеÄÓ¦ÓóÌÐòÖУ¬Ò»¸öClassÖ»ÊÇʵÀý»¯Ò»´Î£¬Ò²¾ÍÊÇÖ»ÓÐÒ»¸öÏàÓ¦µÄ¶ÔÏó´æÔÚ¡£ÔÚ
web ³ÌÐòÖÐÎÒÃÇ»áÓÃÒ»¸öºËÐĵķÖÅ书ÄܵÄServlet³ÌÐò£¬ÔÚÕâÀïÎÒÃǾͿÉÒÔÔËÓÃÕâÖÖÉè¼ÆģʽÁË¡£ ......