-
1 # 蘑菇頭MTV
-
2 # 千鋒頭號粉絲
提到程式語言,大多數人第一個想到的或許就是Java,而近期程式設計界似乎被Python刷屏,那麼這兩者究竟哪一種更勝一籌呢?
Java PK Python
Java是一種面嚮物件語言,具有許多程式設計師熟悉的類似於C / C ++的語法。其吸引力和價值所在是其具有的可移植性和相對效率。Java作為一種編譯語言,執行模式與解釋性語言(比如Python和Perl)相比更加以機器為中心。Java不僅僅是一種語言和庫:它也是一個虛擬機器,一個生態系統。Java虛擬機器(JVM)是執行Java程式碼的理想化和行動式平臺。程式設計師不必擔心硬體細節,並且不必將程式碼移植到新平臺,Java承諾“一次寫入,到處編譯(WORA)”。同時,JVM語言有很多,比如Groovy、Clojure、Scala、Python或者Jython。
Python起源於一種指令碼語言,它的語法體現了一種可讀性的理念,具有簡單而規則的界限,鼓勵簡潔和一致的程式碼佈局。Python的參考實現(以C編寫,被稱為CPython)在許多平臺上可用,並且是眾多實現中最常用的。Python的動態型別有助於程式碼簡化和組合,是許多平臺的解釋性語言,成為眾多程式設計師程式設計首選的行動式選項。Python是圍繞可擴充套件物件模型構建的通用語言。其面向物件的核心並不意味著物件定向是開發人員在用Python程式設計時最常用的方式。它支援程式化程式設計,模組化程式設計和部分函數語言程式設計。
Java PK Python之一:速度
在網路I / O成本或資料庫訪問占主導地位的情況下,語言的具體效率不如技術選擇和設計方面的整體效率重要。Java和Python都不適合高效能計算,但在效能上,Java還是略勝一籌。雖然一些Python實現(如PyPy)可以針對性能進行微調,但原始的行動式效能Python不佔優勢。
Java的效率優勢體現在虛擬機器執行。程式執行時,JVM可以將位元組碼轉換為本地機器碼。這種即時(JIT)編譯讓Java的效能略勝Python。Java從其第一個公開版本起就支援併發,而Python則是按序執行。在當前多核處理的趨勢下,Java程式碼更易實現。
Java PK Python之二:實用敏捷性
漫長的發展中,Java和Python都受益匪淺。Java通常被認為與敏捷開發及其社群有更密切的聯絡。Python在敏捷領域一直存在,並且受到諸多原因的影響而更加普及,包括DevOps運動的興起。
Java比Python具備更一致的重構支援,一方面,它的靜態型別使自動化重構更可預測和可靠,另一方面是Java開發中IDE(例如IntelliJ,Eclipse和NetBeans)的普及。Python的動態型別在程式碼中鼓勵使用不同型別的敏捷性,其重點在於簡潔和流動。然而,Pythonic文化傾向於多種編輯器,而不是基於IDE,這意味著對強自動重構的支援較低。
Python的指令碼起源和在其標準庫中包含測試功能意味著Python對現代開發中自動化測試相當重視,儘管它更有可能是整合而不是單元測試。在Java世界中,傳統Java程式碼庫可以透過採用另一種JVM語言來加以改善,例如使用Groovy或Clojure進行自動化測試,或者完全跨越Java Universe,例如使用Python來處理系統方面操作 。
Java PK Python之三:架構
圍繞Python Web框架構思的軟體體系架構與Java的不會相差甚遠。Java和Python都有各自的開源社群,並有很多程式設計師一直在源源不斷的貢獻原始碼,這些程式碼已經解決了常見或者不常見的問題,事實上,這兩種語言都因開源社群而受益匪淺。
Java PK Python之四:歷史遺留問題
歷史遺留問題在其技術上具有慣性。當企業選擇了一種程式語言,就很難再次更換。例如,更多的企業專案後端可能會使用Java程式碼來擴充套件其功能,也許可以遷移到更新版本的語言,或者透過其他JVM語言(如Scala和Groovy)新增新功能。Java在企業中的歷史比Python更久,這也是招聘Java程式設計師的企業比招Python更多的原因。
Java PK Python之五:市場普及度
此外,兩種語言在教育中都具有強大的立足點,但Java比Python更常用於大學課程中。
結論
Java和Python都是富有活力的程式語言,這兩種語言與開放性相關聯,所以公司,團隊和程式設計師在做出決定時最好保持開放的態度。
回覆列表
不能說哪個更好,得看情況,這兩種語言各有各的優點;python容易入門,封裝度較java高,開發速度將比java快,java更偏底層一些,如:java讀取檔案要寫很多行程式碼,而python只需要兩行程式碼就能搞定;但這並不是說java不如python,java偏底層使得程式編寫更靈活。
java比python穩定,python3和python2就不相容,造成了一定程度上的不穩定。java可利用資源更豐富,資料全,容易查閱,而python的中文資源就很少。