在我剛開篇寫這一系列隨筆的時候,就有人問:在Linux下進行Java開發究竟有什麼優勢,如果都是一樣安裝JDK、安裝Eclipse,那和Windows下開發有什麼區別?這個問題問得很尖銳,的確,我們似乎根本沒有必要把我們的工作從Windows中轉移到Linux中來。
在Linux系統中進行開發,和在Windows中進行開發相比較起來,即有優點,也有缺點。下面是我的一些意見,歡迎大家討論。
先來說說優勢:
1、由Linux系統的本質決定的:
Linux的本質有三點,一是開源,二是免費,三是和Unix是一個體系。大家都知道,重要的應用幾乎都是運行在Unix服務器上面的,這是因為Unix天生就是為服務器設計的操作系統,他的安全、高效是不用質疑的,後來為了向桌面發展,出現了X Windows,當然,我們可以選擇在啟動系統的時候不啟動X Windows,拋去圖形界面的包袱,系統當然可以跑得更快。而Windows操作系統天生是為桌面設計的,後來為了向服務器發展,出現了NT系列。當然,現在NT系列的服務器已經很成熟了,足以和Unix服務器競爭了。但是,它不是免費的,不僅不免費,而且賣得很貴。所以,選擇Unix/Linux作為服務器操作系統,是可以為企業節約很多成本的。
本來,Java一設計出來就是可以跨系統運行的,我們完全可以在Windows系統下面進行開發,然後讓程序運行在Linux系統下。但是,畢竟他們還是有少量的差別,比如文件路徑。所以,我們在Linux系統下構建我們的系統,可以保證最大的兼容性。
2、有程序員的性格決定的:
程序員有一個性格,那就是喜歡不斷接觸新的東西,我們稱之為黑客文化,或者說是玩家文化。在Linux系統中,你可以毫不費力的得到很多好東西,包括好的軟件、好的代碼、好的思想、好的經驗。如果你喜歡系統編程,Linux自帶gcc;如果你喜歡動態語言,Linux自帶Python、Perl、Ruby;如果你要創建網絡應用,Linux自帶httpd、Sendmail等一系列網絡軟件;如果你要管理項目,Linux自帶CVS、Subversion、AutoMake。總而言之,只要你感興趣,Linux讓你這一輩子都不會感到枯燥。
我在使用過Linux的命令行界面後,就再也不想去點擊鼠標了,我覺得雙手不離開鍵盤,做起事情來會更快。
Linux系統本身就有很多的選擇,可以選擇老牌的Red Hat,也可以選擇新秀的Ubuntu,或者Suse也行,社區版的Fedora也可以,當然,也可以選擇像我這樣的國產貨,支持SUN的朋友們當然也可以去使用Sun公司的Solaris,反正現在也開源了,不要錢了。我要說的就是,Red Hat的確是把它的丑堅持到底了,說它界面丑的不止我一個。對於國產貨,我覺得大家不應該有太多的指責,別人已經解決了最重要的中文字體和Qt庫的問題,已經給我們提供了一個很好的基礎,開發應用軟件應該是我們每個程序員的事,開發不出好的應用軟件,我們應該扪心自問,而不是罵別個操作系統廠商。
3、由市場決定的:
很簡單,懂Linux的程序員比不懂Linux更貴。不用多說了。
再來說說劣勢:
1、Windows門檻低,早就有人說過,Unix/Linux系統產生的是對程序員有利的價值,而Windows產生的是對非程序員有利的價值。我們程序員有時候也是非程序員,我們也需要聽歌、看碟、炒股票、打網絡游戲,這個時候,Windows就比Linux俏多了。界面的美觀是一個方面,應用軟件豐富又是一個方面,雖然SuSe的界面已經做得超過XP了,但是你安一個游戲都要./configure、make、make install半天,還不一定成功,自然是不如Windows爽了。
2、美工和網頁設計師離不開Windows,就拿我自己來說,最喜歡的網頁設計工具依然是Dreamweaver,雖然在Eclipse環境下,依靠HTMLEditor插件的文本著色和自動提示,我依然可以很快速的編寫HTML和CSS,但是找不到一款正宗的可視化網頁設計工具依然不爽。對於喜歡Photoshop的朋友,當然是非Windows不可了。
3、軟件的測試不僅要考慮到FireFox浏覽器,也要考慮到IE浏覽器,因此,無論如何,也少不了一台Windows。
總體來說,我們並不需要將所有的工作都搬到Linux平台中,在一個局域網中,只需要一台Linux就足夠了,其余的都可以是Windows,Linux服務器主要用來運行Subversion,用來進行每日構建和自動化測試,而Windows則主要是用來開發,當然,也要作為客戶端進行一部分的測試工作。
歡迎大家提出不同意見。