PHP,JAVA,NET 開發比較

一、語言


PHP:PHP產生與1994年,其語法混合了C、Java、Perl 和他自創的一些編程語法;PHP是嵌入在HTML中執行的;它也是一種解釋性語言。早期的PHP並非完全的面向對象編程語言,到了PHP4以後的版本纔開始有了面向對象的概念。

JAVA:JAVA產生與1995年,JAVA語言和JAVA平臺統稱爲JAVA;它語法與C語言和C++語言很接近,並且JAVA是面向對象編程語言,JAVA是編譯性語言,可以先將JAVA源碼編譯成.class文件後,在JAVA虛擬機上解釋執行。

.NET:在.NET中,多種編程語言支持開發如:VB、C#、F#等等,通常我們都在使用C#編程,C#是爲.NET平臺專們打造的一種編程語言,產生與2000年。其語言語法和JAVA、C、C++相近,同樣也是一種面向對象編程語言。C#同樣需要編譯爲.dll文件,然後由.net框架中CLR編譯執行。

語言區分:PHP、JAVA、C#這幾天語言最大的區別就是執行方式的不同。其中還有一些語言本身的區別,比如是否爲強類型、是否能動態編譯、是否爲多線程、是否爲分佈式、是否可移值等等。至於很多人說的性能上的問題,我認爲語言本身上的性能問題差異並不大,關建在於寫程序的人如何編寫的代碼。另外,在關於與語言結和的數據庫方面也有一定的區別,PHP通常使用MySQL數據庫,JAVA通常使用MySQL或Oracle,而C#因爲是微軟的產物,通常使用與微軟相關的數據庫Sql Server或Access等,有時候也會用Sqllite數據庫。

二、平臺:

PHP:一般人在稱呼PHP的時候,本身並沒有平臺和語言的區別。我們用PHP往往只做WEB應用開發,至於桌面應用程序的開發,近年好像PHP出了這種開發平臺,但現實應用中幾乎看不到。但是不得不說,PHP在WEB的表現層應用中,有很好的表現,不論從處理界面佈局,或是性能上都有着不錯的優勢。

JAVA:我們在稱呼JAVA的時候,往往說的並不一定是語言本身,而是指JAVA平臺。在JAVA平臺中,可以使用JAVA語言去開發各種不同的應用開發,比如說:Java SE、Java EE和Java ME,分別用於開發JAVA桌面應用、WEB應用、移動應用等等。

.NET:在.NET這個體系中,語言和平臺是有明顯區別的,而且一個平臺上可以應用多種語言開發,這樣就滿足了掌握不同語言的程序員可以開發同一個應用程序。在.NET平臺中,也像JAVA一樣,可以開發不同的應用,比如:WinForm(桌面應用)、控制檯應用、ASP.NET(WEB應用)、WPF(新的桌面應用)、WCF(網絡通信基礎應用)、WEB服務(面向服務編程應用)、ASP.NET MVC3.0(新的WEB應用)、XNA(桌面及手機遊戲應用)等等。

平臺區分:三種技術平臺都可以做我們常用的WEB應用。對於桌面應用來說,PHP並不太適用,JAVA則沒有較好的桌面應用的開發工具,這方面.NET平臺有較好的優勢,不論是Winform還是WPF,都非常適合做桌面應用程序。至於實現一些底層的複雜業務,PHP則不如JAVA和.NET,但是在做前端表現層的時候有着較好的優勢。所以很多複雜的大型綜合應用,可能會有.NET或者JAVA做數據訪問層及業務邏輯層,PHP則用來做表現層。據所說淘寶就是基於這種方式開發的。同時,JAVA與.NET(mono)都是可以跨平臺的,.NET還能跨語言。

二。學.Net還是學Java

