《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > Java平臺J2SE1.5新特性展望

Java平臺J2SE1.5新特性展望

2008-12-19
作者:盛建昉

0.引言
??? J2SE平臺目前的正式發布的版本為1.4.2,下一個主要Java平臺J2SE1.5正在JCP(Java Community Process)的指導下進行開發,預期這個代號為“Tiger”的新版本將會在2003年最后一個季度發布Beta測試版,2004年初正式發布。這個最新的Java平臺將會給Java世界帶來些什么激動人心的新特性" title="新特性">新特性呢?根據JSR-176(Java Specification Request)、Java新聞組、Java社區論壇以及Sun公司發布的信息,新版本Java主要致力于以下幾個方面的改進:
1. 可靠性、可用性" title="可用性">可用性和適用性
2.?監視與可管理性
3.?可伸縮性與執行性能
4.?XML和客戶Web服務
5.?易于開發
??? 為了支持這些改進,新平臺修改了相關的語法,增加了核心類庫的API數量,修正了一些缺陷并對平臺做了進一步優化。下面分別對這五個方面作詳細介紹。
1.可靠性、可用性和適用性
??? Java平臺工具的成熟度、普及性、正在增長的各方支持以及可用性等諸多因素的結合使得面向關鍵任務" title="關鍵任務">關鍵任務的企業Java應用越來越多。面向關鍵任務的應用必須是高確定性、高可靠性和高可用性的。系統故障事件發生時,面向關鍵任務的應用需要立即被診斷、處理和修復。為了滿足這種需求,新Java平臺計劃針對客戶和服務器的Java運行時(Java Runtimes)做出一些修補和優化來提高平臺的可靠性和可用性。為了達到這一目的,新平臺還增加了兩個新的API規范。
1.1新Java平臺Profiling體系結構
??? 平臺Profiling是正在運行的虛擬機抽取系統資源使用狀況統計數據的能力,包括內存使用狀況、CPU使用狀況、對象引用數目等等。現有的Profiling接口—JVMPI(Java Virtual Machine Profiling Interface)帶有相當的實驗性質,而且種種設計缺陷,規模可伸縮性問題,過于龐大的開銷以及不精確的Profiling,使得這一接口難以使用。新的Profiling體系結構打算非兼容的取代JVMPI,提供類似的功能并進行了增強。這些新的Profiling API將提供Profiling與高級垃圾收集(garbage collection)技術之間的互操作性,能在最大范圍的虛擬機上被可靠實現,其中一部分將根據功能分組,以可選集合形式獲取,并提供支持何種選項的查詢。新的API致力于提供一個Java語言的執行模型,而虛擬機的其他一些方面、本地化及操作系統模型可能直接提供,也可能通過擴展機制提供。新的Profiling API可以被實現為能動態地打開或禁止Profiling功能,這樣當Profiling功能禁止時對性能的影響可以忽略。應用開發階段的Profiling會成為這個規范的主要目標,并且支持低開銷及混雜數據的設計目標也將會支持部署階段的Profiling。
l.2?與應用隔離的API規范
????當在同一個主機上運行多個Java應用時,龐大的初始化區、內存需求的增長以及程序啟動的延時損害了Java固有的能力,在與其他一些更靈活高效的語言系統競爭時,人們會懷疑Java在大規模可伸縮場合下的應用前景。目前在服務器設置工作中,專門的腳本和本地代碼機制用于控制和平衡裝載多個Java虛擬機,這種方式損害了可移植性、可維護性和系統的魯棒性。這個與應用相隔離的API規范為管理Java應用的生命周期提供了統一的機制,使得這些Java應用在對象獲取方面互相隔離,但能潛在共享實現方面的資源。它提供了一種配置Java新實現特性的手段,這新的實現特性替代了以前在部署多個Java應用時采用的專門的腳本機制,并增強了應用規模的可伸縮性。API與應用隔離的特性的實現保證了Java應用之間運行狀態的隔離,也許還會隔離本地接口(JNI)狀態和進程狀態。新平臺中包含這個API會使在同一主機上運行多個Java應用變得更加容易,并且不用擔心操作系統資源被內存中的多個JVM的拷貝所消耗。這對系統可靠性和可用性有著直接的影響。
2.監視與可管理性
??? 隨著面向關鍵任務Java應用的廣泛布署,產生了這樣一種需求:為Java應用及其相應的虛擬機的狀態提供一種統一標準的監視機制,并且要求在不重新啟應用程序" title="應用程序">應用程序的條件下修改應用程序的狀態和運行時的特性。目前應用程序傾向于使用本地庫和程序完成類似的功能。新的JAVA平臺計劃引入一簇API來完成對基于Java的資源端到端的管理和監視。
2.l?Java虛擬機(JVM)的監視與管理
??? 這類API將為JAVA應用程序,系統管理工具和RAS相關工具提供監視JVM狀況,管理運行時間控制的能力,比如類裝載,內存使用狀況統計,垃圾收集(garbage collection)統計,線程統計,對象引用數及狀態統計,操作系統及平臺信息。它們還提供對JIT編譯,線程創建,垃圾收集操作及堆分配的控制,支持JMX調用,并且這類特性的實現將與新平臺的Profiling體系結構協同開發。
2.2Java管理擴展(JMX)
??? JMX是一項已存在的技術,并且正在用于多種應用中,比如JBOSS應用服務器使用了JMX核心管理系統。這些擴展在Java語言中為應用程序及網絡的管理和監視定義了體系結構,設計模式,API和服務。
??? JMX為Java開發人員提供了提交Java代碼、創建智能Java代理、實現分布式管理中間件和管理器的種種手段,并可將這類解決方案平滑地集成到已有的管理和監視系統中去。另外,JMX被許多用于現存管理和監視技術的API所引用。如今將JMX納入Java標準平臺滿足了Java社區統一管理和監視Java應用的要求。
3.可伸縮性與執行性能
?? ?新平臺打算修正一些缺陷并提高Java運行時的性能(包括客戶端及服務器端)。以下是為提高性能所做的具體改進:
· 修正和加速了垃圾收集機制(garbage collection)
· 減少了虛擬機的啟動時間
· 減少了內存的覆蓋范圍
· 進一步改進了Hotspot虛擬機
· 應用程序隔離API將使得單個虛擬機伸展為多應用虛擬機而不需要實例化新的虛擬機進程
· 增加了新的文件I/O能力支持批量訪問文件屬性,為文件和網絡套接字增加了異步I/O,增強了格式化I/O
??? 這些特性的改進使得新平臺成為至今最快的Java平臺。
4.XML和客戶Web服務
??? 看起來無處不在的XML和Web服務使得標準Java平臺不得不對其提供支持。目前Java1.4已有一打XML解析器,相關XML數據結構庫和XML處理庫。Java1.5打算引進現存于SUN公司的WSDP(Web Service Developer Pack)中的一些庫來增加標準平臺中XML及Web服務API的數目。預期加入的新特性有:
· XML解析API(JAXP)的更新,以支持XML Schemas
· XML綁定API,用于將XML Schema編譯進一個或多個Java類中
·??XML遠程過程調用API(JAX-RPC)
·??XML數字簽名API
· XML數字加密API
·??現有XML庫的優化和性能提升
·??Web服務客戶端支持
??? 由于XML及Web服務發展飛速,新版本Java希望成為使用這種技術創建應用的自然選擇。
5.易于開發
??? Java語言和語法正在被增強:代碼更可讀、更富于表達、更安全、更易于開發,并且沒有失去兼容性。經過幾年的討論和與其它語言的比較,Java的這些新特性正在被融合。這些特性是新版本中最希望被引用的,并且引發了Java社區廣泛的討論。這些改變包括類文件格式的更改,泛型(類似于C++中的模板)支持,“foreach”型的循環結構,原始類型與相應對象數據類型自動轉換,使用靜態常量的改進語法,以及元數據" title="元數據">元數據標簽的使用等等。
??? 這些改變對開發人員寫Java程序的方式將會發生重要影響。要想利用這些改變,開發人員需要學習新的語言特性、新的語法。下面讓我們深入了解一下這些新特性。
?· 類文件格式的改變
??? 這個改變是為了增加對不斷更新的Java平臺及語言規范的支持,包括增加對更快和更有效的字節碼校驗的支持,直接從類文件格式支持類字面量,增加以往暗含限制類文件的大小。這些改變對應用開發人員是透明的,現在代碼不需要作任何改變。

