|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。程序|功能|优化
1利用非堵塞I/O
版本较低的JDK不撑持非堵塞I/OAPI。为制止I/O堵塞,一些使用接纳了创立大批线程的举措(在较好的情形下,会利用一个缓冲池)。这类手艺能够在很多必需撑持并发I/O流的使用中见到,如Web服务器、报价和拍卖使用等。但是,创立Java线程必要相称可不雅的开支。
JDK1.4引进了非堵塞的I/O库(java.nio)。假如使用请求利用版本较早的JDK,在这里有一个撑持非堵塞I/O的软件包。
2慎用非常
非常对功能倒霉。抛出非常起首要创立一个新的对象。Throwable接口的机关函数挪用名为fillInStackTrace()的当地(Native)办法,fillInStackTrace()办法反省仓库,搜集挪用跟踪信息。只需有非常被抛出,VM就必需调剂挪用仓库,由于在处置过程当中创立了一个新的对象。
非常只能用于毛病处置,不该该用来把持程序流程。
3不要反复初始化变量
默许情形下,挪用类的机关函数时,Java会把变量初始化成断定的值:一切的对象被设置成null,整数变量(byte、short、int、long)设置成0,float和double变量设置成0.0,逻辑值设置成false。当一个类从另外一个类派生时,这一点特别应当注重,由于用new关头词创立一个对象时,机关函数链中的一切机关函数城市被主动挪用。
4只管指定类的final润色符
带有final润色符的类是不成派生的。在Java中心API中,有很多使用final的例子,比方java.lang.String。为String类指定final避免了人们掩盖length()办法。
别的,假如指定一个类为final,则该类一切的办法都是final。Java编译器会寻觅时机内联(inline)一切的final办法(这和详细的编译器完成有关)。此举可以使功能均匀进步50%。
5只管利用部分变量
挪用办法时传送的参数和在挪用中创立的一时变量都保留在栈(Stack)中,速率较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创立,速率较慢。别的,依附于详细的编译器/JVM,部分变量还大概失掉进一步优化。
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。 |
|