根據統計,學習Java的小夥伴占所有語言的第一,其次是Python,但大有後來居上的趨勢。
那麼,問題來了,現在Java為什麼依然受到大家的追捧?
1、Java廣受歡迎
Java仍然是世界上最受歡迎的編程語言之一,有無限多種方法使用Java。
根據2019年5月TIOBE指數,Java被評為最受歡迎的編程語言。
2、薪資可觀
根據最新的統計報告證明,Java程序員依然是業內薪資最高的程序員之一。
根據全球數字化業務媒體機構Quartz的分析,擁有Java技能有利於提高薪資。
根據全球就業相關內容搜索引擎http://Indeed.com對職業排名的報告顯示,2016年2月美國Java開發人員招聘職位的平均薪資102,000美元。
所以,Java程序員依然是高薪的代名詞。
3、Java程序員市場緊缺
據不完全統計,目前國內每年IT人才缺口達20萬之多,而且缺口還在擴大,Java作為廣泛使用的編程語言,擁有龐大的客戶群,現有的人才儲備還遠遠不夠,在可預計的未來,Java程序員都將處於供小於求的狀態。
4、Java無處不在
據估計,全球范圍內有超過30億部設備運行Java,超過其他任何一種語言。
使用Java編寫的程序幾乎可用於任何設備,包括智能手機、伺服器、自動取款機、銷售點終端機(POS)、藍光播放器、電視、機頂盒、物聯網網關、醫療設備、Kindle電子閱讀器、汽車等。
5、Java廣泛應用於現實世界中
你可能想知道Java有哪些應用領域。下面為你列舉幾個例子:
Java被用於全球最知名的眾多網站中。
Java尤其適用於在幾乎任何行業中開發企業應用等,包括金融服務、醫療保健和製造業。
Java是物聯網的理想之選。
Java是雲開發的完美選。
6、Java擁有巨大潛力
Java已經有了二十幾年的歷史,這也證明了它在行業中擁有巨大的潛力。
誰會希望用一種幾年後就被淘汰的語言編寫應用程序?
7、出色的Java工具有助於提高工作效率
選擇編程語言的一個重要因素是:能夠確保工作效率的優秀開發工具。
許多工具都是免費或者開源提供。NetBeans和Eclipse都是集成開發環境(IDE)空間的最佳證明。
8、Java擁有強大的發展路線圖
Oracle仍將遵循強大的路線圖致力發展Java。Oracle計劃將該平台模塊化,同時提高安全性和使用性能。
這將使Java擴展更為輕松,可用於從大型軟體系統到小型設備的各種設備規模,其中包括嵌入式物聯網處理器。
以上,就是學習Java的八大理由,希望能夠對你有所幫助!
望採納~
㈡ java中面向對象技術特點體現在哪幾個方面並解釋各方面的意義
面向對象程序設計中的概念主要包括:對象、類、數據抽象、繼承、動態綁定、數據封裝、多態性、消息傳遞。通過這些概念面向對象的思想得到了具體的體現。
1)對象
對象是運行期的基本實體,它是一個封裝了數據和操作這些數據的代碼的邏輯實體。
2)類
類是具有相同類型的對象的抽象。一個對象所包含的所有數據和代碼可以通過類來構造。
3)封裝
封裝是將數據和代碼捆綁到一起,避免了外界的干擾和不確定性。對象的某些數據和代碼可以是私有的,不能被外界訪問,以此實現對數據和代碼不同級別的訪問許可權。
4)繼承
繼承是讓某個類型的對象獲得另一個類型的對象的特徵。通過繼承可以實現代碼的重用:從已存在的類派生出的一個新類將自動具有原來那個類的特性,同時,它還可以擁有自己的新特性。
5)多態
多態是指不同事物具有不同表現形式的能力。多態機制使具有不同內部結構的對象可以共享相同的外部介面,通過這種方式減少代碼的復雜度。
6)動態綁定
綁定指的是將一個過程調用與相應代碼鏈接起來的行為。動態綁定是指與給定的過程調用相關聯的代碼只有在運行期才可知的一種綁定,它是多態實現的具體形式。
7)消息傳遞
對象之間需要相互溝通,溝通的途徑就是對象之間收發信息。消息內容包括接收消息的對象的標識,需要調用的函數的標識,以及必要的信息。消息傳遞的概念使得對現實世界的描述更容易。
㈢ java有哪些技術上的優點比其他語言好在哪兒
技術上說Java語言並沒有什麼特別的優勢。跟同質語言比,它的語言設計不如C#,而且短期內沒有追近的勢頭(雖然從Java 8開始有進展了,但C# 6也在進步);跟異質語言比,它對native的精確控制和靈活性不如C++,動態性或者說便利性又不如Ruby、Python、JavaScript這些,在特定領域(例如高並發)的便利性又不如別的特定語言(並發如Erlang,數據處理如R),跟新一代中間應用層面語言如Go、Swift比也沒法比。
要說為啥大學要用Java語言教學,那就是因為——它是門靠譜的民工語言。
Java語言的設計從現在的角度看非常中庸,啥都不是特別出色,但都「還行」。
出來找工作,會Java的話還是有不少選擇餘地的。
庫方面也有非常豐富的選擇,無論是核心功能還是各種擴展功能。
某些核心功能如果不想用標准庫的話還可以用很多第三方庫來替代。例如:
正則表達式不想用 java.util.regex ?有很多替代品,試試
。
㈣ java技術簡介
Java既是一種編程語言,又是一個平台。
Java是具有以下特徵的高級程序語言:
* 簡單
* 面向對象
* 可分布
* 可解釋
* 強壯
* 安全性
* 結構化
* 輕便
* 功能強大
* 多線程
* 動態
Java既可以被編譯,也可以被解釋。通過編譯器,可以把Java
程序翻譯成一種中間代碼 - 稱為位元組碼 - 可以被Java解釋器
解釋的獨立於平台的代碼。通過解釋器,每條Java位元組指令被
分析,然後在計算機上運行。只需編譯一次,程序運行時解釋
執行。
㈤ Java語言有哪些特點
1、簡單性:Java語言繼承了C++語言的優點,去掉了C++中學習起來比較難的多繼承、指針等概念,所以Java語言學習起來更簡單,使用起來也更方便。
2、面向對象:Java是一種面向對象的編程語言。
3、分布性:Java設計成支持在網路上應用,它是分布式語言。所以只要用Java編寫了一個程序,就可以到處應用。可以節省大量人力物力。
4、編譯和解釋性:Java編譯程序生成位元組碼,而不是通常的機器碼,這使得Java開發程序比用其他語言開發程序快很多。
5、穩健性:Java剛開始被設計出來就是為了寫高可靠和穩健的軟體的。所以用Java寫可靠的軟體很容易。目前許多第三方交易系統、銀行平台的前台和後台電子交易系統等都會用Java語言開發。
6、安全性:Java的存儲分配模型是它防禦惡意代碼的主要方法之一。所以很多大型企業級項目開發都會選擇用Java開發。
7、可移植性:Java並不依賴平台,用Java編寫的程序可以運用到任何操作系統上。
8、高性能:Java是一種先編譯後解釋的語言,所以它不如全編譯性語言快。但Java設計者製作了「及時」編譯程序,這樣就可以實現全編譯了。
9、多線索性:Java是多線索語言,它可以同時執行多個程序,能處理不同任務。
10、動態性:Java語言設計成適應於變化的環境,它是一個動態的語言。
㈥ Java語言主要特點有哪些
1、Java語言是簡單的。
2、Java語言是一個面向對象的。
3、Java語言是分布式的。
4、Java語言是健壯的。
5、Java語言是安全的。
6、Java語言是體系結構中立的。
7、Java語言是可移植的。
8、Java語言是解釋型的。
9、Java是高性能的。
10、Java語言是多線程的。
11、Java語言是動態的。
Java語言的優良特性使得Java應用具有無比的健壯性和可靠性,這也減少了應用系統的維護費用。Java對對象技術的全面支持和Java平台內嵌的API能縮短應用系統的開發時間並降低成本。
㈦ Java語言主要特點有哪些
1.簡單
Java最初是為對家用電器進行集成控制而設計的一種語言,因此它必須簡單明了。Java語言的簡單性主要體現在以下三個方面:
1) Java的風格類似於C++,因而C++程序員是非常熟悉的。從某種意義上講,Java語言是C及C++語言的一個變種,因此,C++程序員可以很快就掌握Java編程技術。
2) Java摒棄了C++中容易引發程序錯誤的地方,如指針和內存管理。
3) Java提供了豐富的類庫。
2.面向對象
面向對象可以說是Java最重要的特性。Java語言的設計完全是面向對象的,它不支持類似C語言那樣的面向過程的程序設計技術。Java支持靜態和動態風格的代碼繼承及重用。單從面向對象的特性來看,Java類似於Small Talk,但其它特性、尤其是適用於分布式計算環境的特性遠遠超越了Small Talk。
3.分布式
Java包括一個支持HTTP和FTP等基於TCP/IP協議的子庫。因此,Java應用程序可憑借URL打開並訪問網路上的對象,其訪問方式與訪問本地文件系統幾乎完全相同。為分布環境尤其是Internet提供的動態內容無疑是一項非常宏偉的任務,但Java的語法特性卻使我們很容易地實現這項目標。
4.健壯
Java致力於檢查程序在編譯和運行時的錯誤。類型檢查幫助檢查出許多開發早期出現的錯誤。Java自已操縱內存減少了內存出錯的可能性。Java還實現了真數組,避免了覆蓋數據的可能。這些功能特徵大大縮短了開發Java應用程序的周期。Java提供Null指針檢測數組邊界檢測異常出口位元組代碼校驗。
5.結構中立
另外,為了建立Java作為網路的一個整體,Java將它的程序編譯成一種結構中立的中間文件格式。只要有Java運行系統的機器都能執行這種中間代碼。現在,Java運行系統有Solaris2.4(SPARC),Win32系統(Windows95和WindowsNT)等.Java源程序被編譯成一種高層次的與機器無關的byte-code格式語言,這種語言被設計在虛擬機上運行,由機器相關的運行調試器實現執行。
6.安全
Java的安全性可從兩個方面得到保證。一方面,在Java語言里,象指針和釋放內存等C++功能被刪除,避免了非法內存操作。另一方面,當Java用來創建瀏覽器時,語言功能和瀏覽器本身提供的功能結合起來,使它更安全。Java語言在你的機器上執行前,要經過很多次的測試。它經過代碼校驗,檢查代碼段的格式,檢測指針操作,對象操作是否過分以及試圖改變一個對象的類型。
7.可移植的
這句話一直是Java程序設計師們的精神指標,也是Java之所以能夠受到程序設計師們喜愛的原因之一,最大的功臣就是JVM的技術。大多數編譯器產生的目標代碼只能運行在一 種CPU上(如Intel的x86系列),即使那些能支持多種CPU的編譯器也不能同時產生適合多 種CPU的目標代碼。如果你需要在三種CPU( 如x86、SPARC 和MIPS)上運行同一程序, 就必須編譯三次。
但JAVA編譯器就不同了。JAVA編譯器產生的目標代碼(J-Code) 是針對一種並不 存在的CPU--JAVA虛擬機(JAVA Virtual Machine),而不是某一實際的CPU。JAVA虛擬機能掩蓋不同CPU之間的差別,使J-Code能運行於任何具有JAVA虛擬機的機器上。
虛擬機的概念並不AVA 所 特 有 的:加州大學幾年前就提出了PASCAL虛擬機的概念;廣泛用於Unix伺服器的Perl腳本也是產生與機器無關的中間代碼用於執行。但針對Internet應用而設計的JAVA虛擬機的特別之處在於它能產生安全的不受病毒威脅的目標代碼。正是由於Internet對安全特性的特別要求才使得JVM能夠迅速被人們接受。 當今主 流的操作系統如OS/2、MacOS、Windows95/NT都已經或很快提供對J-Code的支持。
作為一種虛擬的CPU,JAVA 虛擬機對於源代碼(Source Code) 來說是獨立的。我們不僅可以用JAVA語言來生成J-Code,也可以用Ada95來生成。事實上,已經有了針對若干種源代碼的J-Code 編譯器,包括Basic、Lisp 和Forth。源代碼一經轉換成J-Code以後,JAVA虛擬機就能夠執行而不區分它是由哪種源代碼生成的。這樣做的結果就是CPU可移植性。 將源程序編譯為J-Code的好處在於可運行於各種機器上,而缺點是它不如本機代碼運行的速度快。
同體系結構無關的特性使得Java應用程序可以在配備了Java解釋器和運行環境的任何計算機系統上運行,這成為Java應用軟體便於移植的良好基礎。但僅僅如此還不夠。如果基本數據類型設計依賴於具體實現,也將為程序的移植帶來很大不便。例如在Windows3.1中整數(Integer)為16bits,在Windows95中整數為32bits,在DECAlpha中整數為64bits,在Intel486中為32bits。通過定義獨立於平台的基本數據類型及其運算,Java數據得以在任何硬體平台上保持一致。Java語言的基本數據類型及其表示方式如下:byte8-bit二進制補碼short16-bit二進制補碼int32-bit二進制補碼long64-bit二進制補碼float32-bitIEEE754浮點數double32-bitIEEE754浮點數char16-bitUnicode字元在任何Java解釋器中,數據類型都是依據以上標准具體實現的。因為幾乎目前使用的所有CPU都能支持以上數據類型、8~64位整數格式的補碼運算和單/雙精度浮點運算。Java編譯器本身就是用Java語言編寫的。Java運算系統的編制依據POSIX方便移植的限制,用ANSIC語言寫成。Java語言規范中也沒有任何"同具體實現相關"的內容。
8.解釋的
Java解釋器(運行系統)能直接運行目標代碼指令。鏈接程序通常比編譯程序所需資源少,所以程序員可以在創建源程序上花上更多的時間。
9.高性能
如果解釋器速度不慢,Java可以在運行時直接將目標代碼翻譯成機器指令。Sun用直接解釋器一秒鍾內可調用300,000個過程。翻譯目標代碼的速度與C/C++的性能沒什麼區別。
10.多線程
多線程功能使得在一個程序里可同時執行多個小任務。線程--有時也稱小進程--是一個大進程里分出來的小的獨立的進程。因為Java實現的多線程技術,所以比C和C++更鍵壯。多線程帶來的更大的好處是更好的交互性能和實時控制性能。當然實時控制性能還取決於系統本身(UNIX,Windows,Macintosh等),在開發難易程度和性能上都比單線程要好。任何用過當前瀏覽器的人,都感覺為調一副圖片而等待是一件很煩惱的事情。在Java里,你可用一個單線程來調一副圖片,而你可以訪問HTML里的其它信息而不必等它。
11.動態
Java的動態特性是其面向對象設計方法的發展。它允許程序動態地裝入運行過程中所需要的類,這是C++語言進行面向對象程序設計所無法實現的。在C++程序設計過程中,每當在類中增加一個實例變數或一種成員函數後,引用該類的所有子類都必須重新編譯,否則將導致程序崩潰。Java從如下幾方面採取措來解決這個問題。Java編譯器不是將對實例變數和成員函數的引用編譯為數值引用,而是將符號引用信息在位元組碼中保存下傳遞給解釋器,再由解釋器在完成動態連接類後,將符號引用信息轉換為數值偏移量。這樣,一個在存儲器生成的對象不在編譯過程中決定,而是延遲到運行時由解釋器確定的。這樣,對類中的變數和方法進行更新時就不至於影響現存的代碼。解釋執行位元組碼時,這種符號信息的查找和轉換過程僅在一個新的名字出現時才進行一次,隨後代碼便可以全速執行。在運行時確定引用的好處是可以使用已被更新的類,而不必擔心會影響原有的代碼。如果程序連接了網路中另一系統中的某一類,該類的所有者也可以自由地對該類進行更新,而不會使任何引用該類的程序崩潰。Java還簡化了使用一個升級的或全新的協議的方法。如果你的系統運行Java程序時遇到了不知怎樣處理的程序,沒關系,Java能自動下載你所需要的功能程序。四.與C和C++語言的異同 Java提供了一個功能強大語言的所有功能,但幾乎沒有一點含混特徵。C++安全性不好,但C和C++還是被大家所接受,所以Java設計成C++形式,讓大家很容易學習。Java去掉了C++語言的許多功能,讓Java的語言功能很精煉,並增加了一個很有用的功能,Java去掉了以下幾個C和C++功能和特徵:指針運算結構typedefs#define需要釋放內存全局變數的定義這個功能都是很容易引起錯誤的地方。
12. Unicode
Java使用Unicode作為它的標准字元,這項特性使得Java的程序能在不同語言的平台上都能撰寫和執行。簡單的說,你可以把程序中的變數、類別名稱使用中文來表示<注>,當你的程序移植到其它語言平台時,還是可以正常的執行。Java也是目前所有計算機語言當中,唯一天生使用Unicode的語言。
㈧ Java的核心技術有哪些
第一:Java虛擬機 Java虛擬機的主要任務是裝在class文件並且執行其中的位元組碼。Java虛擬機包含一個類裝載器,它可以從程序和API中裝載class文件。Java API中只有程序執行時需要的那些類才會被裝載。位元組碼由執行引擎來執行。不同的Java虛擬機中,執行引擎可能實現得非常不同。在由軟體實現的虛擬機中,最簡單的執行引擎就是一次性解釋位元組碼。另一種執行引擎更快,但是也更消耗內存,叫做"即時編譯器(just-in-time compiler)"。在這種情況下,第一次被執行的位元組碼會被編譯成本地機器代碼。編譯出的本地機器代碼會被緩存,當方法以後被調用的時候可以重用。第三種執行引擎是自適應優化器。在這種方法里,虛擬機開始的時候解釋位元組碼,但是會監視運行中程序的活動,並且記錄下使用最頻繁的代碼段。程序運行的時候,虛擬機只把那些活動最頻繁的代碼編譯成本地代碼,其他的代碼由於使用得不是很頻繁,繼續保留為位元組碼-由虛擬機繼續解釋它們。一個自適應的優化器可以使得Java虛擬機在80%~90%的時間里執行被優化過的本地代碼,而只需要編譯10%~20%的對性能有影響的代碼。 當Java虛擬機是由主機操作系統上的軟體實現的時候,Java程序通過調用本地方法(native method)和主機交互。Java中有兩種方法: Java方法和本地方法。Java方法是由Java語言編寫,編譯成位元組碼文件,存儲在class文件中的。本地方法是由其他語言(比如c,c++或匯編語言)編寫的,編譯成何處理器相關的機器代碼。本地方法保存在動態鏈接庫中,格式是各個平台專有的。運行中Java程序調用本地方法時,虛擬機裝載包含這個本地方法的動態庫,並調用這個方法。本地方法是聯系Java程序和底層主機操作系統的連接方法。
第二:類裝載器的體系結構 一個Java應用程序可以使用兩種類裝載器:"啟動(bootstrap)"類裝載器和用戶定義的類裝載器。啟動類裝載器(這是系統中唯一的)是Java虛擬機實現的一部分。啟動類裝載器通常使用某種默認方式從本地磁碟中裝載類,包括Java API類(啟動類裝載器也被稱為原始類裝載器、系統類裝載器或者默認類裝載器)。 Java應用程序能夠在運行時安裝用戶定義的類裝載器,這種類裝載器能夠使用自定義的方式來裝載類。例如,從網路下載class文件。盡管啟動類裝載器是虛擬機實現的本質部分,而用戶定義的類裝載器不是,但用戶定義的類裝載器能夠用Java來編寫,能夠被編譯成class文件,能夠被虛擬機裝載,還能夠像其它對象一樣實例化。 由於有用戶定義類裝載器,所以不必再編譯的時候就知道運行中的Java應用程序中最終會加入的所有的類。用戶定義的類裝載器使得在運行擴展Java應用程序成為可能。當它運行時,應用程序能夠解決它需要哪些額外的類,能夠決定是使用一個或是更多的用戶定義的類裝載器來裝載。由於類裝載器是用Java編寫的,所以用任何在Java代碼中可以表述的風格來進行類裝載。這些類可以通過網路下載,可以從某些資料庫中獲取,甚至可以動態生成。 每一個類被裝載的時候,Java虛擬機都監視這個類,看到它到底是被啟動類裝載器還是被用戶定義類裝載器裝載。當被裝載的類引用了另外一個類時,虛擬機就會使用裝載第一個類的類裝載器裝載引用的類。例如,如果虛擬機使用一個特定的類裝載器裝載Volcano這個類,它就會使用這個類裝載器裝載Volcano類使用的所有類。 由於Java虛擬機採取這種方式進行類的裝載,所以被裝載的類默認情況下只能看到被同一個類裝載器裝載的別的類。通過這種方法,Java的體系結構允許在一個Java應用程序中建立多個命名空間。運行時的Java程序中的每一個類裝載器都有自己的命名空間。 Java應用程序可以創建多少個(或多少種)被不同的類裝載器裝載的類存放在不同的命名空間中,它們不能相互訪問,除非應用程序顯示地允許這么做。當編寫一個Java應用程序的時候,從不同源文件裝載的類可以分隔在不同的命名空間中。通過這種方法,就能夠使用Java類裝載器的體系結構來控制任何不同源文件中裝載的代碼之間的相互影響,特別是能夠阻止惡意代碼獲取訪問或破壞善意代碼的許可權。 Web瀏覽器是一個動態擴展的例子,Web瀏覽器使用用戶定義的類裝載器從網路下載用於Java applet的class文件。Web瀏覽器使用一個用來安裝用戶定義類裝載器的Java應用程序。這個用戶定義的類裝載器通常被稱為Java Applet類裝載器,它知道如何向HTTP伺服器請求class文件。Java Applet可以作為動態擴展的例子,因為Java應用程序並不知道它什麼時候會開始從網路下載瀏覽器請求的class文件。只有當瀏覽器遇到有Java applet的頁面時,才決定是否需要下載class文件。 Web瀏覽器啟動的Java應用程序通常為每個提供class文件的網路地址分別創建不同的用戶定義類裝載器,因此,不同的用戶定義類裝載器裝載不同來源的class文件。這就可以把它們分別放置在Java主機應用程序的不同命名空間之下。由於不同來源的Java applet文件放置在不同的命名空間中,惡意的Java applet代碼就不會直接訪問從別的地方下載的class文件。這就能夠限制或阻止不同來源的代碼之間的相互訪問。
第三:Java class文件 Java class文件主要在平台無關性和網路移動性方面使Java更適合網路。它在平台無關性方面的任務是:為Java程序提供獨立於底層主機平台的二進制形式的服務。這種途徑途徑打破了C或者C++等語言所遵循的傳統,使用這些傳統語言寫的程序通常首先被編譯,然後被連接成單獨的、專門支持特定硬體平台和操作系統的二進制文件。通常情況下,一個平台上的二進制可執行文件不能在其他平台上工作。而Java class文件時可以運行在任何支持Java虛擬機的硬體平台和操作系統上的二進制文件。 當編譯和連接一個C++程序時,所獲得的可執行二進制文件只能在指定的硬體平台和操作系統上運行,因為這個二進制文件包含了對目標處理器的機器語言。而Java編譯器把Java源文件的指令翻譯成位元組碼,這種位元組碼就是Java虛擬機的"機器語言"。class文件設計得緊湊,因此它們可以快速地在網路上傳送。其次,由於Java程序是動態連接和動態擴展的,class文件可以在需要的時候才下載。這個特點使得Java應用程序能夠安排從網路上下載class文件的時間,從而可以最大限度地減少終端用戶的等待時間。
第四:Java API Java API通過支持平台無關性和安全性,使得Java適應於網路應用。Java API是運行庫的集合,它提供了一套訪問主機系統資源的標准方法。運行Java程序時,虛擬機裝載程序的class文件所使用的Java API class文件。所有被裝載的class文件(包括從應用程序中和從Java API中提取的)和所有已經裝載的動態庫(包含本地方法)共同組成了再Java虛擬機上運行的整個程序。 在一個平台能偶支持Java程序以前,必須在這個特定平台上明確地實現API的功能。為訪問主機上的本地資源,Java API調用了本地方法。由於Java API class文件調用了本地方法,Java程序就不需要再調用它們了。通過這種方法,Java API class文件為底層主機提供了具有平台無關性、標准介面的Java程序。對Java程序而言,無論平台內部如何,Java API都會有同樣的表現和可預測的行為。正是由於在每個特定的主機平台上明確地實現了Java虛擬機和Java API,因此,Java程序自身就能夠成為具有平台無關性的程序。 Java API在Java安全性模型方面也有貢獻。當Java API的方法進行任何有潛在危險的操作(比如進行本地磁碟寫操作)之前,都會通過查詢訪問控制器來檢驗是否得到了授權。訪問控制器是一個類,該類用來執行棧檢驗,已決定是否允許某種操作。
㈨ java的特點有哪些
1、跨平台性,雖然是很好的優勢,可以讓java在任何的系統中運行,但是前提是該系統要安裝java虛擬機,這樣導致一些java編寫的桌面程序無法在一般的用戶(沒有安裝java虛擬機的用戶)上使用。
2、java的身後是sun公司,提供及時的api更新,但是過多的版本導致java的向下兼容性很差。而sun公司在j2ee上的標準定義的並不是完美,導致在j2ee的開發中多數使用開源框架,開源框架是好東西,但是更新速度並不快。
3、都說面向對象的語言先進與面向過程,java是oop語言,但是它適合的是bs系統,在web項目中java的實力毋庸置疑,但是轉到了底層的程序卻無法同c++抗衡。
4、個人認為java的最大優點是開源,但是這往往也成了最大的缺陷了,無法定義一個好的標准使得開發時使用了框架,在新的程序員來到公司時必須先了解框架,延緩了開發的時間。