因爲.Net和Java是國內市場佔有率最高的兩門技術,對於準備學習編程語言的初學者來說,.Net和Java是初學者首先考慮的兩門技術,因此很多人一遍遍的問“學.Net還是學Java”,社區中也每天都有“.Net控”在唱衰Java,也有“Java控”在唱衰.Net,一時間硝煙四起,讓初學者更加迷惑。

     從北京、廣州、上海等地區2010年的就業統計數據(由於沒有找到更權威的數據,這些數據是我對主流招聘網站和技術網站的相關數據進行的並不是太嚴謹的分析)來看,.Net和Java的職位數量比例爲2:3,從就業網站和主要技術社區數據來看,2010年.Net和Java的學習人員數量比例爲1:3。從數據上看,.Net的職位絕對數量比Java低一些,不過Java學習人員數量比.Net學習人員高出3倍,因此.Net職位的競爭激烈程度低於Java。

 

    由於.Net秉承了微軟技術的入門簡單的特點,經過短時間的學習就可以掌握拖拉控件的快速開發方式,很多人被.Net的快速開發方式所滿足,認爲自己“學成了”,不再深入研究,因此人才市場上充斥着很多隻會拖控件、而不懂.Net更深入一步技術的.Net開發人員,比如很多ASP.Net的書上都是講ASP.Net服務端控件,很多所謂“精通ASP.Net”的人連什麼是Http、HTML、JavaScript、Dom等基本概念都稀裏糊塗,實際公司項目中很多功能點的實現不是簡單的拖一個ASP.Net服務端控件就能搞定的,因此看似學習.Net的人非常多,但是真正滿足企業要求的人則比較少;而Java則入門門檻比較高,如果想要配置一個Hello World級別的學習環境就會涉及到很多技術,開發環境也要學習者自行配置,對於初學者來說可能花費一週時間都無法配置一個最簡單的環境出來,Java的開發環境也不像.Net開發環境那麼可用性強,Java和.Net的區別就像Windows和Linux的區別,正因爲Java學習門檻非常高,很多學習者被淘汰了下來,這樣能夠撐過一個個難關學習下來的開發人員都是水平比較高的人員。因此.Net初級開發人員的工資平均是比Java初級開發人員的工資平均略低的。但是由於.Net中高級人才非常缺乏,因此掌握.Net深入技術的開發人員在企業內部是非常吃香的,招聘人員經常發出這樣的感嘆“招合適的Java工程師能招來一堆,招合適的.Net工程師一個月都招不來幾個”。

 

    .Net入門快,在.Net中微軟爲開發人員提供了一套最佳的技術架構搭配、集成的開發環境,用微軟的技術架構開發出的系統就可以保證最好的效果,而不用像Java開發人員那樣去學很多開源框架再去學習搭建技術架構、開發環境,因此.Net學習週期比Java短,有了語言基礎後再進行集訓式的就業班學習,那麼.Net學習者學習3個月可以進入就業,Java學習者需要5個月可以進入就業。

 

    微軟的本地化推廣工作做得非常好,因此學習.Net有大量的中文資料可以參考,因此除非研究很高深的領域,否則中文資料基本能滿足開發者的需求;而Java由於走的是高端路線,因此除了初學者資料外,大部分Java資料都是英文的,學習Java需要參考很多英文資料。因此如果英文非常好的學員學習Java就會很輕鬆,而英文不是很好的學員學習.Net會更好。

 

    綜上,Java入門門檻比較高,需要有足夠的毅力和百折不撓的精神,只要你能堅持下來你就可以將很多人在入門門檻上就將很多競爭者甩在身後。.Net入門門檻比較低,裝上VisualStudio就可以馬上進行開發,不需要進行太多的配置、不需要學太多基礎知識,這樣可以很輕鬆的掌握入門.Net學習,是有很成就感的事情,能讓你有興趣進一步學習,但是你不能止步於此,因此你會發現身邊也有無數的人也是“輕鬆入門”,你就需要繼續深入學習,深入學習同樣需要毅力和探索的精神,你要在這個階段上把絕大部分競爭者甩在身後。在我講“.Net入門簡單”的時候,有學生問“.Net把問題都簡化了豈不是.Net程序員都不值錢了?”,我的回答是“微軟簡化的是重複性的東西和低級的東西,這樣我們就能從這些低級的工作中脫身出來研究更深入的東西,因此.Net把問題簡化了只是使得那些只沉迷於簡單的東西的人不值錢了,會使得研究深入的人更值錢”,這就是“.Net入門容易,深入同樣難”這句話的意思。有人會問“哪些知識屬於深入的知識呢?”,比如你不僅要會用ADO.Net,還要研究ADO.Net架構中的設計模式,再比如你不僅要會拖拉ASP.Net控件,更要明白ASP.Net控件內部發生了什麼。,如果你想從學習一開始就儘快脫離控件型開發人員的行列,你可以每天登陸博客園,csdn等高端.Net社區,你會發現你進步是非常快的。

 

    可能對.Net的描述中有或多或少的偏向,但是拋去個人因素考慮,我沒有暗示Java好還是.Net好,請根據自己的情況進行選擇。而且.Net和Java並不像360和QQ那樣必須二者選其一,並不像很多初學者認爲的那樣“學一門語言就靠這門語言吃一輩子”,工作中很可能這個項目用Java,那個項目用.Net,因此你可以喜歡某個語言,但是不要抱着一門語言不放,更不用擔心“Sun被Oracle收購了,Java是不是完了?”、“我學.Net,如果微軟沒落了我是不是就失業了”之類的問題,不同語言只是不同的工具,換了一個新的工具可以很快的熟悉新的工具,大部分內容都是相通的,比如java中的web開發很熟悉了,轉而用ASP.Net也會發現大部分東西都是和JavaWeb一樣的,很快就能上手ASP.Net,難道你現在用的是諾基亞手機,你會害怕諾基亞倒臺你就不會用手機了嗎?“Java完了、微軟死了”這類問題不是開發人員去關心的事情,而是華爾街那些金融大鱷去考慮的問題,咱們只管用技術去賺錢養家就是了。

 