?· 泛型的支持
??? 泛型支持是一種指定用于類集中的特定對象類型的功能,而不是使用缺省的Object類型的行為。這種想法基于參量的多態機制。下面用例子加以說明。
???比如你有一個方法,用來打印類集中所以字符串的小寫形式:
???/**
?? ???* Print all the Strings in the Collection in lower case.
?? ???**/
public void printLowerCase(Collection c) {
??? Iterator iter = c.iterator();
??? ??while(iter.hasNext()) {
????? ????String str = (String)iter.next();
System.out.println(str.toLowerCase());
??? ????}
? ???}
??? 這里需要注意的是每次迭代經過Collection時都要有顯式的類型轉換,轉換到String。這是一種產生錯誤的傾向。如果一個程序員不小心傳遞了其它類型的類集,這個方法編譯成功,但會在運行期產生一個ClassCastException。這段代碼正確執行的前提是Collection必須容納String。這從方法的簽名中看不出來,只是在描述方法的文檔里提到。
??? 泛型提供了一種避免類型轉換的方法,它將一般類集與特定類型在編譯時而不是運行時綁定在一起。以上方法以泛型方式書寫如下:
/**
* Print all the Collection Strings in lower case.
**/
public void printLowerCase(Collection c) {
Iterator iter = c.iterator();
??? while(iter.hasNext()) {
String str = iter.next();
????? ?System.out.println(str.toLowerCase());
??? }
}
??? 這里我們顯式指定了Collection將要包含哪種類型的對象,從而不需要強制類型轉換。程序員的意圖完全可以從方法簽名中表現而不是在注釋文檔中描述。若使用此方法的程序員錯誤地傳遞了類型所包含的類型,此方法不會通過編譯。這消除了運行時的異常,提供了編譯時類型的安全性。泛型將會提高代碼的可讀性、表達能力,并提供了安全性,避免產生運行時異常。
· “foreach”循環結構
??? 新版本Java計劃加入其它語言中常見的“foreach”循環結構,這個結構主要是為了增加開發人員的生產力,減少循環迭代所需要的代碼數量。
??? 比如我們要對一個包含字符串的類集循環迭代,目前你可用while或for循環語句:
Collection c;
Iterator i = collection.iterator();
while(i.hasNext()) {
? // Process element
}
for(Iterator i = c.iterator; i.hasNext() ; ) {
? // Process element.
}
???? 這兩種結構都需要創建一個Iterator對象,并且調用hasNext()方法顯式地在迭代遍歷類集。
??? “增強的for結構”使得代碼變為如下所示:
Collection c;
for( Object o : c ) {
? //Process element
}
結合泛型支持代碼可變為:
Collection c;
for( String o : c) {
? //Process element
}
“foreach”類型的結構消除了Iterator的創建,將完成迭代的細節交給了編譯器,同時也減少了代碼的數量。
·??原始類型與相應對象類型的自動轉換
??? 在現在的Java平臺中如果你想將一個原始的int型加到一個Integer對象上,你必須這樣做:
int i;
Integer j;
int k = i + j.intValue();
Integer kObj = new Integer(k);
在Java1.5中這種轉換變成了自動進行,代碼只要簡單寫成
int i;
Integer j;
int k = i + j;
Integer kObj = i + j;
??? 這一特性為程序員幾乎消除了原始類型與相應對象類型間的所有差異。更進一步,它允許將原始類型加入到類集中去。因此這段代碼
Collection c;
int i;

