資源描述:
《開源技術與開源軟》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、第九章開源技術與開源軟件IT服務科學與工程本章內容開源軟件與自由軟件開源技術開源軟件許可協議開源技術與開源軟件開源軟件與自由軟件開源軟件簡單來說,“開源軟件”就是源代碼開放的軟件。1999年,EricS.Raymond在自由軟件的范疇下提出了開源軟件的概念,并出版了《大教堂和集市》一書,這是開源軟件發(fā)展的標志事件。著名開源項目網站SourceForge在1999年還只有數百個開源項目,到2008年初,其開源項目數已經超過17萬個,幾乎覆蓋軟件應用的所有領域。開源軟件的意義對普通用戶來說開不開源其實意義不是很大,他們更在
2、乎收不收費由于開源軟件大多都是免費下載的,所以一提起開源軟件,很多人的第一反應就是免費軟件。對于商業(yè)用戶來說可以減少開發(fā)周期,因為源代碼開放了,只需要稍做修改就可以嵌入到產品中去;可以降低成本;但免費午餐不一定就不好吃(也有些開源軟件需要收費,但價格都比較低廉)。開源軟件成功的原因開源社區(qū)的協同模式改變和顛覆了軟件業(yè)的工作方式,可以創(chuàng)造出高質量的軟件產品。商業(yè)模式得到了驗證:RedHat、MySQL、Asterisk都是非常成功的開源公司。真正釋放了軟件開發(fā)人員的創(chuàng)造力和生產力:全世界有上百萬的程序員在參與開源軟件的產
3、品開發(fā)。國際軟件巨頭也紛紛加入開源陣營:IBM投資10億美元支持Linux,Sun也斥巨資收購MySQL…自由軟件自由軟件是指用戶運行、拷貝、研究、改進軟件的自由,更準確地說,是指三種層次的自由:研究程序運行機制,并根據你自己的需要修改它的自由;重新分發(fā)拷貝,以使其他人能夠共享軟件的自由;改進程序,為使他人受益而散發(fā)它的自由。自由軟件的精神領袖查德·斯托曼他被人稱為‘最后的真正黑客’,他認為一個好的軟件,便該自由自在的讓人取用,而不應該拿來做為相互傾軋、剝削的工具。他起草了GNU通用公共許可證來保障自由軟件的自由,并創(chuàng)
4、辦了自由軟件基金會來貫徹他的理念。開源軟件vs自由軟件嚴格地說來,開源軟件與自由軟件是兩個不同的概念,只要符合開源軟件定義的軟件就能被稱為開放源代碼軟件。自由軟件是一個比開源軟件更嚴格的概念,因此所有自由軟件都是開放源代碼的,但不是所有的開源軟件都能被稱為“自由”。但在現實上,絕大多數開源軟件也都符合自由軟件的定義。開源軟件的優(yōu)勢較低的成本大多數開源軟件是免費下載的,軟件公司并不靠出售軟件來取得利潤軟件后期的維護和支持是需要付費的開源帶來的可靠性、耐久性和安全性任何人都可以對代碼進行檢察并發(fā)現其中的安全隱患,任何人都可
5、以修改代碼中的問題,使用者不需要等待軟件提供商對軟件bug進行修正成熟的、并且通過長時間同級評審的開源軟件是非??煽康拈_放標準和擺脫供應商依賴開放標準的用戶,不論是個人還是政府,都擁有在不同的軟件、平臺和供應商之中選擇的靈活性和自由私有的、保密的標準使得用戶只能使用一個供應商的軟件,并且因為他們的數據都存儲為私有格式,轉換代價高昂而在此后繼續(xù)受供應商的擺布開源軟件面臨的挑戰(zhàn)知識產權問題對自由/開源軟件性質和特征的界定對開源軟件各類知識產權保護法律規(guī)定的強度和范圍的理解對各種開源許可協議的內容或條款以及其解釋的認知對自由
6、軟件運動發(fā)展中迄今尚存的一些爭議問題或在法律上出現的灰色地帶在執(zhí)行中的處置等管理和維護問題與使用商業(yè)軟件相比,使用開源軟件往往會帶來一些潛在的成本使用開源軟件的學習曲線比較長管理方面的成本也會增加,因為使用開源軟件要求系統(tǒng)管理人員具有多種技能:熟悉命令行接口、精通腳本語言、能夠編寫設備驅動程序等等沒有完善的技術支持,即使有也需要額外的費用開源技術與開源軟件開源技術WEB框架目前流行的Web框架不再僅是一個MVC實現,而是幾乎可以滿足日常工作中的大多數需求的“一站式”框架,上至表現層,下至持久層,涉及了企業(yè)級應用中的方方
7、面面。這些“一站式”框架可以很方便地同其他框架進行整合,比如Struts、Spring與Hibernate的組合就很不錯。目前使用頻率比較高的WEB框架:Struts、WebWork、Spring和Seam。編程語言靜態(tài)語言:數據類型在編譯期間檢查,也就是說在寫程序時要聲明所有變量的數據類型,如C、C++、C#和Java等。優(yōu)點在于結構規(guī)范、便于調試、類型安全缺點是為此需要寫更多類型相關的代碼,最終導致代碼不便于閱讀。動態(tài)語言:在運行期間才去做數據類型檢查的語言,也就是說,在用動態(tài)語言編程時,不需要給任何變量指定數據類
8、型,如Python、Ruby和Groovy等。優(yōu)點是方便閱讀,不需要寫非常多的類型相關的代碼缺點是不方便調試,當命名不規(guī)范時會造成對代碼的理解困難等。AJAX框架AJAX是一種創(chuàng)建交互式網頁應用的網頁開發(fā)技術。使用XHTML+CSS來表示信息;使用JavaScript操作DOM進行動態(tài)顯示及交互;使用XML和XSLT進行數據交換及