Java、.Net、PHP 市場應用

我們把Java .Net PHP應用方面佔有率做個比較,簡單的把目前主流應用分成兩個大類,一個是企業應用,一個是Web網站應用,下面這個表格是我歸納的,不一定準確,但是能說明一個大概。

應用 / 語言 Java .Net PHP
大型企業應用
中型企業應用
小型企業應用
大型Web應用
中型Web應用
小型Web應用
從表中可以看到,Java和PHP都有各自擅長的領域,但是.Net卻沒有突出的地方,從佔有率來看情況十分尷尬。
我們再來看看技術方面,首先聲明,我對其中每種語言技術都不是很熟悉,只能大概分析一下...
先說說Java,在企業級方面,可以說是絕對的老大,許多企業級技術,開發思想都是由Java發展出來的。缺點是Java開發部署比較麻煩 ,不太適合超小型的項目。
再說.Net,在1.x時代,.Net可以說基本上沒有多少企業級開發的特性,到了3.0,微軟各種框架技術雖然彌補了這些不足,但是相對於Java世界,還是有一定距離。 在Web網站方面,.Net服務器控件的優勢,變成了弱勢,由於服務器空間產生垃圾代碼,並且不方便美工調整,導致在前臺界面要求較高的門戶站點難以使用(雖然有第三方MVC框架,但是沒有IDE支持,體現不出.Net的優勢)
再說說PHP,他的定位非常明顯,就是Web開發,所以有很多適合Web開發的特性,比如部署十分簡單,幾個文件隨便找個虛擬主機扔上去就能運行。在國內因爲Discuz , DedeCMS等著名產品的鼎立推廣,PHP在中小型網站開發中有很大的優勢.,最近大量的開源框架出現,給PHP企業開發注入了一些生命力,可以說潛力十足。
綜合以上我們可以看到,.Net定位不太明確,微軟這個想吃那個也想吃,最後沒一個能吃飽吃好..
 
 
 
四。創業項目,你選擇什麼樣的開發語言
1、需要儘量節省成本;2、對效率需求很大;3、有擴展性需求;4、需要考慮可移植性;
只選擇主流語言:.Net、Java、PHP這類的語言。
.Net 屬於微軟的“個性”產品,可移植性不夠,否掉。
Java語言,太“高端”,開發人員成本相對較高,而開發效率稍差一些。
PHP語言,出現時間比較長,語言相對比較成熟。開發人員比JAVA成本略低一些,開發效率比JAVA快。
PHP與平臺無關可移植性比較好,代碼幾乎可以不用修改的在WINDOWS、LINUX上通用。
PHP的性能比JAVA略差,但是從這個項目對性能的需求來看,在可預期的時間內,還足夠應付。

總結:請注意,不論任何編程語言或技術平臺,並沒有好與不好之分,只有適合與否。在開發不同的項目時需要使用不同的技術。當然做爲程序員初學者來說,需要從一種比較容易上手的編程語言及平臺學起,培養自己的學習能力、興趣;基礎打紮實,才能在以後日新月異的技術更新中不斷成長。

最後代表個人一點小觀點:現在開始學it的話,我建議學php(web)或者java(手機)

當然.net開發者就要看微軟了,我希望是王者歸來雄霸天下,跟着微軟走永遠有混頭!

.net開發的優勢在於:快速開發(服務器控件做後臺非常好),後期維護成本低,當然在中國它還有一個優勢就是開發成本低,你懂得!

.net web開發的模式:webform (中小項目),aspnet mvc(大中項目)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章