給初學者之一:淺談java及應用

來源:互聯網
上載者:User
給初學者之一:淺談java及應用

學java不知不覺也已經三年了

從不知java為何物到現在一個小小的j2ee專案經理

雖說不上此道高手,大概也算有點斤兩了吧

每次上網,泡bbs逛論壇,沒少去java相關的版面

總體感覺初學者多,高手少,精通的更少

 

由於我國高等教育制度教材陳舊,加上java自身發展不過十年左右的時間

還有一個很重要的原因就是java這門語言更適合商業應用

所以高校裡大部分博士老師們對此語言的瞭解甚至不比本科生多

在這種環境下,很多人對java感到茫然,不知所措,不懂java能做什麼

即便知道了java很有用,也不清楚該從哪裡入手

所以就有了 java入門難 這一說法

 

ok,那我們就從java到底能做什麼聊起

 

先說什麼是java

 

java是一種物件導向語言,真正的物件導向,任何函數和變數都以類(class)封裝起來

至於什麼是對象什麼是類,我就不廢話了

關於這兩個概念的解釋任何一本物件導向語言的教材裡面都有

知道了什麼是java,那自然就會對java能幹什麼感興趣

 

在說java能做什麼之前,先說java作為一個真正物件導向語言的優點

首先第一個,既然是真正的物件導向,那就要做到徹底的封裝

這是java和c++最大的不同,java所有的源碼以及編譯後的檔案都以類的形式存在

java沒有所謂的類外部定義,所有的函數(方法)以及變數(屬性)都必須在類內部定義

這樣就不會出現一個類被切割成這裡一塊那裡一塊的情況,c++就可以,不是嗎?

這樣做使得整個程式的結構異常清晰,明了

 

其次第二個,最讓人歡呼雀躍的是完全屏蔽了指標,同時引入了記憶體回收機制

任何一個寫過c/c++代碼的人,都會對記憶體管理深惡痛絕

因為這使得我們不能把主要精力放在我們關心的事情上

而需要考慮電腦內部的一些事情,作為一個軟體工程師

我想沒有一個人願意把大量的時間花在記憶體管理上,畢竟我們不是電子工程師

此時java的優勢體現出來了,它完全屏蔽了記憶體管理

也就是說,如果你用java寫程式,寫出來的任何一個程式記憶體上的開銷,都不受你控制

乍一看,似乎你受到了束縛,但實際上不是這樣

因為雖然你的程式無法對記憶體進行管理,降低了一定的速度

但你的程式會非常非常的安全,因為你無法調用一個null 指標

而不像以前寫c的時候那樣,成天因為空白指標而擔驚受怕

當然,如果你深入瞭解這一行,就會發現java其實也無法保證程式不去調用空的指標

但是它會在最大程度上避免null 指標的調用

這已經很好了,安全,這是java的最突出的優點

 

第三個,虛擬機器跨平台,這是java最大的特點,跨平台

可能所有人都知道windows,但是不是所有人都知道unix

和java一樣,很多人都不知道unix這種作業系統幹什麼用

我不想多說unix的應用,這不是主要,但是我要說,大部分小型機

工作站,都跑在unix一族的作業系統上,比如linux/solaris

unix比起windows有一個最顯著的特點,穩定,這就好比思科和華為

思科的機器慢但穩定,華為的機器快但不穩定,作為伺服器這一端來說

要的皇怯卸囁歟俏榷ǎ評nix在伺服器端還是非常有市場的

而且很重要的windows不安全,在ms的宣傳中我想所有人都很少看到安全二字

因為windows作業系統針對的是pc使用者,pc死機就死機咯,大不了重啟

瘟95最經常冒出來的就是藍屏,在伺服器這一端上因為ms沒有自己的晶片

所以要做系統有些力不從心啊。扯遠了,那麼java可以做到在windows上編譯

然後在unix上運行,這是c/c++做不到的

 

那麼說到這裡,java能做什麼逐漸清晰起來

剛才說到了,java程式有一個的特點是安全

這個安全是針對你的系統來說得,系統在跑了java程式之後會特別地穩定

而且還能跨平台,那麼很明顯,java主要應用於除了windows作業系統以外所有的平台

比如手機,伺服器

想想看,如果你寫的程式要跑在手機上,而手機有多少款用的是windows?

就算有,那如果你用c/c++,是不是要針對每一款手機寫一套程式呢?

累死,那跨平台的java就不用,做到編譯一次,隨時運行

同樣,在伺服器這一端,如果我想給一個網路門戶網站,比如sina

寫一個應用程式,pc的效能肯定無法滿足sina這樣大網站並發數量的要求

那麼它就需要買伺服器,那麼伺服器ms沒有市場,而且windows很不安全

那麼十之八九會買一個sun/ibm的機器,或者hp,但不管是誰的機器

它裝的作業系統也不會是windows,因為windows太不安全了,而且多核的支援太差了

這個有空再說,那麼如果你要寫一個程式在這樣的機器上跑

難道我們就在這個機器上做開發嗎?當然不可能,一般程式員開發用的都是pc,windows

那麼該怎麼辦?寫一個程式,然後再拿到伺服器上去編譯,去調試?

肯定不可能,所以我們就希望找到一個語言,編譯完產生程式之後

在pc上調試,然後直接移植到伺服器上去,那麼此時,我們就會毫不猶豫地選擇java

因為在跨平台以及安全性來說,java永遠是第一選擇

 

ok,下面說java的缺點

 

一慢,這其實是一種誤區,這就好比goto語句一樣

java也拋棄了指標,雖然看上去似乎變慢了,但是在這個兩三年硬體效能就能翻番的年代

速度已經不是我們關心的問題了,而且對於企業級的應用來說

沒有什麼比安全穩定更重要的,換句話說,我們可以忍受慢,但是不能忍受死機和藍屏

而且越大型的應用,這種慢的劣勢體現得越模糊

因為當系統項目越做越大,任何一個環節做不好都可能影響全域的情況下

安全尤其重要,而且就像goto語句一樣

這種過分追求速度的主張會給系統開發和錯誤修正以及維護帶來無可挽回甚至不可避免的損失

把記憶體交給電腦去管理吧,這種代價值得

我們做的不是pc遊戲,沒必要把記憶體的那一點點消耗當親爹

 

二難看,又是一個誤區,很多人甚至拿出java swing控制項畫出的介面來說

呵呵,其實java不是不能畫得好看,IDEA就是java寫的IDE,挺漂亮的

但為什麼難看呢,是因為swing控制項它本身就是unix時代的產物,swing控制項貼近unix介面

老外看unix介面其實挺順眼的,他們就是吃unix飯長大的

而unix又是吃百家飯的,不像ms那麼唯利是圖,所以不怎麼對中國人友好

加上我國又沒有公司在做作業系統,所以看上去是不怎麼順眼

其實玩過unix的人都知道,unix對中文的支援一直不怎麼好

 

三我還沒想到,其他人補充

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.