給初學者之一:淺談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寫程序,寫出來的任何一個程序內存上的開銷,都不受你控制
乍一看,似乎你受到了束縛,但實際上不是這樣
因為雖然你的程序無法對內存進行管理,降低了一定的速度
但你的程序會非常非常的安全,因為你無法調用一個空指針
而不像以前寫c的時候那樣,成天因為空指針而擔驚受怕
當然,如果你深入了解這一行,就會發現Java其實也無法保證程序不去調用空的指針
但是它會在最大程度上避免空指針的調用
這已經很好了,安全,這是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對中文的支持一直不怎麼好
待續。。。。。