Java
9 °üº¬Á˷ḻµÄÌØÐÔ¼¯¡£ËäÈ»Java 9ûÓÐеÄÓïÑÔ¸ÅÄµ«ÊÇÓпª·¢Õ߸ÐÐËȤµÄеÄAPIºÍÕï¶ÏÃüÁî¡£
ÎÒÃǽ«¿ìËٵģ¬×ÅÖØµÄä¯ÀÀÆäÖеöÐÂÌØÐÔ£»

Ä£¿é»¯ÏµÍ³¨CJigsaw ÏîÄ¿
Ä£¿é»¯ÊÇÒ»¸öºÜͨÓõĸÅÄî¡£ÔÚÈí¼þÖУ¬Ä£¿é»¯¿ÉÒÔÔËÓõ½±àдºÍʵÏÖÒ»¸ö³ÌÐòºÍ¼ÆËãϵͳ£¬ËûÃǶ¼ÊÇ×÷Ϊ¶ÀÁ¢µÄÄ£¿é£¬¶ø²»ÊÇ×÷Ϊһ¸öµ¥Ò»µÄºÍÍêÕûµÄÉè¼Æ¡£
Java 9ÖÐÖ÷ÒªµÄ±ä»¯ÊÇÒѾʵÏÖµÄÄ£¿é»¯ÏµÍ³¡£Ä£¿é»¯µÄÒýÈëʹµÃJDK¿ÉÒÔÔÚ¸üСµÄÉ豸ÖÐʹÓᣲÉÓÃÄ£¿é»¯ÏµÍ³µÄÓ¦ÓóÌÐòÖ»ÐèÒªÕâЩӦÓóÌÐòËùÐèµÄÄDz¿·ÖJDKÄ£¿é£¬¶ø·ÇÊÇÕû¸öJDK¿ò¼ÜÁË¡£Ä£¿é»¯ÏµÍ³Ò²¿ÉÒÔ½«¹«¹²µÄÀà·â×°µ½Ò»¸öÄ£¿éÖС£Òò´ËÒ»¸ö·â×°ÔÚÄ£¿éÖе͍ÒåΪpublicµÄÀ಻ÄÜÔÙÈκεط½Ê¹Ó㬳ý·ÇÒ»¸öÄ£¿éÏÔʽµÄ¶¨ÒåÁËÕâ¸öÄ£¿é¡£ÓÉÓÚJava
9µÄÕâ¸ö±ä»¯£¬JavaÄÚ²¿µÄAPI£¨ÀýÈçcom.sun.*£©Ä¬ÈÏÇé¿öÏÂÊDz»ÄÜʹÓõġ£
¼ò¶øÑÔÖ®£¬ËùÓеÄÄ£¿é½«ÐèÒªÔÚËùνµÄmodule-info.javaÎļþÖнøÐÐÃèÊö£¬Õâ¸öÎļþÊÇλÓÚJava´úÂë½á¹¹µÄ¶¥²ã¡£
module me.aboullaite.java9.modules.car { requires me.aboullaite.java9.modules
.engines;//ÒÀÀµµÄÄ£¿é exports me.aboullaite.java9.modules.
car.handling;//ÔÚÄ£¿éÖе¼³ö°ü } |
ÎÒÃǵÄÄ£¿écar£¨Æû³µ£©ÐèÒªÒÀÀµ+Ä£¿éengine£¨ÒýÇæ£©ºÍÐèÒªµ¼³öhandling£¨²Ù×Ý£©°ü¡£
ÐèÒª¸ü¶àÉîÈëµÄÀý×Ó¿ÉÒԲ鿴OpenJDKÖÐÏîÄ¿Jigsaw£ºÄ£¿é»¯ÏµÍ³¿ìËÙÈëÃÅ¡£
JShell¨CJava 9 REPL
Äã¿ÉÄÜÎÊ£º¡°REPLÊÇʲô¡±?REPLÊÇÒ»ÖÖ¿ìËÙÔËÐÐÓï¾äµÄÃüÁîÐй¤¾ß¡£
ÔÚJavaÖУ¬Èç¹ûÄãÏëÖ´ÐÐÒ»¸ö¼òµ¥µÄÓï¾ä£¬ÎÒÃÇҪô´´½¨Ò»¸ö´ømain·½·¨µÄÀ࣬Ҫô´´½¨Ò»¸ö¿ÉÒÔÖ´ÐеÄTestÀà¡£µ±ÄãÕýÔÚÆô¶¯Java³ÌÐòµÄʱºò£¬Èç¹ûÄãÏëÖ´ÐÐijЩÓï¾ä²¢ÇÒÏëÁ¢¿Ì¿´¼ûÖ´Ðнá¹û£¬ÉÏÃæµÄ×ö·¨¿´ÆðÀ´²»ÊÇÄÇôÓÐÓÃÁË¡£
JShellÊÔͼȥ½â¾öÕâ¸öÎÊÌâ¡£Java¿ª·¢Õß¿ÉÒÔÀûÓÃJShellÔÚûÓд´½¨ÀàµÄÇé¿öÏÂÖ±½ÓÉùÃ÷±äÁ¿£¬¼ÆËã±í´ïʽ£¬Ö´ÐÐÓï¾ä¡£JShellÒ²¿ÉÒÔ´ÓÎļþÖмÓÔØÓï¾ä»òÕß½«Óï¾ä±£´æµ½ÎļþÖС£²¢ÇÒJShellÒ²¿ÉÒÔÊÇtab¼ü½øÐÐ×Ô¶¯²¹È«µÄÌØÐÔ¡£
¼¯ºÏ¹¤³§·½·¨
ÔÚJava 9֮ǰ£¬JavaÖ»ÄÜÀûÓÃһЩʵÓ÷½·¨£¨ÀýÈ磺Collections.unmodifiableCollection(Collection<?
extends T> c)£©´´½¨Ò»¸ö²»¿ÉÐÞ¸ÄÊÓͼµÄ¼¯ºÏ¡£ÀýÈ磬ÎÒÃÇ¿ÉÒÔÔÚJava 8ÖÐʹÓÃÒ»ÌõÈçÏÂËùʾµÄÓï¾ä£¬´´½¨Ò»¸öCollectionµÄ²»¿ÉÐ޸ĵÄÊÓͼ¡£ËäÈ»ÕâÊÇ×î¼òµ¥µÄ´´½¨·½Ê½£¬µ«ÊÇ¿´ÆðÀ´ºÜÔã¸â£¡²»ÊÇÂð£¿
Map<String, String> immutableMap = Collections.unmodifiableMap( new HashMap<String, String>() {{ put("key1", "Value1"); put("key2", "Value2"); put("key3", "Value3"); }}); |
ÏÖÔÚ£¬Java 9ÒýÈëÁËһЩÓÐÓõŤ³§·½·¨À´´´½¨²»¿ÉÐ޸ĵļ¯ºÏ¡£ÎÒÃÇÏÖÔÚÔÚJava 9Öд´½¨²»¿ÉÐ޸ĵÄMap¼¯ºÏ£¬ÈçÏÂËùʾ¡£
Map<String, String> immutableMap =
Map.of("key1", "Value1", "key2", "Value2"
£¬"key3", "Value3"); |
ÏÂÃæÊǹ¤³§·½·¨µÄÀý×Ó£º
// empty immutable collections
²»¿ÉÐ޸ĵĿռ¯ºÏ List<String> emptyImmutableList = List.of(); Set<String> emptyImmutableSet = Set.of(); Map emptyImmutableMap = Map.of();
// immutable collections ²»¿ÉÐ޸ĵļ¯ºÏ
List<String> immutableList = List.of("one",
"two");
Set<String> immutableSet = Set.of("value1",
"value2");
Map<String, String> immutableMap = Map.of
("key1", "Value1", "key2",
"Value2", "key3", "Value3"); |
½Ó¿ÚÖеÄ˽Óз½·¨
Java 8µÄ½Ó¿ÚÒýÈëÁËĬÈÏ·½·¨ºÍ¾²Ì¬·½·¨¡£ËäÈ»Java 8Ê״μƻ®ÊµÏÖ½Ó¿ÚµÄ˽Óз½·¨£¬È´ÊÇÔÚJava
9ÖÐʵÏÖ¡£Ä¬ÈÏ·½·¨ºÍ¾²Ì¬·½·¨¿ÉÒÔ¹²Ïí½Ó¿ÚÖеÄ˽Óз½·¨£¬Òò´Ë±ÜÃâÁË´úÂëÈßÓ࣬ÕâҲʹ´úÂë¸ü¼ÓÇåÎú¡£Èç¹û˽Óз½·¨ÊǾ²Ì¬µÄ£¬ÄÇÕâ¸ö·½·¨¾ÍÊôÓÚÕâ¸ö½Ó¿ÚµÄ¡£²¢ÇÒûÓо²Ì¬µÄ˽Óз½·¨Ö»Äܱ»ÔÚ½Ó¿ÚÖеÄʵÀýµ÷Óá£
interface InterfaceWithPrivateMethods { private static String staticPrivate() { return "static private"; }
private String instancePrivate() {
return "instance private";
}
default void check() {
String result = staticPrivate();
InterfaceWithPrivateMethods pvt = new
InterfaceWithPrivateMethods() {
// anonymous class ÄäÃûÀà
};
result = pvt.instancePrivate();
}
} |
ÏìӦʽÁ÷
JDK9ÖеÄFlow API¶ÔÓ¦ÏìӦʽÁ÷¹æ·¶£¬ÏìӦʽÁ÷¹æ·¶ÊÇÒ»ÖÖÊÂʵ±ê×¼¡£JEP 266°üº¬ÁËÒ»×é×îС½Ó¿Ú¼¯ºÏ£¬Õâ×é½Ó¿ÚÄܲ¶»ñºËÐĵÄÒì²½·¢²¼Óë¶©ÔÄ¡£Ï£ÍûÔÚδÀ´µÚÈý·½Äܹ»ÊµÏÖÕâЩ½Ó¿Ú£¬²¢ÇÒÄܹ²ÏíÆä·½Ê½¡£
java.util.concurrent.Flow°üº¬ÒÔÏÂ4¸ö½Ó¿Ú£º
1.Flow.Processor£¨´¦ÀíÆ÷£©
2. Flow.Publisher£¨·¢²¼Õߣ©
3.Flow.Subscriber£¨¶©ÔÄÕߣ©
4. Flow.Subscription£¨¶©ÔĹÜÀíÆ÷£©
ÕâЩ½Ó¿Ú¶¼Ö§³ÖÏìӦʽÁ÷·¢²¼-¶©ÔÄ¿ò¼Ü¡£Java 9Ò²ÌṩÁËʵÓÃÀàSubmissionPublisher¡£Ò»¸ö·¢²¼Õß²úÉúÒ»¸ö»ò¶à¸öÎïÆ·£¬ÕâЩÎïÆ·ÓÉÒ»¸ö»ò¶à¸öÏû·ÑÕßÏûºÄ¡£²¢ÇÒ¶©ÔÄÕßÓɶ©ÔĹÜÀíÆ÷¹ÜÀí¡£¶©ÔĹÜÀíÆ÷Á¬½Ó·¢²¼ÕߺͶ©ÔÄÕß¡£
¶à·Ö±æÂÊͼÏñAPI¨CJEP 251
Ä¿±êÊǶ¨Òå¶à·Ö±æÂÊͼÏñAPI£¬ÕâÑù¿ª·¢Õß¾ÍÄܺÜÈÝÒ׵IJÙ×÷ºÍչʾ²»Í¬·Ö±æÂʵÄͼÏñÁË¡£
Õâ¸öеÄAPI¶¨ÒåÔÚjava.awt.image°üÖУ¬Õâ¸öAPIÄܸøÎÒÃÇ´øÀ´ÈçϵİïÖú£º
1.½«²»Í¬·Ö±æÂʵÄͼÏñ·â×°µ½Ò»ÕÅ£¨¶à·Ö±æÂʵģ©Í¼ÏñÖУ¬×÷ΪËüµÄ±äÌå¡£
2.»ñÈ¡Õâ¸öͼÏñµÄËùÓбäÌå¡£
3. »ñÈ¡ÌØ¶¨·Ö±æÂʵÄͼÏñ±äÌå¨C±íʾһÕÅÒÑÖª·Ö±æÂʵ¥Î»ÎªDPIµÄÌØ¶¨³ß´ç´óСµÄÂ߼ͼÏñ£¬²¢ÇÒÕâÕÅͼÏñÊÇ×î¼ÑµÄ±äÌå¡£
»ùÓÚµ±Ç°ÆÁÄ»·Ö±æÂÊ´óСºÍÔËÓõÄͼÏñת»»Ëã·¨£¬java.awt.GraphicsÀà¿ÉÒÔ´Ó½Ó¿ÚMultiResolutionImage»ñÈ¡ËùÐèµÄ±äÌå¡£java.awt.image.AbstractMultiResolutionImageÀàÌṩÁËava.awt.image.AbstractMultiResolutionImage
ĬÈÏʵÏÖ¡£AbstractMultiResolutionImageµÄ»ù´¡ÊµÏÖÊÇjava.awt.image.BaseMultiResolutionImage¡£
½ø³ÌAPIµÄ¸Ä½ø
Æù½ñΪֹ£¬Í¨¹ýJavaÀ´¿ØÖƺ͹ÜÀí²Ù×÷ϵͳµÄ½ø³ÌµÄÄÜÁ¦ÓÐÏÞ¡£ÀýÈ磬ΪÁË×öһЩ¼òµ¥µÄÊÂÇ飬Ïñ»ñÈ¡½ø³ÌµÄPID£¬ÄãҪôÐèÒª·ÃÎʱ¾µØ´úÂ룬ҪôʹÓÃijÖÖÁÙʱ½â¾ö·½°¸¡£²»½öÈç´Ë£¬Ã¿¸ö£¨ÏµÍ³£©Æ½Ì¨ÐèÒªÒ»¸ö²»Í¬ÊµÏÖÀ´È·±£ÄãÄÜ»ñµÃÕýÈ·µÄ½á¹û¡£
ÔÚJava 9ÖУ¬ÆÚÍû´úÂëÄÜ»ñÈ¡Linux PID£¬ÏÖÔÚÊÇÈçÏ·½Ê½£º
public static void main(String[] args)
throws Exception { Process proc = Runtime.getRuntime()
.exec(new String[]{ "/bin/sh", "-c",
"echo $PPID" });
if (proc.waitFor() == 0)
{
InputStream in = proc.getInputStream();
int available = in.available();
byte[] outputBytes = new byte[available];
in.read(outputBytes);
String pid = new String(outputBytes);
System.out.println("Your pid is "
+ pid);
}
} |
Äã¿ÉÒԱ任Èçϵķ½Ê½£¨Í¬ÑùÖ§³ÖËùÓеIJÙ×÷ϵͳ£©£º
System.out.println("Your pid is "
+ Process.getCurrentPid()); |
Try-With-Resources
ÔÚJava 7ÖУ¬try-with-resoucesÓï·¨ÒªÇóΪÿһ¸ö×ÊÔ´ÉùÃ÷Ò»¸öеıäÁ¿£¬¶øÇÒÕâЩ×ÊÔ´ÓÉtry-with-resourcesÓï¾ä½øÐйÜÀí¡£
ÔÚ¾ÍJava 9ÖУ¬ÓÐÁíÍâÒ»¸ö¸Ä½ø£ºÈç¹ûÒ»¸ö×ÊÔ´±»final»òÕßµÈЧÓÚfinal±äÁ¿ÒýÓã¬ÔòÔÚ²»ÐèÒªÉùÃ÷Ò»¸öеıäÁ¿µÄÇé¿öÏ£¬try-with-resources¾Í¿ÉÒÔ¹ÜÀíÕâ¸ö×ÊÔ´¡£
MyAutoCloseable mac = new MyAutoCloseable(); try (mac) { // do some stuff with mac }
try (new MyAutoCloseable() { }.
finalWrapper.finalCloseable) {
// do some stuff with finalCloseable
} |
×êʯ£¨diamond£©²Ù×÷·û·¶Î§µÄÑÓÉì
Java 7¸ø³öµÄ×êʯ²Ù×÷·ûʹÎÒÃDZàд´úÂë¸ü¼òµ¥ÁË¡£ÔÚÏÂÃæµÄÀý×ÓÖУ¬Äã¿ÉÒÔ¿´¼ûJava 7ÖÐList£¨ÁÐ±í£©µÄ¿É¶ÁÐÔ¸üÇ¿ÁË£¬²¢ÇÒʹ´úÂë¸ü¼ÓµÄ¼ò½àÁË¡£
List<String> preJava7 = new ArrayLis
t<String>();//java 7 ֮ǰµÄд·¨ List<String> java7 = new ArrayList<>
();//java 7 Ö®ºóµÄд·¨ |
µ«ÊÇJava 7ÖÐ×êʯ²Ù×÷·û²»ÔÊÐíÔÚÄäÃûÀàÉÏʹÓᣵ«ÔÚJava 9ÖиÄÉÆÁËÕâÒ»Çé¿ö£¬ÔÊÐí×êʯ²Ù×÷·ûÔÚÄäÃûÀàÉÏʹÓá£ÏÂÃæµÄÀý×ÓÖ»ÓÐÔÚJava
9ÖвÅÄÜͨ¹ý±àÒë¡£
List<String> list = new ArrayList<>(){ }; |
ÔöÇ¿µÄ×¢ÊÍDeprecated
×¢ÊÍ@Deprecated¿ÉÒÔ±ê¼ÇJava API¡£×¢ÊÍ@DeprecatedÓкܶàÖÖº¬Ò壬ÀýÈçËü¿ÉÒÔ±íʾÔÚ²»Ô¶µÄ½«À´µÄij¸öʱ¼ä£¬±»±ê¼ÇµÄAPI½«»á±»ÒƳý¡£ËüÒ²¿ÉÒÔ±íʾÕâ¸öAPIÒѾ±»ÆÆ»µÁË£¬²¢²»Ó¦¸ÃÔÙ±»Ê¹Óá£Ëü»¹ÓÐÆäËüºÜ¶àº¬Ò塣ΪÁËÌṩ¸ü¶àÓйØ@DeprecatedµÄÐÅÏ¢£¬@DeprecatedÌí¼ÓÁËforRemovalÔªËØºÍsinceÔªËØ¡£
Java SE 9 ÖÐÒ²ÌṩÁËɨÃèjarÎļþµÄ¹¤¾ßjdeprscan¡£Õâ¿î¹¤¾ßÒ²¿ÉÒÔɨÃèÒ»¸ö¾ÛºÏÀ࣬Õâ¸öÀàʹÓÃÁËJava
SEÖеÄÒÑ·ÏÆúµÄAPIÔªËØ¡£ Õâ¸ö¹¤¾ß½«»á¶ÔʹÓÃÒѾ±àÒëºÃµÄ¿âµÄÓ¦ÓóÌÐòÓаïÖú£¬ÕâÑùʹÓÃÕ߾Ͳ»ÖªµÀÕâ¸öÒѾ±àÒëºÃµÄ¿âÖÐʹÓÃÁËÄÇЩÒÑ·ÏÆúµÄAPI¡£
ͳһµÄJVMÈÕÖ¾
Èç½ñ£¬ÎÒÃǺÜÄÑÖªµÀµ¼ÖÂJVMÐÔÄÜÎÊÌâºÍµ¼ÖÂJVM±ÀÀ£µÄ¸ù±¾ÔÒò¡£½â¾öÕâ¸öÎÊÌâµÄÒ»¸ö·½·¨ÊǶÔËùÓеÄJVM×é¼þÒýÈëÒ»¸öµ¥Ò»µÄϵͳ£¬ÕâЩJVM×é¼þÖ§³ÖϸÁ£¶ÈµÄºÍÒ×ÅäÖõÄJVMÈÕÖ¾¡£Ä¿Ç°£¬²»Í¬µÄJVM×é¼þ¶ÔÓÚÈÕ־ʹÓõÄÊDz»Í¬µÄ»úÖÆºÍ¹æÔò£¬ÕâʹµÃJVMÄÑÒÔ½øÐе÷ÊÔ¡£
×¢ÊÍSafeVarargs·¶Î§µÄÑÓÉì
Ö±µ½Java 8£¬@SafeVarargs²ÅÄÜÔÚ¾²Ì¬·½·¨¡¢final·½·¨ºÍ¹¹ÔìÆ÷ÉÏʹÓᣵ«ÊÇÕâЩ·½·¨»òÕß¹¹ÔìÆ÷ÊDz»Äܱ»¸²¸ÇµÄ¡£ÕâЩ·½·¨ÖÐȱÉÙÁíÒ»¸ö²»Äܱ»¸²¸ÇµÄ·½·¨£¬Õâ¸ö·½·¨¾ÍÊÇ˽Óз½·¨¡£Java
9¿ÉÒÔ½«@SafeVarargsÌí¼Óµ½Ë½Óз½·¨ÉÏ¡£ÏÂÃæµÄÀý×ÓÔÚJava 9ÖÐÊÇÕýÈ·µÄ£¬µ«ÊÇÔÚJava
8ÖоͻáÅ׳ö±àÒëʱ´íÎó£º ×¢ÊÍ@SafeVarargs²»ÄÜÔÚ·ÇfinalµÄʵÀý·½·¨iAmSafeVaragrsMethodÉÏʹÓá£
@SafeVarargs private void iAmSafeVaragrsMethod
(String... varagrgs) { for (String each: varagrgs) { System.out.println(each); } } |
HTTP 2 ¿Í»§¶Ë
Java 9²ÉÓÃÁËȫеÄHTTP¿Í»§¶ËAPI£¬ÕâЩAPIÖ§³ÖHTTP/2ÐÒéºÍWebSocketÐÒ飬²¢ÇÒÌæ»»ÁËÒÅÁôµÄHTTPURLConnection
API¡£ÕâЩ¸Ä±ä²¢²»Ó¦¸ÃÔÚJava 9ÖÐÍê³É¡£ÕâЩAPI¿ÉÒÔ´ÓIncubator£¨·õ»¯Æ÷£©Ä£¿éÖлñÈ¡¡£Òò´ËÔÚĬÈÏÇé¿öÏ£¬Õâ¸öÄ£¿éÊDz»Äܸù¾Ýclasspath»ñÈ¡µÄ£¬ÐèҪʹÓÃ--add-modulesÃüÁîÑ¡ÏîÅäÖÃÕâ¸öÄ£¿é£¬½«Õâ¸öÄ£¿éÌí¼Óµ½classpathÖС£
ÎÒÃÇ´´½¨Ò»¸öHTTPRequestÇëÇóºÍ»ñÈ¡Òì²½µÄÏìÓ¦:
URI testPageURI = new URI("http://
127.0.0.1:8080/testPage"); CompletableFuture<HttpResponse>
nonBlockingResponse = HttpRequest .create(testPageURI) .GET().responseAsync(); int tries = 0; while(!nonBlockingResponse.isDone()
&& tries++ < 5) { Thread.sleep(5); } if
(nonBlockingResponse.isDone()) { Http
Response response
= nonBlockingResponse.get(); System.
out.println("status
code : " + response.statusCode() + "
--> " + response
.body(HttpResponse.asString())); } else { nonBlockingResponse.cancel(true); System.out.println("Cancelling, coul
d not get response"); } |
HTML5·ç¸ñµÄJava°ïÖúÎĵµ
Java 8ÒÔ¼°Ö®Ç°µÄ°æ±¾Éú³ÉµÄJava°ïÖúÎĵµÊÇÔÚHTML 4ÖУ¬¶øHTML 4ÒѾÊǺܾõıê×¼ÁË¡£ÔÚJava
9ÖУ¬javadocÃüÁîÐÐÖÐÑ¡Ï·ÖÌí¼ÓÁËÊä³öÑ¡ÏÕâ¸öÑ¡ÏîµÄֵҪôÊÇHTML 4£¬ÒªÃ´ÊÇHTML
5¡£ÏÖÔÚHTML 4ÊÇĬÈϵÄÊä³ö±ê¼ÇÓïÑÔ£¬µ«ÊÇÔÚÖ®ºó·¢²¼µÄJDKÖУ¬HTML 5½«»áÊÇĬÈϵÄÊä³ö±ê¼ÇÓïÑÔ¡£Java°ïÖúÎĵµ»¹ÊÇÓÉÈý¸ö¿ò¼Ü×é³ÉµÄ½á¹¹¹¹³É£¬ÕâÊDz»»á±äµÄ£¬²¢ÇÒÒÔHTML
5Êä³öµÄJava°ïÖúÎĵµÒ²±£³ÖÏàͬµÄ½á¹¹¡£
¸ü¶àµÄÌØÐÔ
1. ±£ÁôÏ»®Ïß×Ö·û¡£±äÁ¿²»Äܱ»ÃüÃûΪ_£»
2. ·ÏÆúApplet API£»
3.javac²»ÔÙÖ§³ÖJava1.4ÒÔ¼°Ö®Ç°µÄ°æ±¾£»
4. ·ÏÆúJavaä¯ÀÀÆ÷²å¼þ£»
5.Õ»±éÀúAPI¨CÕ»±éÀúAPIÄܹýÂ˺ͳٷÃÎÊÔÚ¶ÑÕ»¸ú×ÙÖеÄÐÅÏ¢¡£
|