值此java十年之際,很多網站和社區都對java開發人員及相關愛好者進行了調查與訪問,下面列出十大熱點問題調查結果。人們發現,開發者對於java存在著各種各樣的看法。下面列出有代表性的網友觀點。
1. 你是如何開始用java編程的?
● 我在java一出現的時候就開始使用它進行編程。我為它的'一次編寫,到處運行'的理念以及applet感到激動。
● 我在java出1.0版本之前就開始學習它,因為我期望它能作為微軟產品(我對vb和visual c++太失望了)和pascal的替代品。
● 我曾經把java手冊作為休假時的閱讀材料,結果被它所吸引,轉而使用java而放棄c++,並且永不回頭。
● 我所在的大學一直都在教c++課程,但我卻用了很多時間自學java,因為想用它找一份更好的工作。
2.java曾經承諾"一次編寫/到處運行(wora-write once, run anywhere)",你認為它兌現這個承諾了嗎?時至今日,你認為"一次編寫/到處運行"的重要性發生改變了嗎?
● 應用程式伺服器和j2ee應用程式能夠在不同的平台之間很好地進行遷移。我對wora(write once, run anywhere)在客戶端的效果表示懷疑,並且我覺得這些其實是不可能真正地達到的。
● 它讓我完全不用考慮使用哪種平台。
● java的早期成功應該歸功於wora。它為系統集成商、獨立軟體商、軟體設計師帶來不同的根本性的經濟利益,這點勝於其他語言。
● wora每時每刻都在對我發生作用。我經常在windows中完成我的java開發工作,但是卻經常在solaris或者linux環境上進行不止一個的版本部署。
● 你能將位元組碼轉換為msil,並且也可以用j#編寫java程式。這給我們的產品為java和.net保留了一個代碼基礎。
● 我經常在windows、linux 和sun solaris平台上做開發、測試和部署java代碼的工作,在跨越平台的時候只用對xml的配置檔案做很少的更改。但是wora的重要性在面向服務和架構方面有所削減。
● 一些人聲稱由於常用作業系統的數量的遞減,wora的重要性也會隨之減弱。事實上即便只有兩個目標平台,wora也是非常重要的。
3.在你現在編寫的生產代碼中,有多大比例是用java編寫的?你認為在可預見的將來,這個比重是會增加、減少還是保持不變?
幾乎所有的被調查者都聲稱java是他們進行編碼的主要工具,回答為主要工具者超過了70%的比例。在對第二個問題的回答中,這個比例沒有降低的跡象。
● 去年我們對800個基於java技術的產品通過了認證,我們幾乎所有的中間件產品都是基於java運行時的。
● 我們仍然看到客戶對c和c++的任務認證的應用程式仍然存在大量的需求。我們希望經常能夠使用java,但是java的vm技術到了應該發展成為能夠在這些不同的系統上運行的時候了。
4.在你開發的java套用中,桌面套用和伺服器端套用的比重分別是多少?如果你編寫桌面套用,你會選擇swt還是swing(或者其他gui框架)?理由是什麼?
大部分回答為:"java存在於伺服器端的任何地方。"
● swing太過於複雜,太不可預知,並且太難學習。swt要稍微好一些,但通常來說,java在用戶界面方面實在不受歡迎。
● 我認為swt的方法非常好,它出於速度和一致性考慮而連結到本地的類庫,但是,我不喜歡api,它暴露了太多底層的東西。swing有良好的api,但是它上面存在著太多的bug,較差的性能和糟糕的布局。
● 我非常喜歡swt。它比swing更加自然,而swing被描述為粗略近似於自然。
● 我編寫swing的應用程式,並且使用java web start進行部署。我還不太相信swt的價值,因為它的跨平台支持有限並且缺乏可靠的mvc設計。
5.在開發java程式時,你首選的平台、框架、ide分別是什麼?
在這個問題中,由於windows和linux這兩個占有統治地位的操作平台,使得eclipse framework和ide普及程度很高,這一點表現得特別明顯。有網友認為:
● 我選擇的作業系統是winxp pro。在安裝了cygwin和幾個其它的設備後,系統能夠對硬體提供很好的支持。
● 我喜歡j2se 5。ide方面,我喜歡jbuilder,idea是第二選擇。idea有更加靈巧的特性,但是我所需要的功能,老的jbuilder都有。
● 我過去使用emacs來進行開發,調試程式使用println。而現在,我使用netbeans,並且非常驚訝,它居然能提供如此強大方便的幫助
● 在緊要關頭,我用vi進行開發。
6.在java的整個發展過程中,你認為jcp和開源社區誰起到的推動作用更大?
開源派:
● 目前來說是開源。jcp在積累實際經驗前總是相信標準。ejb,日誌,持久性這些都是在jcp中讓人感到不滿意的地方。jcp正在放棄java的基礎。一些困難的問題正在很容易的被解決,但是相反,一些很簡單的問題卻變得日益複雜起來。
● 開源的實現正在引導著開發的過程,而jcp只是在定義標準。
● 如果是說絕對意義上的改革,我只能說是開源。開源的實現對於需要進行修復的漏洞回響很快。而jcp的進步和工業前進的步伐相比,顯然要慢很多。
● 很多創新都是通過jcp模型而來的。然而,在過去的20年裡,我們看到開源模型正在日益增長。
● 我已經發現了開源的主動性,尤其是apache讓我感觸頗深--它是最具創新性和最有用處的。
jcp派:
● jcp對於java發展的貢獻是功不可沒的。它為整個java生態系統提供了一個"物質核心"。很多不符合jcp標準的開源項目展現了各種不同的想法--它們有的很糟,有的則很精彩。它們是提供改革動力的引擎。
7.你認為sun應該將java開放源碼嗎?
肯定派:
● 應該。而sun不同意這樣做的唯一原因是它認為java是歸sun所有的,並希望java可以帶動sun的發展。
● 一方面,開源的思想是很具吸引力的,因為這會使得更多的bug在更短的時間內被解決。另一方面,這也會為java帶來一些分歧和互不兼容的虛擬機。
● 我們需要一個開源java的主要原因是保證平台的活力。如果sun應該做什麼的話,顯然讓java開源是這個計畫的保證。
● 我想sun應該。"開源"java並不需要sun做任何工作。它主要需要其他人來做一些工作。擁有一個開源的java是一個必然。我建議sun能夠認識到這個必然並抓住這個機會。
否定派:
● 不。如果是開源的話,我們會看到各種樣式的java。這最終會帶來問題,就像我們現在面對各種套用伺服器所遇到的問題一樣。
● 不。我不相信一群普通的人的想法可以替代那些關注基本思想的完整性的科學的觀點--這些通常是常人不需要關注的東西。
中間派:
● 這個問題無關緊要。java已經可以按照自己的方式來發展。
8.如果你有權改變java中的一樣東西,你希望改變什麼?
● 在底層,java需要一個更加靈活的鍵入模型和一整套令編程更加容易的特點。我們不能將所有的事情都依賴類庫。
● introspection,一個用來檢測javabean屬性的類--這個類太難用太笨拙了。
● 許可證。
● 為開發者提供記憶體管理的工具。
● 增加對運算符重載的支持。
● jar版本是java急需的東西。我已經記不清多少次我的xml解釋器和日誌庫發生衝突了。
● class object。10年來一直沒有變過,應該加入很多東西了。
● java平台現在變得太複雜了。我們相信java社區需要在明確部門分類這方面做一些更好的工作,進而使java能夠繼續成長、興盛和成功。
● java絕對需要一個更為健壯的模型系統。現在,我們擁有的全部就是.jar檔案;結果是造成了.jar檔案"地獄"。現在,描述一個互連的模組系統太困難了。
● 一個對象在被載入以及java運行時類型之間的關係是我們仍將面對的錯誤。你不能在編譯期決定你的程式是否是類型安全的。另外,如果你合理地做一些動態的事情,你經常不得不去為一個給定的類猜一個正確的類載入器。
● java需要做的其它事情:運算符重載,預編譯指令,把聲明和實現分離(頭檔案和原始碼檔案),唯一的、非原生的機器定義符(出於許可證的問題)。
● code-behind pages!!!asp.net和code-behind提供了巨大的復用性和靈活性。我希望看到jsp 3.0朝著這個方向努力。
● 我更喜歡利用java對象訪問作業系統而不是使用jni。大部分的win 32/linux api可以被封裝道java的類中。
9.你認為java對整個軟體社群最大的一個貢獻是什麼?
● 我們收到的最多的回覆是平台無關、java平台、java語言本身和由此而創建的社區。
● 有兩件事:一個是它把帶有垃圾回收機制的語言推向了廣大使用者,另一件是圍繞著這種語言建立的智慧型ide。
● java的確帶來了很大的變化,包括它迫使microsoft重新設計新的產品,例如對visual studio的改進以及.net。利用javascript實現的瀏覽器對java來說成了netscape的替代品。伺服器端的編程前進了一大步,並可以實現上百萬站點的互連。
● 有很多學生不用再學c++了。
● 標準api的制定使得可以有很多不同生產商的實現。這就提供了一個對於共同接口進行最好實現的競爭,最後的結果是整個產業通過不斷的尋求更高質量的解決方案變得很靈活。
10.展望未來,你認為java語言還將像過去10年那樣占據重要地位嗎?還是會被另一種更新、更強大的語言取代?
肯定派:
● java在工業進化的過程中仍將會扮演極為重要的角色,因為人們將會把關注的焦點放在軟體的架構上,例如soa。
● 我們實際上可以編寫出更多的語言,它們之中有些可以和java完全不同,但是,它們可以保持一致的應用程式二進制接口(abi)。這就是為什麼java在很長的一段時間內仍然很重要的原因。
● java仍是it產業中強有力的語言,但是腳本語言在某些特定的領域裡將會得到更廣泛的套用。
否定派:
● 不會的,語言在技術上的領先性都是暫時的,java也一樣。因此,從某種意義上來說,關注java的未來會更有趣。
● 當桌面電腦和筆記本被掌上設備取代的時候,我們將會需要一種更簡單、更強大的語言。
● c#對java有潛在的威脅。它是更好的語言。
● microsoft正在以令人難以置信的速度轉向.net。它可以通過作業系統來擁有客戶,在這一點上,它比java更有優勢。
● 在某些方面,java虛擬機架構的缺陷會變得非常嚴重。如果可以提供設計更加優良的虛擬機,那么它將極有可能替代java平台。