導航:首頁 > 編程語言 > java的缺點

java的缺點

發布時間:2023-08-17 17:38:20

A. java開發的缺點有哪些

我認為Java語言的10大問題是:
1、缺少閉包(closure):我想這個不需要解釋了。函數式編程已經存在幾十年了,但最近幾年,它們獲得了越來越多的關注,最主要的原因,是它可以自然地編寫並行程序。我部分的同意Joshua Bloch強調在Java中引入閉包的問題需要再想一想(BGGA提議的方式真的很糟),至少閉包的缺失,使得在Java中做任何真正的函數式編程都是不可能的。
2、缺少一等函數:這個問題與前一個有些關聯,但我認為它更糟糕。在Java里,要達到類似效果的唯一方式,是使用著名的、醜陋悲慘的單方法匿名內部類,但這看上去的確是一個拙劣的方法。甚至在C#中,也通過代理機制,提供了一個更好的實現。
3、原生類型(Primitive types):如果在Java中一切皆對象,那是多麼完美啊,但他們偏偏不這樣設計。因而,這一點導致了一些問題,比如,不能把一個int放到集合(Collection)里,這個在Java5中通過自動裝箱特性得到了解決(下面會提到)。它也造成了傳值與傳引用上的困擾,原生類型數據是通過值傳給方法的(復制一份拷貝,然後傳給函數),而真正的對象是通過傳遞(譯註:其實是復制對象地址再傳遞,因此應該也是傳值方式,只是由於函數內部可通過這個對象地址訪問對象,因此效果上類似傳引用)。
4、自動裝箱(Autoboxing)和自動拆箱(autounboxing):這個特性是為了解決因原生類型的存在所導致的問題,在Java5引入的。它允許靜默地轉換原生類型到相應的對象,但這常常導致其它的問題。比如Integer可以為null,但int不能,因此這時JVM只能拋出一個難以調試的空指針異常(NullPointerException)。此外,它還可能導致其它奇怪的行為,就像下面的例子,我們就很難理解,變數test為什麼是false:
Intger a = new Integer(1024);
Intger b = new Integer(1024);
boolean test = a < b || a == b || a > b;
5、缺少范型具類化:范型是Java5引入的一個很酷的特徵,但是為了保持與舊版本Java的兼容性,導致缺失某些重要的特性,尤其是不能在運行時反省范型的類型。例如,你有一個方法,接受List參數,如果傳進來一個List,你卻不能知道運行里該范型的確切類型。同理,你也不能創建范型數組。這意味著,盡管下面的代碼看起來很自然,但卻不編譯不了:
List[] listsOfStrings = new List[3];
6、不可避免的范型警告:你有發現過自己陷入不可能去掉的關於范型的警告么?如果你像我一樣大量使用范型,我打賭你碰到過。事實上,是這個問題的規模化症狀,讓他們認為需要引入一個特定的註解(@SuppressWarnings("unchecked"))來處理這種情況,我覺得,范型應該可能被設計的更好。
7、不能傳void給方法調用:我得承認,這種給方法傳遞void的需求,乍一看有些怪異。我喜歡DSL,當我實現自己的DSL庫(lambdaj)的一個特定特性時,我不得不需要一個方法聲明成這樣的簽名:void doSomething(Object parameter),這里為這個方法傳進來的參數parameter,是另一個方法調用的結果,它唯一的目的,是注冊調用(的對象)自身,以可以在以後執行它。讓我吃驚的是,即使println方法返回void,看上去也並沒有一個好理由,不允許我把代碼寫成這樣,:
doSomething(System.out.println("test"));
8、沒有原生的代理機制:代理是一種非常有效和應用廣泛的模式,但Java提供的代理機制,只針對介面,而不是具體類。這是為什麼象cblib這樣提供這種機制的庫,被如此多的主流框架,如Spring和Hibernate,採用的原因。此外,由於cglib通過運行時創建被代理類的子類來實現的,因此這些種方式有一個眾所周知的限制——不能代理final類,比如String。
9、差勁的Switch...case語句:Java規定,switch...case只能選擇int和enum(Java5開始)。這一點如果跟更現代的語言如Scala相比,看起來簡直太弱了。
10、受檢查異常(Checked exception):類似原生類型,受檢查異常也已經成為Java的一個罪孽之源。它迫使程序員必須做下面兩件極其糟糕討厭的事情中的一個:讓你的代碼里充斥大量的、糟糕難讀的、容易出錯的try...catch語句,而這樣做的最大意義,只是將捕獲的異常,包裝成運行時異常,然後再重新拋出;或者是讓大量的拋出聲明子句污染你的API,讓介面缺少靈活性和可擴展性。
真正的問題是,這里我提到的這幾大主要問題,唯一的解決辦法,是要做一個痛苦的決擇,定義一套新的語言規范,放下當前版本的向後兼容性。我猜他們永遠也不會這么做,雖然我相信,如果編寫一個能夠自動轉換舊Java源碼的程序,讓它們與假設的新版本兼容,並不是很困難。最後,這就是我決定開始尋找一個更好的JVM兼容語言的原因。

B. java 中的繼承的 優點和缺點 主要是缺點

缺點是靈活性吧...effective java有專門章節(貌似是"復合優先於繼承")詳細的講解了繼承了局限性..~

以下內容來自互聯網:

組合

通過創建一個由其他對象組合的對象來獲得新功能的重用方法
新功能的獲得是通過調用組合對象的功能實現的
有時又叫聚合
例如:
一個對象擁有或者對另外一個對象負責並且兩個對象有相同的生命周期。(GOF)
一個對象包含另一個對象集合
被包含對象對其他對象是不可見的並且只能從包含它的對象中訪問的特殊組合形式
組合的優缺點

