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