12.2.開發語言及平臺
語言只是一個工具,一種實現我們需要的工具,每種每言都有它的優點和缺點和,在不同領域發揮各自的長處,並且都有它存在的意義。
語言不段地發展,市場決定它們是生存還是沒落走向死亡。只有最活越,生命力強的語言才能生存下來。.net與java後面是強大的財團做後盾,大量被捆綁的客戶支援他,並有完備的客服,從商業角度選擇它是沒有錯誤的。
但不要拘泥與語言,使用你最熟悉的語言,選擇你最擅長的資料庫和作業系統。
目前大型網站都不會單一選擇一種語言和資料庫,一種作業系統。例如:
- 淘寶,前端展示頁面採用php,後臺管理採用java…
- Yahoo,主要使用php開發,但搜尋引擎採用java…
- Ticketmaster,前端展示採用perl開發,後臺管理java, 前臺展示資料庫採用mysql,會員資料庫採用oracle
像php/perl/python這種動態語言,開發速度快,週期端,對伺服器效能要求低,出錯率低,他們的設計這希望它能儘量使程式碼執行下去, 而不是丟擲異常,終止執行或崩潰。而行對於開發者要求門檻比較低。 php 無論怎麼開發都不會使web server 崩潰。而 Java 則不同,很容易崩潰。
Java 我認為java是個非常不錯的語言,錯在JVM上。這是一個垃圾的直譯器,效率極差。不加優化的,把所有東東全部load進記憶體。採用java技術,開發成本相當高,對開發人員要求很高,而且需要一個穩定的團隊。國內資深java開發人員大多轉向管理層。 只有細心的人才能駕馭Java,否則不能保證軟體質量,我在工作中發現php團隊開發的程式碼質量明顯比java高,bug 數量上比Java程式碼的 bug少很多。 我個人認為少於5年工作經驗程式設計師很難寫出一流的Java程式。 Java 架構最不能容忍的是有時不得不restart才能生效。而寫的很爛程式你不得不採用restart來保證系統正常。
.net 不是很熟悉,.net 開發環境最好,速度比java快,只要有錢,全用正版,選擇微軟的產品很不錯。很多linux愛好者鄙視M$, 對windows系統很有很大偏見,偏激。 window系統很穩定,並非像網上傳的那樣不堪一擊,很多引起windows崩潰的原因是硬體問題。我在工作中發現國產伺服器在板卡介面上做工不過關。 沒有鍍金或防氧化處理,導致記憶體丟失,cpu丟失,RAID丟失… 等等引起系統崩潰。但linux系統確能執行下去,不過一旦重啟,將不能恢復。
http://en.wikipedia.org/wiki/Middleware
很多人談到java就會涉及到三層架構即:web 容器 -> application server 應用伺服器,中介軟體 ->資料庫
三層架構其實不是什麼新鮮東西,J2EE僅僅是物件請求代理體系結構的一種,任何語言都能實現三層架構。中介軟體不是Java專利
-
編譯執行的語言基本都支援Corba
-
python 則有Zope,Zope是一個很成功App Server。足以比肩J2EE. python 也支援corba庫,我嘗試過python -> corba -> PostgreSQL.但效能不佳。
php/perl 一樣可做到,採用SOAP,XML-RPC等技術,可以實現部分功能。但我們可以在架構上做些改變。
總之,不要拘泥於三層架構,僅僅是實現方式的一種。沒有最合理,也沒有最好的,根據你的需求作出調整,最終是看結果,而不是實現過程。
中介軟體的概念
/--> app server --- web ---> ---> app server ----> Database --> app server ---/
php 分層
/--> web server --- load balance ---> --> web server ----> -> Database --> web server ---/ /--> web server --- /--> app server --- load balance ---> --> web server ----> -- SOAP/XMLRPC--> --> app server ----> Database --> web server ---/ --> app server ---/
你可以採用複核型架構,我曾經就做過這樣的專案php -> soap -> .net framework
/--> module --- apache ---> php ----> module ----> MySQL Database --> module ---> soap ---> IIS ---> DCOM ---> C# script ---> SQL Server -> module ---> tomcat ---> jasper report ---> Oracle
我們系統有一個需求是,在php中建立word,excel文件,編輯文件,比較文件…, 我們需要呼叫office.dll實現
同時我們有一個報表系統,是通過jasper report 實現的
另外fastcgi
.--> fastcgi process ---. / web server ---> ---> fastcgi process -----> Database / `--> fastcgi process----`
雲端計算還是個概念,但在雲端計算大潮中,不支援雲端計算,顯得沒有技術含量。
被網路炒得“神乎其神”。起初我誤以為是分散式計算的下一代,後來發現和分散式計算根本兩個不同的東西。與網格計算/分散式計算扯不上邊。
“雲端計算”這個詞已經被氾濫使用,
比較靠譜是亞馬遜EC2 其實就是一堆Xen虛擬機器, Dell說他的刀鋒伺服器是雲端計算,Vmware 也說是雲端計算,Oracle 說他的VirtualBox是雲端計算,說ZFS是雲端儲存。我也說不清楚,自己斟酌。
沒有真正的跨平臺語言,所謂跨平臺都是忽悠人。
只要提供不同平臺的編譯器加條件編譯,即可實現跨平臺。或提供不同平臺的直譯器,也可一實現跨平臺。
例如大家都很看中Java的跨平臺,但想一下,這個“跨平臺”是要打引號的,實際上這個跨平臺準確的說是跨Sun提供的標準JVM平臺,而非OS平臺。只要某個JVM支援某個OS,你的程式才可以跨過去。如果JVM不支援這個OS平臺,Sorry,你的程式不可能跨過去。 不信你去java.sun.com下載jre你會發現僅僅提供四個平臺版本Linux,Mac OS X,Solaris,Windows
很多OS都不支援Java。如FreeBSD 就不支援Java,必須使用Linux glib 執行Java,效率很低,IBM用的是IBM 自己開發 JVM 至於他和Sun Java有什麼關係,可能是授權。
只要能讓你的程式翻譯成JVM位元組碼,你的程式就可執行在JVM上。如:
php通過Quercus(http://quercus.caucho.com/)把PHP檔案編譯成.java檔案,讓後javac編譯成class檔案後在一些JavaEE應用容器中執行PHP程式
Jython可以將Python編譯成java檔案
JRuby可以將Ruby編譯成java檔案
虛擬機器並非只有JVM,還有Parrot, Perl6 就是在Parrot虛擬機器上實現的。
另外開發一種新語言也並非難事,只要你有時間精力投入我想不出3年,就可以打造一門新語言。
開發新語言也並非難事,只要你有時間精力投入我想不出3年,就可以打造一門新語言。
錯!
編譯不能保證程式碼安全,僅僅能保證你的程式碼不被人使用。
但目前中國人力成本相當的便宜,重新實現你的功能邏輯並非難事。所以只要你的網站上線,在很短的時間內就可以出現很多山寨版。
編譯流行的原因是為了解決微機的速度以及儲存問題,隨著微機處理器技術突破,你根本不用擔心速度問題。中型機與大型機領域指令碼語言站多數。
重用可以減輕勞動,但過分重用,會牽一髮動全身。
尤其對於二次開發者不熟悉你的系統,導致修改一個bug,又產生新的bug。
另外模板也不宜拆分的過於零碎。模本的組裝,需要很多時間並很消耗你的資源。
Mozilla Firefox 及擴充套件
-
Web Developer
-
Firebug 除錯必備工具
-
YSlow 效能分析工具
-
Live HTTP Headers 相當於HTTP Sniffer嗅探器,可以跟蹤HTTP協議頭,除錯cache時比較有用。
-
IE Tab 用於IE/Firefox之間切換
-
FoxClocks 如果開發工作跨時區,這個很有用
-
Foxmarks Bookmark Synchronizer/Weave 將開發資源放入書籤,同時在開發團隊中保持同步
-
Fasterfox 可以一顯示頁面載入時間,方便頁面優化. 如果安裝了YSlow可以不裝這個外掛。
-
FireFTP
-
Adblock Plus
-
flash block
-
Chat Zilla
-
Super DragAndGo
開發工具
-
visual studio 不必多說
-
eclipse 出身於Java但他不單單是Java開發工具,目前他已經是一個通用的語言IDE,我一直用eclipse寫PHP,Python,Perl還有Docbook XML
-
TortoiseSVN 版本控制工具.
-
WinMerge 檔案差異比較與合併 , Beyond Compare 我用過最好的比較合併工具。
原文出處:Netkiller 系列 手札
本文作者:陳景峰
轉載請與作者聯絡,同時請務必標明文章原始出處和作者資訊及本宣告。
相關文章
- C#程式語言及.NET 平臺快速入門指南C#
- 綠茵面家平臺開發(開發平臺)
- 如何開發直播平臺,直播平臺開發需要CDN嗎
- Web快速開發平臺,基於二次開發平臺Web
- 力軟快速開發平臺:方便快捷的Web開發平臺Web
- java和.net 雙語言開發框架,開源的PaaS平臺Java框架
- 數控開發平臺
- 國內開發平臺
- node.js開發平臺Node.js
- 高通Android平臺開發Android
- 微信公共平臺開發(轉)
- Opensae去中心化交易平臺系統Solidity語言開發中心化Solid
- 基於Linux系統的語音卡開發平臺(轉)Linux
- 數字資產幣幣交易平臺開發區塊鏈合約交易平臺開發區塊鏈
- 低程式碼開發平臺是什麼意思?低程式碼開發平臺優勢!
- C#Winform快速開發平臺與軟體配置平臺C#ORM
- TRONex智慧合約APP開發平臺(真實平臺)APP
- 跨平臺開發框架的大旗框架
- SAAS平臺每日開發進度
- 高通MDM平臺開發入門
- 數藏平臺開發貴嗎
- 跨平臺開發框架 Lynx 初探框架
- .NET平臺常用的開發元件元件
- Windows Live平臺開發資源Windows
- EOS開發平臺和框架薦框架
- Asp.Net快速開發平臺(敏捷開發框架ASP.NET敏捷框架
- API開發平臺,提高API開發及管理效率API
- AI開發平臺系列2:整合式機器學習平臺對比分析AI機器學習
- NeuChar 平臺使用及開發教程(二):設定平臺賬號
- NFT交易平臺定製開發|NFT交易平臺專案搭建
- 微信開放平臺 第三方平臺開發踩坑記錄
- 程式語言及計算機硬體基礎計算機
- 數字貨幣交易平臺開發,虛擬幣自動搬磚量化交易平臺開發
- LeaRun快速開發平臺,快速開發.net/java專案Java
- 快速開發平臺正逐步取代傳統開發模式模式
- 直播平臺開發難嗎?自己開發須謹慎
- 微信公眾平臺開發(六) 翻譯功能開發
- 開發多人純語音聊天直播交友平臺的技術難點分析