姓名:于川皓 學號:16140210089
轉載自:http://www.importnew.com/7520.html
【嵌牛導讀】:Java是一種能夠廣泛應用的高級語言酪我,那么它有什么優(yōu)點呢翎苫?
【嵌牛鼻子】:編程語言,程序設計
【嵌牛提問】:Java語言的優(yōu)點是什么膨处?
【嵌牛正文】:在我們平常開發(fā)中我想使用到的最多語言就是java了怒允,有幸購得Java核心技術卷一書,其實不想買的,因為自己感覺基礎還不錯桑嘶,有讀過瘋狂Java講義,java編程思想這些基礎的躬充,也讀過java網絡編程,spring核心技術卷等進階的書逃顶。說來也是和這本書有緣,一個學妹轉測試了充甚,便宜轉賣以政,看她那么辛苦,我實在不忍心伴找,就買下了這本書盈蛮。準備挑燈苦讀,把晚上的時間留給這本書技矮。翻開書本的第一卷抖誉,很好的向我闡述了Java的11個優(yōu)點殊轴。
1.簡單性:
這個簡單在我看來可謂是簡單不簡單了,怎么說了袒炉,如何拿它和C旁理,匯編去對比,真的是簡單了許多我磁,我們看Java里面沒有頭文件孽文,指針運算(甚至指針語法,但我認為 Java的引用就跟指針差不多)夺艰,結構芋哭,聯合,操作符重載郁副,虛基類等楷掉。然而設計者沒有試圖清除C++中所有不適當的特性,例如Switch霞势,不過java的if語句真的很強大烹植,我們可以用if ,else 來作真假的所有判斷。另外java的類庫很強大愕贡,我們可以用java去做編程的大部分事情草雕,這讓編程變得更加簡單;
2.面向對象:
一直再說面向對象,包括我學習java的第一章課固以,老師都對我講什么是面向對象墩虹,當時聽的云里霧里的,只記得萬物皆對象憨琳。面向對象簡單的講是一種程序設計技術诫钓。它講重點放在數據(即對象)和對象的接口上。用人吃飯來舉個例子篙螟,面向對象會這樣表達菌湃,人(吃)飯,在這里人和飯是對象遍略,而吃我們可以理解成為動作惧所。人就是主語而飯是賓語,吃就是所謂的謂語绪杏。而我們的面向過程關注的是什么啦下愈,關注的是吃這個過程。表達出來的第一個意思就是吃蕾久,然后由吃來引導吃势似?吃什么啦,答曰吃飯。誰吃飯啦履因,人吃飯辖佣。偶原來面向過程是這樣的啊。
在過去的40年里搓逾,面向對象已經證明了自身的價值卷谈,一種現代的程序設計語言不實用面向 對象技術簡直讓人難以置信。的確Java的面向對象特性與C++起鼓相當霞篡。Java與C++的主要不同點在于多繼承世蔗,在java中取而代之的是簡單的接口繼承,以及java的元素模型.
3.網絡技能:
Java有一個擴展的例程庫朗兵,用于處理像HTTP和FTP之類的TCP/IP協議污淋。Java的應用程序能夠通過URL打開和訪問網絡上的對象,其便捷程序就好像訪問本地文件一樣余掖。
人們已經看到Java的網絡能力強大且易于使用寸爆。任何曾經試圖使用其他語言進行網絡編程的人都會驚呼Java竟然把類似于打開socket連接這類繁重的任務都變得如此簡單。另外遠程方法調用機制使得分布式對象之間可以進行通信盐欺。
4.健壯性:
Java的設計目標之一在于使得Java編寫的程序具有多方面的可靠性赁豆。Java投入了大量的精力進行早期的問題檢測,后期動態(tài)(運行時)檢測冗美,并消除了又出錯傾向的狀態(tài)......Java和C++最大的不同在于java采用的指針模型可以消除重寫內存和順壞數據的可能性魔种。這個特性非常有用,我們再程序編寫的時候往往就會自動提示很多其他語言僅在運行時刻才能夠檢測出來的錯誤粉洼。至于第二點节预,就更加有用了,對于曾經話費幾個小時來堅持由于指針bug而引起的內存沖突的人來說属韧,一定非常喜歡java這一特性安拟。其原理在于Java的內存模型,他把引用和實際值放在兩塊不同的內存中宵喂,這個以后再細說糠赦。
5.安全性:
Java適用于網絡/分布式環(huán)境。為了達到這個目標樊破,在安全方面投入了很大精力愉棱。使用Java可以構建防病毒唆铐,防篡改的系統哲戚。
6.體系結構中立:
編譯器生成一個體系結構中立的目標文件格式,這是一種編譯過的代碼艾岂,只要有java運行時系統就可以再許多處理器上運行顺少。這并不是什么新的思路,在40多年前就有這種技術了,當然這也執(zhí)行效率很慢很多脆炎,然而虛擬機有一個策略就是把使用最繁瑣的字節(jié)碼序列翻譯成機器碼梅猿,這一過程叫做即時編譯。
7.可移植性:
與C不同秒裕,java規(guī)范中沒有依賴具體實現的地方袱蚓。基本數據類型的大小以及有關算法都做了明確的說明几蜻。
例如java的基本類型永遠都是固定的喇潘,不論在什么環(huán)境下,而在C中梭稚,Int有可能是16位颖低,也有可能是32位。只有把數據類型的大小和有關算法固定了弧烤,我們再任何應用系統上基本上都不需要重寫代碼忱屑。
8.解釋性:
Java的解釋器可以再任何移植了解釋器的機器上執(zhí)行Java字節(jié)碼,所以我說Java是一種解釋性語言暇昂,他在語法上面要更容易讓人理解與編寫莺戒,由于鏈接是一個增量式且輕量級的過程。所以開發(fā)過程也變得更加快捷急波,更加具有探索性脏毯。
9.高性能:
盡管對解釋后的字節(jié)碼性能已經比較滿意,但在有些場合下還需要更加高效的性能幔崖。字節(jié)碼屖车辍(在運行時刻)快速地翻譯成運行這個應用程序的特定CPU的機器碼。在早期Java性能一直是一塊詬病赏寇,但是現在即時編譯的速度已經很快了吉嫩,人們又對JVM進行了很多優(yōu)化,導致現在Java的性能也比較快了嗅定。
10.多線程:
多線程可以帶來更好的交互響應和實時行為自娩。同時也大大提高了我們的執(zhí)行效率,在這里多線程這把雙刃劍就不多說了渠退,Java為我們實現多線程提供了很多支持忙迁,使我們能更加容易的去編寫多線程程序。在底層碎乃,主流平臺實現多線程的機制各不相同姊扔。
11.動態(tài)性:
從各種角度來看,Java要比C更加具有動態(tài)性梅誓,它能夠適應不斷發(fā)展的環(huán)境恰梢,庫中可以自由添加新方法和實例變量而對客戶端卻沒有任何影響佛南。這里主要還是因為Java使用的是接口繼承。不去破壞我們原來的方法嵌言,從而實現新的功能嗅回。當我們需要對某些代碼添加到正在運行的程序中時,動態(tài)性是一個非常重要的特性摧茴,因為我們可以獲取到運行時的類信息绵载,這對于 JavaGUI構建器,只能調試器苛白,可插拔組件以及對象數據庫來說非常有用尘分。