c.add(new Integer(i));
可變為
c.add(i);
使用靜態常量的語法改進
??? 在Java中使用常量,程序員必須完全限制常量的引用或者實現一個定義常量的接口,例如:
public interface Constants {
? public static final int DAYS_IN_WEEK = 7;
? public static final int DAYS_IN_YEAR = 365;
}
??? 要使用這些常量,程序員必須完全限制常量引用:
int weeks_in_year =
??? Constants.DAYS_IN_YEAR/Constants.DAYS_OF_WEEK;
或實現一接口
public class Year implements Constants {
? int weeks_in_year = DAYS_IN_YEAR/DAYS_IN_WEEK;
}
新版本Java中將引入一個“static import”工具,允許不用加類名前綴或實現一個接口引用靜態常量。
import static Constants;
public class Year {
? int weeks_in_year = DAYS_IN_YEAR/DAYS_IN_WEEK;
}
Import語句使得所有Contants類的靜態成員對類Year都是可見的。這種緊湊的語法減少了代碼并克服了實現一個接口的不利之處。
元數據標簽注釋源代碼
??? 編寫EJB和RMI應用的程序員需要定義許多樣板代碼來實現對象。例如要實現一個遠程對象,你必須定義一個接口:
package service;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface ServiceRunner extends Remote {
??? Object executeService(Service s) throws RemoteException;
}
并且定義一個此遠程接口的實現:
package servicerunner;
import java.rmi.*;
import java.rmi.server.*;
public class ServiceRunnerImpl extends UnicastRemoteObject
?????????????????????????????? implements ServiceRunner
{
??? public Object executeService(Service t) {
??????? ...
??? }
}
??? 使用元數據標簽可以指示編譯器產生必要的遠程接口模板代碼:
public class ServiceRunner {
??? @Remote public Object executeService(Service t) {
??????? ...
??? }
}
6.結束語
??? 正如你以上所見,Java1.5新版本將會是一個擴大的版本,尤其在語言方面改變很大。總體來說,這些新特性的引進增加了學習曲線的長度,但使得Java變得對程序員更加友好和易用。語言的改變擴大了Java對交叉語言開發者的影響,性能的增強使Java比以往任何時候運行更快。對XML及Web服務的關注使Java成為目前網絡編程的一種典范語言,這個新版本Java1.5的發布將會使Java平臺更加流行。
參考文獻:
·?JSR Documents
http://www.jcp.org/en/jsr
·?Josh Bloch's article on New Language Features for Tiger:
http://java.sun.com/features/2003/05/bloch_qa.html

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久精品午夜| 亚洲一区中文字幕在线观看| 日韩视频中文| 伊人色综合久久天天| 国产一区二区三区不卡在线观看| 国产精品va在线| 欧美体内谢she精2性欧美| 欧美久久久久久| 欧美日本一道本在线视频| 欧美不卡高清| 免费在线欧美视频| 欧美va亚洲va香蕉在线| 欧美高清视频一区二区| 欧美电影免费| 欧美另类一区二区三区| 欧美日韩一区综合| 国产精品成人免费视频| 国产精品国产三级国产普通话蜜臀| 欧美三级午夜理伦三级中视频| 欧美日韩亚洲免费| 欧美日韩一级大片网址| 国产精品国产成人国产三级| 国产精品国产三级国产aⅴ9色 | 欧美性理论片在线观看片免费| 欧美日韩国产首页在线观看| 欧美日韩免费观看一区二区三区| 欧美天堂在线观看| 国产精品三区www17con| 国产婷婷成人久久av免费高清 | 在线观看欧美日韩国产| 亚洲福利在线看| 亚洲精品国产欧美| 99热在这里有精品免费| 亚洲午夜精品福利| 性亚洲最疯狂xxxx高清| 久久精品国产亚洲a| 亚洲欧洲日产国产网站| 亚洲免费观看高清完整版在线观看| 夜夜精品视频一区二区| 亚洲永久在线| 久久国产欧美| 欧美国产1区2区| 欧美午夜精品久久久久久超碰| 国产精品天美传媒入口| 国产综合久久久久影院| 亚洲欧洲精品成人久久奇米网| av成人免费| 午夜精品久久久久久久久| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美一区二区视频在线| 欧美天天影院| 欧美日韩日本网| 国产日韩精品在线播放| 欧美精品aa| 国产九九精品视频| 在线精品高清中文字幕| 一本色道久久精品| 欧美在线免费一级片| 日韩视频在线观看免费| 性色av一区二区三区红粉影视| 久久久久一本一区二区青青蜜月| 欧美高清免费| 国产三级精品在线不卡| 亚洲欧洲在线视频| 午夜精品美女久久久久av福利| 亚洲福利视频在线| 午夜精品久久久久久久男人的天堂 | 国产精品日日摸夜夜摸av| 国内视频精品| 一区二区三区免费观看| 亚洲国产精品一区二区第一页| 亚洲免费在线视频一区 二区| 久久综合影视| 国产精品久久久999| 亚洲午夜一区二区| 国产精品一卡| 亚洲三级免费| 久久成人羞羞网站| 亚洲男人天堂2024| 欧美国产精品劲爆| 国内久久婷婷综合| 亚洲欧美日韩国产精品| 亚洲美女网站| 久久深夜福利| 国产精品视频免费一区| 亚洲精品中文在线| 亚洲国产精品久久久久秋霞蜜臀| 午夜在线a亚洲v天堂网2018| 欧美精品观看| 亚洲国产精品视频一区| 欧美在线免费视频| 欧美亚洲综合久久| 欧美色另类天堂2015| 亚洲欧洲精品一区二区| 久久国产主播精品| 久久av在线| 国产精品色午夜在线观看| 99热免费精品| 一区二区久久| 欧美成人在线影院| 在线不卡欧美| 亚洲国产精品va在线观看黑人| 欧美一区二区视频免费观看| 国产精品扒开腿做爽爽爽软件 | 免费在线一区二区| 狠狠色狠狠色综合日日五| 性亚洲最疯狂xxxx高清| 小嫩嫩精品导航| 国产精品美女一区二区| 正在播放亚洲| 亚洲一区在线看| 欧美午夜理伦三级在线观看| 亚洲激情国产精品| 亚洲精品一区在线观看| 免费一级欧美片在线观看| 精品成人一区二区三区四区| 久久精品国产99国产精品| 久久久久久网址| 激情六月综合| 91久久在线视频| 欧美激情一区三区| 亚洲日本va午夜在线电影| 亚洲精品在线观看免费| 欧美.com| 亚洲日本一区二区| 国产精品99久久99久久久二8| 欧美日韩国产成人在线观看| 亚洲精品视频在线观看免费| 9色porny自拍视频一区二区| 欧美精品一区二区三区蜜桃| 亚洲欧洲一区二区三区久久| 日韩视频中文字幕| 欧美日韩天堂| 亚洲天堂av高清| 久久成人精品无人区| 国产一区二区高清| 亚洲高清在线精品| 欧美福利视频| 99视频精品在线| 羞羞色国产精品| 国产亚洲欧美日韩日本| 亚洲福利视频免费观看| 欧美激情视频网站| 一本一本久久| 欧美在线影院在线视频| 一区福利视频| 99香蕉国产精品偷在线观看| 欧美色精品天天在线观看视频| 亚洲欧美国产va在线影院| 久久久久久电影| 亚洲大胆女人| 中日韩美女免费视频网站在线观看| 国产精品久久久对白| 性色av香蕉一区二区| 欧美成人精品1314www| 亚洲免费高清| 欧美专区福利在线| 亚洲狠狠婷婷| 午夜精品久久久久久久蜜桃app| 国产一区二区三区自拍| 亚洲美女色禁图| 国产精品久久午夜夜伦鲁鲁| 久久国产精品网站| 欧美裸体一区二区三区| 亚洲欧美一区二区精品久久久| 久热精品视频在线观看| 亚洲免费成人av| 久久久夜夜夜| 99视频在线精品国自产拍免费观看 | 亚洲第一综合天堂另类专| 中日韩美女免费视频网址在线观看| 国产精品永久免费视频| 亚洲人在线视频| 国产精品网站在线播放| 亚洲人www| 国产精品视频大全| 亚洲黄色精品| 国产精品久久久久久五月尺| 亚洲高清成人| 国产精品久久久久久一区二区三区 | 欧美成人免费小视频| 亚洲尤物视频在线| 免费观看一区| 亚洲综合国产激情另类一区| 欧美电影资源| 羞羞漫画18久久大片| 欧美日韩亚洲综合在线| 亚洲电影在线看| 欧美偷拍另类| 亚洲欧洲三级| 国产一区二区三区的电影| 中文欧美日韩| 樱桃成人精品视频在线播放| 午夜精品短视频| 亚洲欧洲日产国产网站| 久久久久久电影| 亚洲——在线| 欧美精品一区二区蜜臀亚洲 | 久久成人在线| 国产精品久久91|