import java.sql.*;
import java.util.*;
class Sql
{
???? public static void main(String[] args)
{
????? try
???? {
???????? String query="select * from orders";
???????? String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Northwind";
???????? String userName = "sa";
???????? String userPwd = "14579";
???????? Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
???????? Connection conn=DriverManager.getConnection(URL,userName,userPwd);
???????? Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
???????? ResultSet rs=stmt.executeQuery(query);
???????? int i=0;
???????? for(i=0;i<10;i++)
???????? {
??????????? rs.next();
??????????? System.out.println(rs.getString(1));
???????? }
??????? //SQLServer2K自帶的樣例數據庫Northwind中,表Orders有多于10條,可能上百條記錄,所以只列10條!
????? }
????? catch(Exception e)
????? {
???????? System.out.println(e.getMessage());
????? }
}
}
結果:
posted @
2007-05-25 22:28 jadmin 閱讀(98) |
評論 (0) |
編輯 收藏
運行本程序前需安裝SQL Server 2000 Driver for JDBC Service Pack 3
測試代碼如下:
// 導入Java SQL包,連接數據庫必需;
import java.sql.*;
public class TestDB
{
??? public static void main(String[] args)
??? {
??????? String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
??????? String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=pubs";
??????? String userName = "sa";
??????? String userPwd = "14579";
??????? Connection dbConn;
??????? try
??????? {
??????????? Class.forName(driverName);
??????????? dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
??????????? System.out.println("Connection Successful!");
??????? }
??????? catch (Exception e)
??????? {
??????????? e.printStackTrace();
??????? }
??? }
}
運行結果:
posted @
2007-05-25 22:25 jadmin 閱讀(89) |
評論 (0) |
編輯 收藏
????????? 經過數年的“框架大戰”,Java界的各種框架找到了自己應有的位置。
???????? Spring+Hibernate+Struts已成為Java開發的主流體系。在這個體系中,Spring+Hibernate的地位應該說短期內是難以撼動了。除了新興的Jboss Seam作為挑戰者之外,幾乎難有勁敵。有趣的是當初Spring、Hibernate作為挑戰者,將官方的EJB成功挑落馬下;這次反倒是官方的EBJ3成了挑戰者,不知結局如何。
???????? Java B/S編程中歷來戰火最激烈的其實還在Web層,框架的數量最多,爭議最大。
一切由Struts而起,而Struts最終也坐穩了第一個時代的王座。在技術層面,Struts 1.x已經被無數人抱怨過、批評過,但終于還是穩坐王位,這充分說明了習慣的力量。“穩定壓倒一切”,這句話在IT技術領域仍舊適用。
???????? 其實IT應用技術,什么新鮮玩意并不難學。難的是標準化和規范化。每個程序員都有自己的思路和習慣,寫出來的代碼自然是五花八門。Java何以成為編程界的老大,很重要的一點在于Java的規范化。這種規范化很高的語言適用于多人合作的大型項目,便于溝通和理解,也就便于集成和維護。Java世界為什么會框架橫飛,說到底還是規范化的需要。純JSP和Struts寫Web誰快,擺明了是JSP。那撐飽了用Struts?原因在于100個人寫出來的JSP,有100種寫法;而100個人寫出來的Struts,基本相似。Struts之成功,正緣于其在Java Web層的規范化方面所做出的貢獻。
???????? 然而長江后浪推前浪,Struts 1.x的技術缺陷畢竟是隱患。
???????? Sun力推JSF,打算一雪Web層框架缺失之恥。可惜JSF既要沿用Swing的技術路線,又要學ASP.NET,還要照顧產商的IDE,結果搞了個四不象,弄得里外不是人。當然Sun的技術實力畢竟是超強的,只要別重蹈EJB的覆轍,拿出點專斷的精神(像這兩年的NetBeans),做出像Swing那樣水準的東西,JSF當大有作為。JSF現在比較有優勢的是對Ajax的集成,這一點走在了其他框架的前面。
???????? 而Struts就更沒有志氣了,把WebWork換了個標簽,湊出個Struts2,Bug多多。說實在話,根本不如原版的WebWork。如果不是靠了原先的fans捧場,根本就沒得混。不過Struts原本就不是以技術取勝的,靠的是搶占先機帶來的習慣優勢。如果原先的fans們在這兩年內都能轉到Struts2,那么Struts二世仍將雄霸天下。
???????? 綜上所述,未來兩年,JSF與Struts將展開Java Web框架的最終戰爭。
???????? 以筆者愚見,結局有二:一是不論Struts還是JSF獲勝,Java Web層都將結束混戰的局面,這對Java Web開發的標準化是非常有利的,并有助于鞏固Java在B/S界的地位;二是Struts1.x、Struts2、JSF三分天下,必然從整體上削弱Java在B/S界的競爭力,并將進一步被RoR、ASP.NET、PHP所蠶食。
???????? 以上內容源自CSDN
posted @
2007-05-22 18:28 jadmin 閱讀(64) |
評論 (0) |
編輯 收藏
????????? 2007年5月8日,Sun推出了一種更友好的為消費電子產品編寫Java應用軟件的方式,其目的是為了挖掘Java的潛力,并在新一代Web應用領域方面擁有更大的發言權。
???????? 在JavaOne會議上,Sun負責軟件業務的執行副總裁格林公布了JavaFX Script━━一種用于編寫能夠在支持Java的PC和手機上運行的應用軟件的更簡單的腳本語言。
???????? 為了解決手機的兼容性問題,格林詳細闡述了JavaFX Mobile━━一種面向手機廠商、提高Java應用軟件在不同手機間兼容性的軟件包。
???????? Sun官員還計劃發布最后一部分的開放源代碼的Java,并闡述與Java相關的開放源代碼項目的管理規則。
???????? Sun計劃通過JavaFX Script復興Java在小型設備和瀏覽器上的使用。格林說,Java不僅僅面向企業,還面向消費者。我們即將發布的腳本語言將極大地增加能夠為這一平臺開發內容的人的數量。
???????? JavaFX Script是一種在生產效率和易用性方面好于Java的腳本語言,能夠與Java緊密集成。開發人員可以利用JavaFX Script編寫能夠在支持Java的PC和手機上運行的應用軟件。
posted @
2007-05-22 18:20 jadmin 閱讀(49) |
評論 (0) |
編輯 收藏
GMail Remote Command 可以遠程實現關機、運行程序、打開網頁,這一切都通過Gmail來實現的。
GMail Remote Command 使用說明:
1.在你想要控制的機器上面,點擊運行GRC.exe;
2.輸入你的Gmail郵箱和密碼(假設Gmail郵箱是test@gmail.com),點擊Sign in,等待….當Sign in變成
Stop時候就OK了,一般幾秒就登錄成功了;
3.在另外一臺機器打開網頁進入:http://www.gmail.com,用另外一個Gmai帳號登陸,然后寫郵件;
收件人:test@gmail.com 主題:shutdown
然后發送這個空郵件,即可讓test@gmail.com的整個機器關機。
命令:
關機 shutdown
運行程序 [open]c:\windows\system32\calc.exe[/open]
打開網頁 [open]http://www.yangkui.cn[/open]
posted @
2007-05-22 17:55 jadmin 閱讀(75) |
評論 (0) |
編輯 收藏
JAVA四種基本排序,包括冒泡法,插入法,選擇法,SHELL排序法.其中選擇法是冒泡法的改進,SHELL排序法是 插入法的改進.所以從根本上來說可以歸納為兩種不同的排序方法:即:插入法&冒泡法
一 插入法:遍歷排序集合,每到一個元素時,都要將這個元素與所有它之前的元素遍歷比較一遍,讓符合排序順序的元素挨個移動到當前范圍內它最應該出現的位置。交換是相鄰遍歷移動,雙重循環控制實現.這種排序法屬于地頭蛇類型,在我的地牌上我要把所有的東西按一定的順序規整,過來一個,規整一個.
處理代碼如下:
public void sort(int[] data) {
int temp;
for(int i=1; i〈data.length; i++){
for(int j=i; (j〉0)&&(data[j]〉data[j-1]); j--){
temp=date[j];
data[j]=data[j-1];
data[j-1]=temp; }
}
}
二冒泡法:比較容易,它的內層循環保證遍歷一次后,集合中最小(大)元素出現在它的正確位置,下一次就是次小元素。。。該方法在集合分布的各種情況下交換移動的次數基本不變,屬于最慢的一種排序。實現也是雙重循環控制。這種排序法屬于過江龍,就是要找到極端,但是過獎龍也有大哥,二哥等,所以他們只能是大哥挑了二哥挑.
處理代碼如下:
public static int [] maopao(int[] data) {
int temp;
for(int i=0; i〈data.length-1; i++){
for(int j=i+1; j〈data.length; j++){
if(data[i]〈data[j]){
temp=data[i];
data[i]=data[j];
data[j]=temp;
}
}
}
return data;
三選擇法:該方法只是通過遍歷集合記錄最小(大)元素的位置,一次遍歷完后,再進行交換位置操作,類似冒泡,但在比較過程中,不進行交換操作,只記錄元素位置。一次遍歷只進行一次交換操作。這個對與交換次序比較費時的元素比較適合。這種排序法比冒泡法要城府要深的多,我先記住極端數據,待遍歷數據完了之后,我再處理,不像冒泡法那樣只要比自己極端一點的就要處理,選擇法只處理本身范圍內的最極端數據.
public static void xuanze(int[] data) {
int temp;
for (int i = 0; i 〈 data.length; i++) {
int lowIndex = i;
for (int j = data.length - 1; j 〉 i; j--) {
if (data[j] 〉 data[lowIndex]) {
lowIndex = j;
}
}
temp=data[i];
data[i]=data[lowIndex];
data[lowIndex]=temp;
}
}
四 Shell排序:
它是對插入排序的一種改進,是考慮將集合元素按照一定的基數劃分成組去排序,讓每一組在局部范圍內先排成基本有序,最后在進行一次所有元素的插入排序。
public void sort(int[] data) {
for(int i=data.length/2; i〉2; i/=2){
for(int j=0; j〈i; j++){
insertSort(data,j,i);
}
}
insertSort(data,0,1);
}
private void insertSort(int[] data, int start, int inc) {
int temp;
for(int i=start+inc; i〈data.length; i+=inc){
for(int j=i; (j〉=inc)&&(data[j]〈data[j-inc]); j-=inc){
temp=data[j];
data[j]=data[j-inc]
data[j-inc]=temp;
}
}
}
posted @
2007-05-22 17:44 jadmin 閱讀(51) |
評論 (0) |
編輯 收藏
詳情見
http://baike.baidu.com/view/8240.htm
posted @
2007-05-21 20:35 jadmin 閱讀(41) |
評論 (0) |
編輯 收藏
2006 年底,Sun 公司發布了 Java Standard Edition 6(Java SE 6)的最終正式版,代號 Mustang(野馬)。跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不錯的提升。與 Tiger 在 API 庫方面的大幅度加強相比,雖然 Mustang 在 API 庫方面的新特性顯得不太多,但是也提供了許多實用和方便的功能:在腳本,WebService,XML,編譯器 API,數據庫,JMX,網絡和 Instrumentation 方面都有不錯的新特性和功能加強。 本系列 文章主要介紹 Java SE 6 在 API 庫方面的部分新特性,通過一些例子和講解,幫助開發者在編程實踐當中更好的運用 Java SE 6,提高開發效率。
Instrumentation 簡介
利用 Java 代碼,即 java.lang.instrument 做動態 Instrumentation 是 Java SE 5 的新特性,它把 Java 的 instrument 功能從本地代碼中解放出來,使之可以用 Java 代碼的方式解決問題。使用 Instrumentation,開發者可以構建一個獨立于應用程序的代理程序(Agent),用來監測和協助運行在 JVM 上的程序,甚至能夠替換和修改某些類的定義。有了這樣的功能,開發者就可以實現更為靈活的運行時虛擬機監控和 Java 類操作了,這樣的特性實際上提供了一種虛擬機級別支持的 AOP 實現方式,使得開發者無需對 JDK 做任何升級和改動,就可以實現某些 AOP 的功能了。
在 Java SE 6 里面,instrumentation 包被賦予了更強大的功能:啟動后的 instrument、本地代碼(native code)instrument,以及動態改變 classpath 等等。這些改變,意味著 Java 具有了更強的動態控制、解釋能力,它使得 Java 語言變得更加靈活多變。
在 Java SE6 里面,最大的改變使運行時的 Instrumentation 成為可能。在 Java SE 5 中,Instrument 要求在運行前利用命令行參數或者系統參數來設置代理類,在實際的運行之中,虛擬機在初始化之時(在絕大多數的 Java 類庫被載入之前),instrumentation 的設置已經啟動,并在虛擬機中設置了回調函數,檢測特定類的加載情況,并完成實際工作。但是在實際的很多的情況下,我們沒有辦法在虛擬機啟動之時就為其設定代理,這樣實際上限制了 instrument 的應用。而 Java SE 6 的新特性改變了這種情況,通過 Java Tool API 中的 attach 方式,我們可以很方便地在運行過程中動態地設置加載代理類,以達到 instrumentation 的目的。
另外,對 native 的 Instrumentation 也是 Java SE 6 的一個嶄新的功能,這使以前無法完成的功能 —— 對 native 接口的 instrumentation 可以在 Java SE 6 中,通過一個或者一系列的 prefix 添加而得以完成。
最后,Java SE 6 里的 Instrumentation 也增加了動態添加 class path 的功能。所有這些新的功能,都使得 instrument 包的功能更加豐富,從而使 Java 語言本身更加強大。
Instrumentation 的基本功能和用法
“java.lang.instrument”包的具體實現,依賴于 JVMTI。JVMTI(Java Virtual Machine Tool Interface)是一套由 Java 虛擬機提供的,為 JVM 相關的工具提供的本地編程接口集合。JVMTI 是從 Java SE 5 開始引入,整合和取代了以前使用的 Java Virtual Machine Profiler Interface (JVMPI) 和 the Java Virtual Machine Debug Interface (JVMDI),而在 Java SE 6 中,JVMPI 和 JVMDI 已經消失了。JVMTI 提供了一套”代理”程序機制,可以支持第三方工具程序以代理的方式連接和訪問 JVM,并利用 JVMTI 提供的豐富的編程接口,完成很多跟 JVM 相關的功能。事實上,java.lang.instrument 包的實現,也就是基于這種機制的:在 Instrumentation 的實現當中,存在一個 JVMTI 的代理程序,通過調用 JVMTI 當中 Java 類相關的函數來完成 Java 類的動態操作。除開 Instrumentation 功能外,JVMTI 還在虛擬機內存管理,線程控制,方法和變量操作等等方面提供了大量有價值的函數。關于 JVMTI 的詳細信息,請參考 Java SE 6 文檔(請參見 參考資源)當中的介紹。
Instrumentation 的最大作用,就是類定義動態改變和操作。在 Java SE 5 及其后續版本當中,開發者可以在一個普通 Java 程序(帶有 main 函數的 Java 類)運行時,通過 –javaagent 參數指定一個特定的 jar 文件(包含 Instrumentation 代理)來啟動 Instrumentation 的代理程序。
posted @
2007-05-21 16:59 jadmin 閱讀(101) |
評論 (0) |
編輯 收藏
import java.util.*;
public class File extends java.io.File {
????
???? File(java.io.File file,String str){
???????? super(file,str);
???? }
???? File(String str1,String str2){
???????? super(str1,str2);
???? }
???? File(String str){
???????? super(str);
???? }
???? File(java.net.URI uri){
???????? super(uri);
???? }
???? public static void deleteDirs(java.io.File dir)throws Exception{
???????? m_root=dir;
???????? m_dirs= new ArrayList();
???????? if(!m_root.isDirectory()){
???????????? throw new Exception("Exception:\""+m_root.toString()+"\" is not a director");
???????? }
???????? else{
???????????? for(int i=0;i<m_dirs.size();i++){
???????????????? System.out.println(((File)m_dirs.get(i)).toString());
???????????? }
???????????? //delete all director
???????????? try{
???????????????? m_dirs.add(m_root);
???????????????? myDelete();
???????????? }
???????????? catch(Exception e){
???????????????? e.printStackTrace();
???????????? }???
???????? }???
???? }
???? /**
????? *
????? * @param dirPath?? String a director file path;
????? * @throws IOException if dirPath is not a director file path
????? */
???? public static void deleteDirs(String dirPath)throws Exception{
???????? m_root=new java.io.File(dirPath);
???????? deleteDirs(m_root);
???? }
????
???? public static void deleteSubDirs(String dirPath)throws Exception{
???????? m_root=new java.io.File(dirPath);
???????? deleteSubDirs(m_root);????
???? }
????
????
???? public static void deleteSubDirs(java.io.File dir)throws Exception{
???????? m_root=dir;
???????? m_dirs= new ArrayList();
???????? //deleteDirs(m_root);
???????? if(!m_root.isDirectory()){
???????????? throw new Exception("Exception:\""+m_root.toString()+"\" is not a director");
???????? }
????????
???????? else{
???????????? for(int i=0;i<m_dirs.size();i++){
???????????????? System.out.println(((File)m_dirs.get(i)).toString());
???????????? }
???????????? try{
???????????????? myDelete();
??????????? }
??????????? catch(Exception e){
??????????????????? e.printStackTrace();
??????????? }
??????????? }????
???? }
???? /*
????? *?? visit all a director and save them in a list
????? */
???? private static void visitAll(java.io.File tempRoot){
???????? //m_dirs.add(tempRoot);
???????? //System.out.println("函數開始處:"+m_dirs.size());
????????
???????? java.io.File[] dirs=tempRoot.listFiles();
???????? if(dirs!=null){
????????
???????? List dirsList=Arrays.asList(dirs);
???????? //while(dirsList!=null){
???????????? if(dirsList==null){
???????????????? try{
???????????????????? tempRoot.delete();
???????????????? }
???????????????? catch(Exception e){
???????????????????? e.printStackTrace();
???????????????? }
}
???????????? else{
????????????????
???????????????? m_dirs.addAll(dirsList);????
???????????????? //System.out.println(m_dirs.size());
???????????????? /*
???????????????? for(int i=0;i<dirs.length;i++){//print dirs
???????????????????? System.out.println("NO."+ ++counter+":"+dirs[i].toString());
???????????????? }
???????????????? */
???????????????? //System.out.println(m_dirs.size());
????????????????
???????????????? for(int i=0;i<dirsList.size();i++){
???????????????????? tempRoot=(java.io.File)dirsList.get(i);
???????????????????? visitAll(tempRoot);
???????????????????? /*
???????????????????? dirs=tempRoot.listFiles();
???????????????????? List dirsList= Arrays.asList(dirs);
???????????????????? */
???????????????????? //System.out.println(tempRoot.toString());
???????????????? }???
???????????? }
???????????? //return true;
???????? //}
???????? }
???? }
???? /*
????? * do delete
????? */
???? private static void myDelete()throws Exception{
???????? //m_dirs.add(m_root);
???????? visitAll(m_root);
????????
???????? if(m_dirs!=null){
????????????
???????????? //System.out.println("刪除前:"+m_dirs.size());
???????????? //System.out.println(m_dirs.size());
???????????? for(int i=m_dirs.size()-1;i>=0;i--){
???????????????? java.io.File f= (java.io.File)m_dirs.remove(i);
???????????????? //File f= (File)m_dirs.get(i);
???????????????? //System.out.println(f.toString());
???????????????? String fileName=f.toString();
????????????????
???????????????? if(!f.delete()){
???????????????????? throw new Exception("Exception: delete file "+ fileName+" false!");
???????????????????? //System.out.println("刪除文件/文件夾"+fileName+"失敗!");
???????????????? }
???????????? }
???????? }
???????? else{
???????????? throw new Exception("Exception: read file list of "+m_root.toString()+"false!");
???????????? //System.out.println("ArrayList==null");
???????? }
???? }
???? /*
????? * root director
????? */
???? private static java.io.File m_root;
????
???? private static ArrayList m_dirs;
???? //private static int counter=0;
???? public static void main(String[] args) {//測試類
????????
???????? File file =new File("H:/小說/小四/天亮說晚安");
???????? try{
???????????? File.deleteDirs("H:/小說/小四/天亮說晚安");
???????????? //File.deleteDirs(file);
???????????? //File.deleteSubDirs("H:/小說/小四/天亮說晚安");
???????????? //File.deleteSubDirs(file);
//File f=new File("F:/test.txt");
???????????? //f.delete();
???????? }
???????? catch(Exception e){
???????????? e.printStackTrace();
???????? }
???????? System.out.println("刪除成功~");
???? }????
}
posted @
2007-05-21 02:51 jadmin 閱讀(53) |
評論 (0) |
編輯 收藏
???????? 如果你是一個Java支持者,你一定不會陌生Netbeans,因為大家都是從Netbeans的愛恨交加中走過來的,初識Netbeans還是3.6版本,當時無論從界面還是運行上,真的不敢恭維,但是誰又能說Netbeans會停止它前進的腳步呢?由于開源腳步的加快,Borland提前宣布退出,給了Netbeans更多的機會,也讓Netbeans在業界得到專業人士的賞識,但是他真的走出充當配角角色嗎?真的像Netbeans高級宣傳官所說的那樣走出低谷了嗎?
Netbeans拒絕與Eclipse合并
隨著開源的興起,Jbuilder光輝不在,Netbeans的市場份額在今年上半年有了明顯的增長,據國外權威調查機構顯示,Eclipse 市場份額占45%,Netbeans占 30%,Jbuilder占15% ,其它IDE占5%,從調查分析來看,Netbeans的市場占有率正在上升,原來三國鼎立的局面因為Jbuilder的退出,使Eclipse對決 Netbeans大戰提前上演了,都說這是一場勢均力敵的戰爭,倒不如說是兩大軟件巨頭的撕殺,2006年初IBM就開始和Sun公司進行談判,數月談判結果給了IBM當頭一棒,Sun公司拒絕加入IBM主導的開源項目Eclipse,在宣布放棄Eclipse同時,不久Sun表示,他們不再試圖將Sun 發起的NetBeans.org開放源Java工具項目與Eclipse合并。
Sun公司認為,加入Eclipse陣營需要打破兩個組織之間的技術和組織差別,而這將對NetBeans和Eclipse項目現有的參與者造成不利影響。Sun公司開發平臺集團副總裁RichGreen表示,“我們雙方都確定我們不希望放棄現有項目”,“我們確定,合作社團相對于削減成本等問題更為重要。”
Eclipse和NetBeans開放源項目目的是開發軟件以允許不同的Java開發工具在單個編程應用中能夠相互嵌和。比如,開發人員可以將一家公司提供的源代碼管理工具與其他公司的代碼編輯器綜合在一起使用。
Green稱,雙方起初討論放棄NetBeans,但很快轉而談判尋求將兩個開放源項目統一在一個單一實體下。理論上,將兩個項目和并可以建立一個針對同一技術的更大社團,并確保兩個項目不會建立不兼容的代碼。但Green表示,如果重寫各自的插件系統以及相關的工具平臺需要雙方花費很長時間和巨大開銷。比如,Sun的商業開發工具建立在NetBeans的基礎上,如果轉而采用Eclipse標準則需要進行重大修改。
Sun和IBM Eclipse未能走到一起,在兩大開放源工具項目之間建立起一個鴻溝。Green表示,這樣也為開發商提供了更多的選擇。并且,Sun仍然希望將來與Eclipse重開談判之門。
相對與Sun的內斂相比,Eclipse基金會的執行理事Mike Milinkovich要自信得多,在談到老競爭對手時,他說這本來就是一場沒有懸念的戰爭,我們已經擁有了足夠多的用戶,而他們沒有,很明顯我們會贏得這場戰爭,我只能祝他們好運。
關于兩位當事人的觀點我們的記者也采訪了香港政府IT部門架構師Recher,他說這本身就是一場實力懸殊的競爭,雖然近期 Netbeans是在市場戰略上取得一些佳績,但不能說他們真正的贏得了這場勝利,他只不過是在分享Jbuilder拋棄的市場份額而已,Eclipse 并沒有因為它的增加而減少,Sun公司一直在用一種狹隘的心態在抵制自已競爭對手,最近和IBM的談判崩裂,以及Sun一直都沒把OSGI列放JMX的標準中,就是很好的例證。
Eclipse未來之路
同時Recher也談到了Eclispe開發在3個方面占勝了Netbeans.
1. 在技術上Eclipse是良好的OSGI框架實現(Equinox是OSGi R4 core framework的一個實現,而Eclipse IDE是基于Equinox項目開發的一個典型例子OSGI的好處基本就是面向組件開發,并提供一個十分好用的plugs-in框架,開發性強。況且 Eclipse本身就是一個RCP的容器---為未來RCP應用程序的將來提供不可缺少而且成熟的工具和容器。
2. 在市場上Netbeans支持的項目和工具太少了,因為很多開源項目都提供了大量Eclipse的plugs-in組件,這些是其它IDE 工具無法比擬的, 現在的 IBM已經和Eclipse完全整合了(以前的WSAD還不能說完全,但IRAD6.0就已經很完全了),同時IBM推出RSA(Rational Software Architect)的工具可以把Eclipse+UML+RUP+IRAD比較完美結合,至少我認為它是目前出來最好的工具了,整個RUP都可以涵蓋,而且還是支持UML2.0.
3. 在背景方面Eclispe的流行完全是IBM在它萌芽階段進行資金贊助的產物,有了IBM這個藍色巨人的支持, 它的前途無可限量,但是也不能小看了Sun公司的這個冷面殺手,有Sun這個強有力的后盾,雙方以后的競爭會很激烈的.
其實對于Eclipse未來,我們國內的架構師們只是在應用的角度上來看得在這個問題,Mike Milinkovich在9月初的Eclipse 2006世界大會指出了Eclipse未來的發展和新技術走向,他告訴我們首先是圍繞富客戶端平臺的繼續增長和采用。支持更多的語言。下個季度,我們計劃在Eclipse內推出首版的PHP IDE項目,我們認為這是一個非常令人激動的項目。因為無論是對企業開發者還是Web開發者來說,PHP是一門非常重要的語言,因此使得Eclipse工具支持PHP是一件令我們激動的事情。
NetBeans未來走向
在IDE開發工具競爭激烈的今天,Sun也逐步的調整了Netbeans市場戰略,在今年JavaOne大會上,Netbeans高級宣傳官 Tim Boudreau也談到了Netbeans以后發展動向,他告訴我們,自從1998年以來,NetBeans并沒有只為Java而<strong onmouseover="isShowAds = true;isShowAds2 = true;ads.Move(this,"http://rad.17luntan.com/UploadImage/36/633148531966718750.jpg","%u4E2D%u534E%u82F1%u624D%u7F51%uFF0C%u6709%u6548%u6C42%u804C%2C%u5E94%u8058%2C%u627E%u5DE5%u4F5C%u5C31%u5728%u8FD9%u91CC%21","43772","工作","%u5DE5%u4F5C","http%3A//chinahrafaad.allyes.com/main/adfclick%3Fdb%3Dchinahrafaad%26bid%3D41818%2C21083%2C187%26cid%3D16880%2C133%2C1%26sid%3D42304%26show%3Dignore%26url%3Dhttp%3A//www.chinahr.com/")" style="FONT-WEIGHT: normal; CURSOR: hand; COLOR: #0000ff; TEXT-DECORATION: underline" onclick="javascript:window.open("http://s4.17luntan.com/ClickPortal/WebClick.aspx?id=43772&k=%u5DE5%u4F5C&siteid=0098295a-e262-40f7-ae50-7a6fbbdb678b&url=http%3A//java.csdn.net/n/20061025/96733.html&gourl=http%3A//chinahrafaad.allyes.com/main/adfclick%3Fdb%3Dchinahrafaad%26bid%3D41818%2C21083%2C187%26cid%3D16880%2C133%2C1%26sid%3D42304%26show%3Dignore%26url%3Dhttp%3A//www.chinahr.com/&parm=2F5B371DE6B4180FC652E69EC2EBF65E7A9AA108AEB8FCBD&alliedsiteid=0");" onmouseout="isShowAds = false;isShowAds2 = false;">工作。它也是C/C++工具的基礎,Sun公司已經將它轉用于Solaris很多年了,對它的支持正在進行擴展化和通用化,不再僅限于Solaris。NetBeans也是HP公司用于OpenVMS的IDE,支持COBOL, Fortran, C/C++和其它語言。例如在今年JavaOne大會上我們演示的對VB的支持—實際上是讀取VB代碼,編譯成字節碼,然后運行,有時會比它本應生成的本地代碼運行還要快。因此,我們已經開始了這個項目,也會有圍繞腳本方面的開發做更多的努力。NetBeans并不一定要局限于Java IDE平臺—它對于Java已經有了很大地支持,那是人們首先要考慮的事情。但是就NetBeans目前的發展來看,它已經成為了一個語言無關的平臺。
正象我們早期提到的,重要的東西的壽命總是很長。一些人聲稱Java會在5或10年里死亡,我們都會迎來下一個大的事物。即使真是那樣, NetBeans也一樣可能會支持下一個事物的到來,但是對一個語言的壽命做假設的時候,有一件重事情要考慮,對于期望任何特殊的程序語言或范例的盛行周期日益變得更長是很實際的,這有兩方面的原因。首先,我們在繪制人們如何考慮告訴計算機工作的方式上的藍圖方面正越來越好,其次,一個語言統治的時間越長,它的代碼就會越多,因此移植的代價也就越大。于是你不得不緊跟一些事情,這些事情會強迫變化中的語言很豐富多彩。
現在有很多有關腳本語言的談論,但是我期待在主流編程語言中的下一個重大變化是讓直覺上類似多核芯片的并行方式成為規范標準。我確信在未來的時間里這些目標將會成我們考慮的主流。
從上述的采訪中我們明顯看到了開發公司的架構師對于Eclipse的鐘愛程度,Eclipse已經深入人心, Eclipse的強大是顯而易見,記得Ruby剛剛在網上火爆的時候,Eclipse就迅速作出反應,推出了支持Ruby開發插件,可是我們在反觀 Netbeas在5.5的版本還沒有這樣的計劃,Java之父Gosling曾說過未來的Netbeans不將是純粹的Java開發工具,它要涉及各個方面,以后也會支持Ruby開發,可是在他說這些話的時候,Eclipse已經在前進的路上了,這難免令所有支持者感到失望,未來的日子,誰將主宰我們都拭目以待。
???????? 以上內容轉自:http://java.csdn.net/n/20061025/96733.html
posted @
2007-05-21 02:20 jadmin 閱讀(65) |
評論 (0) |
編輯 收藏