首先聲明本文只從一個角度來說一下.NET和Java,而且只說一個點,可以肯定的是,本文的觀點肯定是片面的,但是我覺得可以說明一些問題,或者作為一些參考。
我個人不排斥任何技術,也認為任何技術都可以實現同一個業務目的。
個人涉獵過.NET, Java, Python, Rails,有的時間長些,有的時間短些。
技術是為業務服務的,或者是為某種商業或者非商業的目的來服務的,為了實現目的,為了提升效率,為了節省時間,應該說使用任何編程語言、任何編程平台,在大部分的場合都可以實現同一個目標。
語言和平台沒有高低優劣,只有場景適用。
首先語言是某個人,或者是某個團體,或者是某個公司,或者是某個行業領導團體,為了實現某種目的,加快某種業務,發明設計的,所以在設計的時候不免會打上發明者的烙印,發明者會希望,甚至會引導使用者以發明者希望的方式去使用這種語言。這就會影響不同語言的風格,使用風格,學習風格,還會產生一些所謂的語言之爭。
其實每種語言都會全面開發方式:包括高層的,也就是封裝好的,你只需要關注業務邏輯代碼,寫業務邏輯代碼就可以了;也包括底層的,也就是原始的開發方式,需要你在寫業務邏輯代碼的同時指定一些技術的參數,一些底層的參數需要你設置。
有的語言會引導你從高層先進入,然後在你需要的時候你再去選擇使用底層的方式。有的語言會直接引導你進入底層,然後提供你高層的方式。
就拿.NET和Java的web開發舉個例子。
.NET中可以使用ASP.NET做web開發,他有一種方式叫做WebForm,就是你可以直接拖控件到web頁面,然後雙擊控件,在背後寫代碼,比如注冊按鈕的背後寫一些注冊的業務邏輯。就好像你在開發WinForm桌面應用一樣,寫過VB的人都會明白。在這種開發方式中你可以不管http方面的知識,不對http進行任何操作,也可以做出web應用。甚至你在看微軟的一些WebForm視頻教程中,他也沒有主動向你介紹http的知識。所以可能給一些的人造成一種:我開發web不用管http的印象。直到很久,甚至幾年之後才理解到還需要http的知識才能更好的開發web應用。當然,你用WebForm也可以設置http的一些參數,只是通常大家沒有這麼使用。
但是ASP.NET也有底層的方式。它提供了一個IHttpHandler接口,你可以實現這個接口,來處理一次http請求,甚至沒有區分請求是GET還是POST,反正就是一次請求,具體控制和http參數設置,完全交給你來實現。它還有一個IHttpModule接口,實現這個接口,你可以對請求的過程進行控制和定制。比如說對請求的內容做一些額外的處理,權限控制,請求過濾之類的事情。
/// <summary> /// Summary description for AddContact /// </summary> public class AddContact : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; context.Response.Write("Hello World"); } public bool IsReusable { get { return false; } } }
Java是提供你一個基類HttpServlet ,繼承這個基類,有兩個方法doGet和doPost,可以接受get和post請求。如果你從java入門開發web應用,你就需要知道http的get和post,以及http的一些細節,因為在開發的時候就需要你理解和正確設置,才能有結果。
java也會有一些web開發框架,為了方便你的開發,也會向你隱藏一些實現的細節,讓你專注於業務開發。
ASP.NET還有一個MVC框架,也是通過擴展ASP.NET的IHttpHandler和IHttpModule來實現的。
說到這裡,相信有一部分讀者已經理解和明白我想說明的問題了。