的確,Java存在缺陷。但是……
【編者按】本文作者為資深碼農 Tim Spann,主要講述 Java 讓人無法抗拒的眾多優點以及一些些缺陷。本文系國內 ITOM 管理平臺 OneAPM 編譯呈現,以下為正文。
早在90年代中期,筆者在E&Y工作時,就開始使用Java程式設計,那是我使用的還是Java 1.0版本。HotJava是當時唯一的書,而且只有語言規範。當時,Java是祕密的流行語言。非常前衛,比C的語法更進步,比C++更安全。可以在UNIX,Windows,Linux,Mac或set-top中執行,非常驚人。它足夠強大,許多公司都使用Java編寫瀏覽器,伺服器,引擎,規則引擎,庫,框架。當時的Java可謂風靡一時。現在,它的增長變緩。但是,圍繞Java的開發環境(Eclipse),伺服器(Hadoop生態系統),大資料,以及庫的數量與規模,都是相當驚人的。
Java仍然在Android中使用(未來可能被Swift取代,但不是現在)。
JVM是強大的,執行著各種幾近實時/大資料和大型的網站。數量龐大的公司仍然在企業級和Web應用中使用它。 AOL已經推出了一個非常不錯的Java 8庫。Spring Boot是一個很棒的快速開發Java的庫。
儘管筆者所有的Spark編碼都在Scala中完成,但我仍然需要Java Maven資源庫。數以萬計的Java庫是驚人的。它們適用於Scala和JVM上的其他語言。此外,還有很多來自Lightbend 和Pivotal,強大且精簡,貫徹12要素理念的微服務以及輕量級的庫。
並且,很多供應商都提供Java支援:Oracle,IBM,HPE,EMC,VMWare,Hortonworks和Cloudera。新的庫和出色的工具每天都在出現。如果你在GitHub搜尋新的Java庫和專案,你會發現很多不錯的選擇,涵蓋了方方面面的內容。
如果你想開發物聯網,Java語言到處都是。
成千上萬的開發人員,數以百計的諮詢公司,全球2000強中的大多數企業,都在進行Java開發,並擁有大量的Java資產。
它是擁有最新特性的最酷的語言嗎?不是,但是每個Java版本都匯聚了現有語言的精髓。我喜歡Scala,Go 和Node.JS。但是,當我想寫一個人人都可以閱讀,能在每一個平臺執行的(例如,無處不在的Tomcat)程式時,我會選用Java進行編寫。每種雲,每種PaaS(平臺即服務),包括AWS,Google,CloudFoundry, Heroku,都支援Java。在虛擬機器,伺服器,膝上型電腦,Docker或Rocket容器上安裝並執行Java伺服器是非常簡單的。使用Spring Boot,SparkJava,DropWizard,Ninja,Play等框架,你就可以編寫簡潔的微服務和優秀的程式碼。
Java是冗長的,但很容易閱讀。而維護程式碼是程式設計時最重要的事情,即使你所編寫的程式碼最終會被取代。測試程式碼為下一次迭代或應用發版,提供了良好的參考文件。
Java會步Cobol後塵嗎?有可能,但Cobol仍在使用中。而Java至少將在企業中再流行20年。
我會使用Scala和Go,或者其他一些語言嗎?當然會。Java會消失或失寵嗎?短期內不會。如果Java消失了,那Android,Hadoop,IoT就得跟著消失。而實際上,你只需要一種廣泛應用的語言以及會用這種語言程式設計的人,就夠了。也許Node.JS更適合前端,Go更適合網路伺服器, Scala更適合Spark。但是,對於企業而已,Java是更不容易出錯的選擇。雖然,的確有許多糟糕的程式設計師,許多混亂的程式碼,你甚至會指責Java沒有迫使人們編寫更好的程式碼(Scala在這方面做得更好)。但是,Java就是自由的象徵。Java可以在任何平臺自由執行,做任何事情,使用任何你想要的庫,編寫任何專案。Java仍然是大學裡教授的主要語言,並且存在於很多優秀的庫中,比如Stanford NLP。
筆者期待積極的討論。
Java的確存在缺陷,但這些缺陷並不妨礙它在世界上最主要的公司和系統內全天候地完成工作。
OneAPM 能為您提供端到端的 Java 應用效能解決方案,我們支援所有常見的 Java 框架及應用伺服器,助您快速發現系統瓶頸,定位異常根本原因。分鐘級部署,即刻體驗,Java 監控從來沒有如此簡單。想閱讀更多技術文章,請訪問 OneAPM 官方技術部落格。
本文轉自 OneAPM 官方部落格
原文地址:https://dzone.com/articles/java-and-the-superfriends-stronger-than-one
相關文章
- Java中的讀寫鎖ReentrantReadWriteLock詳解,存在一個小缺陷Java
- 我的樹莓派4為啥供不了電?官方確認:存在設計缺陷樹莓派
- hortonworks/registry 的Registry,registry存在,但是卻查不到
- 拖拽式快速建站存在哪些缺陷?
- 81%的開發人員表示知道軟體存在缺陷
- Facebook AI指出:CNN的padding機制,存在一大缺陷AICNNpadding
- keras已經安裝但是顯示不存在的問題Keras
- Oracle 調優確定存在問題的SQLOracleSQL
- 特斯拉存在安全缺陷?可在車主不知情下被訪問??
- 特斯拉存在安全缺陷?可在車主不知情下被訪問
- 量子加密技術存在缺陷?專家:客觀看待新技術加密
- 廣泛被使用的開源PJSIP SIP和媒體堆疊中存在安全缺陷JS
- 德國網路安全域性警告卡巴斯基防毒軟體存在安全缺陷防毒
- 微軟否認Windows7存在缺陷稱UAC不會被黑客利用微軟Windows黑客
- 缺陷和缺陷報告
- 短影片app開發中存在的哪些要點是必須明確的?APP
- AI的存在不是威脅真正的威脅是沒有正確使用AIAI
- 大型翻車現場:如何實現記錄存在的話就更新,如果記錄不存在的話就插入。很簡單、但是很實用
- 缺陷
- 問題:兩個物件值相同(x.equals(y) == true),但是可能存在hashCode不同嗎?物件
- 資料儲存的 timestamp 時間正確 但是 Laravel 取出來的時間慢的 8 小時Laravel
- 100%英偉達的錯:黃仁勳確認Blackwell缺陷修復,明年初出貨
- Java如何停止執行緒,確定你知道的都是正確的麼?Java執行緒
- 微軟首次提及Windows Core OS 其存在正式被確認微軟Windows
- 那些 “被消失” 的缺陷
- 軟體缺陷的案例
- Java學習的正確開啟方式Java
- 如何正確實現 Java 中的 HashCodeJava
- 缺陷描述
- 複雜背景的缺陷提取
- 最新版 appcrawler2.4.0 還是會存在截圖命名不正確的情況APP
- leetcode:確實的第一個整數(java)LeetCodeJava
- Java 正確的做字串編碼轉換Java字串編碼
- java lombok包在maven已經配置,但是註解沒用JavaLombokMaven
- start.up 可以啟動 docker,但是桌面快捷方式不可以,git 路徑是正確的DockerGit
- OI是好的,但是GEO
- IDEA Error:java xxxx 程式包不存在IdeaErrorJava
- 2020.10.03 目前缺陷
- 漏洞解析——通用異常缺陷及字串比較缺陷字串