優點
被包含對象通過包含他們的類來訪問
黑盒重用,因為被包含對象的內部細節是不可見的
很好的封裝
每個類專注於一個任務
通過獲得和被包含對象的類型相同的對象引用,可以在運行時動態定義組合的方式
缺點
結果系統可能會包含更多的對象
為了使組合時可以使用不同的對象,必須小心的定義介面
繼承

通過擴展已實現的對象來獲得新功能的重用方法
基類有用通用的屬性和方法
子類提供更多的屬性和方法來擴展基類
繼承的優缺點

優點
新的實現很容易,因為大部分是繼承而來的
很容易修改和擴展已有的實現
缺點
打破了封裝,因為基類向子類暴露了實現細節
白盒重用,因為基類的內部細節通常對子類是可見的
當父類的實現改變時可能要相應的對子類做出改變
不能在運行時改變由父類繼承來的實現
由此可見,組合比繼承具有更大的靈活性和更穩定的結構,一般情況下應該優先考慮組合。只有當下列條件滿足時才考慮使用繼承:

子類是一種特殊的類型,而不只是父類的一個角色
子類的實例不需要變成另一個類的對象
子類擴展,而不是覆蓋或者使父類的功能失效

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zjliu1984/archive/2009/06/26/4299657.aspx

C. java有什麼優點和缺點

Java是一種可以撰寫跨平台應用程序的面向對象的程序設計語言。Java技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。
Java是功能完善的通用程序設計語言,可以用來開發可靠的、要求嚴格的應用程序。
java是純面向對象開發,功能強大,分支眾多,沒有java不能做的軟體。C/S也好B/S也好。從功能上講,沒有語言可以和java相比。
Java穩定,應用廣泛,一定時期內很難被其他編程語言取代;而許多大型系統都是用java開發,也不可能輕易使用其他語言。

同時,java還具有很多特點
1、跨平台性,雖然是很好的優勢,可以讓java在任何的系統中運行,但是前提是該系統要安裝java虛擬機,這樣導致一些java編寫的桌面程序無法在一般的用戶(沒有安裝java虛擬機的用戶)上使用
2、java的身後是sun公司,提供及時的api更新,但是過多的版本導致java的向下兼容性很差。而sun公司在j2ee上的標準定義的並不是完美,導致在j2ee的開發中多數使用開源框架,開源框架是好東西,但是更新速度並不快。
3、都說面向對象的語言先進與面向過程,java是oop語言,但是它適合的是bs系統,在web項目中java的實力毋庸置疑,但是轉到了底層的程序卻無法同c++抗衡。
4、個人認為java的最大優點是開源,但是這往往也成了最大的缺陷了,無法定義一個好的標准使得開發時使用了框架,在新的程序員來到公司時必須先了解框架,延緩了開發的時間。

所以java的前景應該是穩定而光明的。

D. java的優勢與缺點

Java是一種可以撰寫跨平來台應用軟體自的面向對象的程序設計語言。Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。

優勢:Java適合團隊開發,軟體工程可以相對做到規范。由於Java語言本身的極其嚴格語法的特點,Java語言無法寫出結構混亂的程序。這將強迫程序員的代碼軟體結構的規范性。這是一個很難比擬的優勢。

劣勢:J2EE的架構很完美,第一版軟體可以做滿意,但是很不適合互聯網模式的持續不斷修改。互聯網軟體工程管理上的不足,持續的修修補補導致架構的破壞。

E. 對JAVA的理解,JAVA的優缺點,

JAVA的優點:

1、簡單性

2、面向對象

3、分布性

4、編譯和解釋性

5、穩健性

6、安全性

7、可移植性

8、高性能

9、多線索性

10、動態性

JAVA的缺點:

1、速度比較慢

(5)java的缺點擴展閱讀:

Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。

Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。

Java語言是一門隨時代快速發展的計算機語言程序,其深刻展示了程序編寫的精髓,加上其簡明嚴謹的結構及簡潔的語法編寫為其將來的發展及維護提供了保障。由於提供了網路應用的支持和多媒體的存取,會推動Internet和企業網路的Web的應用。

另外,為了保持Java的增長和推進Java社區的參與,Sun公司在Java One開發者大會上宣布開放Java核心源代碼,以鼓勵更多的人參與到Java社團活動中。

來自Java社團和IBM等全球技術合作夥伴兩方面的支持,Java技術在創新和社會進步上繼續發揮強有力的重要作用,並且隨著其程序編寫難度的降低使得更多專業人員將精力放置於Java語言的編寫與框架結構的設計中。

閱讀全文

與java的缺點相關的資料

熱點內容
ps修改有褶皺的文件 瀏覽:417
javadbfreader 瀏覽:307
蘋果手機數字代碼是什麼 瀏覽:66
驅動程序順序安裝腳本 瀏覽:665
word文件里怎樣查重 瀏覽:219
mx5系統基帶版本 瀏覽:184
ntlea全域通win10 瀏覽:171
qq怎麼查看別人的收藏 瀏覽:135
地震三參數matlab程序 瀏覽:57
怎樣給優盤文件加密軟體 瀏覽:7
收拾文件有哪些小妙招 瀏覽:431
pdf文件去底網 瀏覽:253
win10重裝系統需要格式化c盤嗎 瀏覽:424
路由器trx文件 瀏覽:655
淘寶店鋪數據包怎麼做 瀏覽:195
win10鍵盤黏連 瀏覽:332
json如何生成表格 瀏覽:323
怎麼修復sql資料庫表 瀏覽:40
微信微博差別 瀏覽:163
簽到積分換禮品app 瀏覽:812

友情鏈接