Java團隊對設計Java時的關鍵考慮因素進行了總結,關鍵特性包含如下列表:程序員
動態性編程
Java的設計目標之一是讓專業程序員可以高效的學習和使用,若是瞭解了面向對象編程的基本概念,學習Java將會更容易,若是你是一位有經驗的C++程序員,那麼只須要很是少的努力就能夠遷移到Java。由於Java繼承了C/C++的語法以及許多面向對象特性,大部分程序員學習Java都不困難。安全
每次下載一個「正常的」程序時,都具備必定的風險,由於下載的代碼可能包含病毒、木馬或其餘有害代碼。而Java經過將應用程序限制在Java執行環境中,而且不容許訪問計算機的其餘部分來實現這種保護。下載程序並能確保不會形成危害,而且不會破壞安全性的能力,被認爲是Java最重要的一個創新。網絡
不能移植是由於編譯器變異成的可執行代碼,針對不一樣CPU須要不一樣的指令集。而Java編譯器輸出的不是可執行代碼,是字節碼,字節碼在Java虛擬機JVM中被解釋執行,JVM提供了從字節碼到各類平臺的翻譯。所以Java程序只須要一次編譯,生成字節碼,能夠在各個系統中的JVM上運行。多線程
Java是從C/C++衍生而來,繼承了C++面向對象的特性。Java中的對象模型既簡單又易於擴展,而基本類型(如整型)仍然是高性能的非對象類型。分佈式
爲了活動可靠性,Java在一些關鍵領域進行了限制,從而使程序員在程序開發中及早的發現錯誤。由於Java是強類型化的語言,它在編譯時檢查代碼。固然無論怎樣,在運行時也檢查代碼,使編寫好的程序在不一樣的條件下能夠預見的方式運行是Java的關鍵特性之一。性能
Java支持多線程編程,容許編寫同步執行許多工做的程序,可以建立運行平穩的交互式系統。Java提供了易用的多線程方法,使得只須要考慮程序的特定行爲,而不須要考慮多任務子系統。學習
對於開發人員來講,擔憂由於操做系統升級、處理器升級以及核心系統資源的變化,均可能致使程序出現故障。Java設計人員對Java語言作出了一些艱難的決策,Java虛擬機就是試圖解決這個問題的。其目標是「編寫一次,不管什麼時候、何地都能永遠運行」。操作系統
Java經過編譯生成字節碼,在JVM上運行,JIT及時編譯器將那些能從編譯中受益的代碼轉換爲高性能的本機代碼,其餘代碼繼續保持解釋執行。線程
Java是針對Internet的分佈式環境而設計的,能處理TCP/IP協議,使用URL訪問資源與訪問文件沒有多大區別。Java還支持遠程方法調用RMI,容許程序經過網絡調用方法。
Java程序自己帶有大量的運行時類型信息,這些信息能夠用在運行時驗證和解決對象訪問問題。這使得以一種安全、方便額方式動態的連接代碼成爲可能。