甲骨文:有史以来最伟大的 25 个 Java 应用程序
摘要:從太空探索到基因組學,從反向編譯器到機器人控制器,Java 都是當今世界的核心。下面將介紹幾個從眾多 Java 應用程序中脫穎而出的優秀應用。
Java 的故事始于 1991 年,當時 Sun Microsystems 試圖將其在計算機工作站市場的領先地位擴展到新興且發展迅速的個人電子產品市場。幾乎沒有人預料到 Sun 即將創建的編程語言會使計算大眾化,激發了一個全球范圍的社區,并成為了一個由語言、運行時平臺、SDK、開源項目以及許多工具組成的持久軟件開發生態系統的平臺。經過James Gosling領導的數年秘密開發之后,Sun 于 1995 年發布了具有里程碑意義的“一次編寫,隨處運行” 的 Java 平臺,并將重點從最初的交互式電視系統設計轉到了新興的萬維網應用程序上。在本世紀初,Java 就已經開始為從智能卡到太空飛行器的一切制作動畫了。
如今,數以百萬計的開發人員在使用 Java 編程,Java 仍然在以越來越快的步伐向前發展。在 Java 誕生 25 周年之際,Java Magazine(Oracle 的雙月刊)聯合 Oracle Java 開發團隊,共同撰文回顧 Java 是如何塑造我們這個星球的。
以下是迄今為止,最具創意和影響力的 25 個 Java 應用程序, 包含了從 Wikipedia Search 到美國國家安全局的 Ghidra 等。這些應用包羅萬象,覆蓋了包括:太空探索、視頻游戲、機器學習、基因組學、汽車、網絡安全等不同領域。
這份清單沒有特定的順序,也還不夠詳盡,可能會有遺漏,如果你認為文章中遺漏了哪個重要的 Java 應用,可以在文末給我們留言!
最后的邊界
1、Maestro 火星探測器控制器。 2004 年,Java 成為首個擴展人類星球影響力的編程語言。那年在三個月的時間里,美國國家航空航天局(NASA)的科學家在位于加利福尼亞州帕薩迪納的噴氣推進實驗室(JPL)里,使用了由 JPL 機器人接口實驗室建造的基于 Java 的Maestro Science Activity Planner來控制“勇氣號”火星探測器(Spirit Mars Exploration Rover )。在 JPL 里,Java 試驗早在許多年前就開始,當時是為 1995 年的“逗留者”火星車(Mars Sojourner)創建了一個命令和控制系統。 Java 創始人 James Gosling 為 JPL 工作了很長時間,因此他成為了顧問委員會的一名成員。
2、JavaFX 深空軌跡探測器。計劃進行一次太空飛行?您可能需要來自a.i.solutions的工具,a.i.solutions 是一家美國航空承包商,其產品和工程服務已經被國防公司和民用航天機構使用了 20 多年。
該公司的JavaFX 深空軌道探測器(JavaFX Deep Space Trajectory Explorer)使軌跡設計人員可以計算深空三體系統的路徑和軌道。該應用程序可以為任何行星 - 衛星系統或小行星生成多維視圖和模型,并能在密集的視覺搜索中過濾數百萬個點。
3、NASA WorldWind。NASA 發布了開源的WorldWind軟件開發工具包,所有人都可以免費使用火箭科學家的工作成果。WorldWind 是一個虛擬地球 SDK,允許程序員將美國航天局的地理渲染引擎添加到自己的 Java、Web 或 Android 應用程序中。 WorldWind 的地理空間數據遠遠超過了谷歌地球(Google Earth),它是由 NASA 工程師通過高程模型和其他數據源可視化地形的方式生產的。其網站稱:“世界各地的組織都使用 WorldWind 監測天氣模式,可視化城市和地形,跟蹤車輛移動,分析地理空間數據以及對人類進行地球知識的教育。”
4、JMARS 和 JMoon。Java 任務 - 遙感計劃和分析(JMARS)是一個地理空間信息系統,由亞利桑那州立大學火星空間飛行設施人員編寫,自 2003 年開始公開發行,至今仍為 NASA 科學家所使用。月球 JMARS(月球科學家稱之 JMoon)可以分析月球勘測軌道飛行器(Lunar Reconnaissance Orbiter,LOR)拍攝的廣角圖像,它是一種自動航天器,自 2009 年發射以來,一直在 50 至 200 公里的月球軌道上運行,并能將觀測結果發送給 NASA 的行星數據系統(Planetary Data System)。
5、小體映射工具( Small Body Mapping Tool ,SBMT)。SBMT在太空科學家中很受歡迎,是由約翰霍普金斯大學應用物理實驗室開發的,它使用來自航天器的任務數據以 3D 的形式可視化小行星、彗星和小衛星等不規則天體。 SBMT 是用 Java 編寫的,并使用了用于 Java 3D 圖形處理的開源可視化工具包(VTK)。“黎明“號(Dawn)、“羅塞塔”號(Rosetta)、“奧西里斯 - 雷克斯”號(OSIRIS-REx)和“隼鳥二號”(Hayabusa2)飛行任務團隊在探索彗星、小行星和矮行星時都使用了 SBMT。
數據的強度
6、Wikipedia Search。一部大眾百科全書應該運行在開源軟件上,并且具有一個由 Java 驅動的搜索引擎,這是再合適不過的了。Lucene 是由 Doug Cutting于 1999 年編寫,并以他妻子的中間名命名的,它實際上是 Cutting 開發的第五個搜索引擎。他作為工程師先后為 Xerox PARC(施樂帕克研究中心)、Apple 和 Excite 創建了其他的引擎。 2014 年,Wikipedia 用Elasticsearch代替了 Lucene 引擎,Elasticsearch 是一個分布式的、支持 REST 的搜索引擎,也是用 Java 編寫的。
7、Hadoop。Lucene 并不是唯一一個進入我們這個榜單的 Cutting 創建的作品。2003 年,Google 在一篇研究論文中描述了在大型商用計算機集群上處理數據的 MapReduce 算法,受該論文的啟發,Cutting 用 Java 編寫了一個 MapReduce 操作開源框架,并以他兒子的玩具大象命名,稱為Hadoop。 Hadoop 1.0 于 2006 年發布,催生了大數據趨勢,并激發了許多公司開始收集“數據湖”(data lakes),制定挖掘“數據排放”(data exhaust)的策略,并將數據描述為“新石油”(the new oil)。到 2008 年,Yahoo(當時的 Cutting 曾在該公司工作)宣稱他們的 Search Webmap 運行在 10,000 個內核的 Linux 群集上,是現有的最大的產線 Hadoop 應用程序。到 2012 年,Facebook 聲稱在全球最大的 Hadoop 集群上擁有超過 100 PB 的數據。
8、并行圖形分析(Parallel Graph AnalytiX,PGX)。圖形分析是有關理解數據中的關系和連接的。根據基準測試,PGX是世界上速度最快的圖形分析引擎之一。 PGX 是用 Java 編寫的,由 Oracle Labs 研究員 Sungpack Hong 領導的團隊于2014 年首次發布,PGX 允許用戶加載圖形數據并運行分析算法,比如,社區發現(Community Detection)、聚類、路徑查找、頁面排名、影響因素分析、異常檢測、路徑分析和模式匹配等算法。在健康、安全、零售和金融領域,它的用例比比皆是。
9、H2O.ai。機器學習(ML)的曲線非常陡峭,這可能會阻止領域專家實現偉大的 ML 想法。自動化 ML(AutoML)可以通過推斷 ML 流程中的某些步驟(例如特征工程、模型訓練和調整以及轉譯等)來提供一些幫助。 由 Java 冠軍 Cliff Click 創建的基于 Java 的開源H2O.ai平臺,旨在實現 AI 的大眾化,并能為那些剛入門的人們充當虛擬數據科學家,同時能幫助 ML 專家提高效率。
有趣的世界
10、 Minecraft。該游戲的和平環境是由生物群落、人以及自己用積木搭建的住所組成的,它對世界各地的兒童和成人都有著持久的吸引力,這使得它成為歷史上最受歡迎的視頻游戲。Minecraft及其 3D 宇宙是由 Markus “Notch” Persson 用 Java 開發的,并于 2009 年以 Alpha 版本發布,它是永無止境的創造力之源,因為沒有兩個衍生的世界是一樣的。該視頻游戲對 Java 的使用也可以讓在家和學校的程序員創建自己的模塊。
11、Jitter 機器人和 leJOS。在自動吸塵器 Roomba 出現之前,就已經有Jitter。Jitter 是一個用來吸取國際空間站(ISS)中漂浮顆粒的原型機器人,它能夠在失重狀態下導航,在墻壁上彈跳,并能使用回轉儀進行自我定位。據報告稱,俄羅斯宇航員發現該機器人的 x、y、z 旋轉操作令人印象深刻,能讓人聯想到國際空間站自身是如何控制其方向的。Jitter 是leJOS最出類拔萃的原型,leJOS 是 Lego Mindstorms 的 Java 虛擬機,是 Lego 的硬件軟件環境,可用于從積木玩具中開發可編程的機器人。玩具 OS 可以追溯到 1999 年由 José Solorzano 發起的 TinyVM 項目,該項目后來演變成 leJOS,由 Brian Bagnall、JürgenStuber 和 Paul Andrews 領導。這個功能齊全的環境具有許多特定于機器人編程的類,這些類使用 Java 的面向對象特性進行了簡化,使得任何人都可以利用其高級控制器和行為算法。
12、Java 小程序。根據牛津英語詞典,小程序(applet)一詞最早出現在 1990 年的 PC Magazine(計算機雜志)上。但是直到 1995 年 Java 出現后,小程序才真正騰飛。Java 小程序可以在網頁(Frame、新窗口、Sun 的AppletViewer或測試工具)中啟動,并能運行在于瀏覽器相獨立的 JVM 上。一些人將 Minecraft 的早期成功歸功于這樣一個事實:玩家可以通過 Java 小程序在 Web 瀏覽器中玩游戲,而不必下載并安裝游戲。盡管 Java 小程序自 Java 9 以來就不被推薦,并且在 2018 年也被從 Java SE 11 中剔除掉了,但它們一度是最快的游戲。一個有趣的事實是:Java 小程序還可以訪問 3D 硬件加速,這使得它們在科學可視化方面很受歡迎。
榮譽代碼
13、NetBeans 和 Eclipse IDE。最早進入 Java 集成開發環境世界的是NetBeans,NetBeans 于 1996 年在布拉格的查爾斯大學(以 Xelfi 的名義)創立,并于 1997 年由企業家 Roman Staněk 創立的同名公司進行商業化。 Sun 在 1999 年購買了支持所有 Java 應用程序類型的模塊化 IDE,并于次年將其開源。 2016 年,Oracle 將整個 NetBeans 項目捐贈給了 Apache 軟件基金會(Apache Software Foundation)。
另一個流行的基于 Java 的集成開發環境是開源的 Eclipse IDE,它不僅可以用于 Java 編碼,還可用于從 Ada 到 Scala 的其他語言的編碼。 Eclipse SDK 由 IBM 于 2001 年推出,是基于 IBM VisualAge 的,它是面向 Java 開發人員的,但是可以通過插件進行擴展。 Eclipse IDE 于 2004 年從 IBM 分離出來并加入 Eclipse 基金會,它目前仍然是可用的頂級 I??DE 之一。
14、 IntelliJ IDEA。IDE 有很多,但 IntelliJ IDEA 在 2001 年推出后就成為了人們的最愛。如今,IntelliJ IDEA 已成為許多 IDE 的框架,這些 IDE 適用于 Python、Ruby 和 Go 等多種語言。IntelliJ IDEA 及其相關的 JetBrains IDE 套件是使用 Java 編寫的,可以提高許多開發人員所依賴的生產力和導航功能。其中包括代碼索引、重構、代碼完成(這要早于智能手機上的文本自動完成)以及發現錯誤的動態分析(類似于拼寫檢查器)。 “ IntelliJ IDEA 幫助克服了在某個框架下管理和調試基于 Java 和 JVM 的復雜應用程序的挑戰,”駐英自由軟件和數據工程師、Java 冠軍 Mani Sarkar 說。 “它們讓開發人員在使用它們的工具時,感到高效、多產,最重要的是能感到快樂。”
15、Byte Buddy。開源 Java 庫Byte Buddy的創建者,來自奧斯陸(挪威 Oslo)的軟件工程師Rafael Winterhalter坦承,他的一生(有時令人發狂)專注于小眾市場。盡管如此,他的貢獻還是大受歡迎:Winterhalter 說,用于 Hibernate 和 Mockito 等 Java 工具的 Byte Buddy 運行時代碼生成和操作庫每月下載量高達 2000 萬次。
16、Jenkins。Jenkins由 Sun Microsystems 工程師 Kohsuke Kawaguchi 于 2004 年創建,是一個功能強大的開源的持續集成服務器。 Jenkins 用 Java 編寫,可幫助我們快速自動地構建、測試和部署應用程序。它通常被認為是使“基礎設施即代碼”(Infrastructure As Code,Iac)成為可能的早期 DevOps 工具之一。 Jenkins 及其 1500 多個由社區貢獻的插件可以處理各種各樣的部署和測試任務,從與 GitHub 合作,到支持色盲開發人員,再到提供 MySQL Connector JAR 文件。
17、GraalVM。由Oracle Labs 的 Thomas Wuerthinger領導的一個蘇黎世(Zurich)研究團隊,花費了多年的時間來磨練三個想法:我們是否可以用 Java 編寫編譯器(原始 JVM 是用 C 編寫的)呢?它是否可以運行以任何語言編寫的程序呢?它是否夠高效呢?在發表了 60 篇研究論文之后,GraalVM最終勝出,并成為了一個商業產品。 Twitter 是這項技術的狂熱愛好者之一,它使用 GraalVM 來提高服務的速度和計算效率。
18、Micronaut。為云編寫代碼的開發人員需要仔細考慮其應用程序使用了多少內存,以及應用程序如何使用這些內存。Micronaut的創建者 Graeme Rocher 說: “您必須使應用程序對重啟、故障自動切換、停機再恢復非常敏感,并在啟動時間和內存消耗方面進行優化,” 。Micronau 是一個用于微服務的 Java 框架,該微服務需使用注解元數據,以便 JVM 能夠有效地編譯應用程序的字節碼。
19、WebLogic Tengah。1997 年,WebLogic Tengah成為企業級 Java 服務器的首個實質性實現。 “它早于 Java 2 企業版,并成為 BEA 的主要產品,最終導致了 Oracle 收購 BEA Systems,”Java Magazine 和 Dr. Dobb’s Journal 的前主編 Andrew Binstock 說。 與此同時,IBM 在業務對象框架San Francisco Project上的成功,“使 Java 真正從酷孩子們正在玩的一個有趣的新事物中脫穎而出,并成為一種嚴肅的業務工具,”Binstock 說。如今,Oracle WebLogic Server 仍然是領先的 Java 應用程序服務器。然而,另一種選擇仍在蓬勃發展:開源應用程序服務器GlassFish,它于 2005 年由 Sun 創建,于 2018 年捐贈給 Eclipse 基金會。
20、Eclipse Collections。工作在投資銀行、證券交易所和其他金融服務公司的許多高薪開發人員都需要強大的 Java 技能,這是有原因的:Java 編程語言擅長處理并發,即管理高頻交易和其他大規模金融事務中常見的多個執行線程。Eclipse Collections最初稱為 Goldman Sachs Collections,后來捐贈給了 Eclipse 基金會,它擴展了原生 Java 的性能密集型特性,“具有優化的數據結構和豐富的、功能強大的、流暢的 API”,Java 冠軍 Mani Sarkar 說。 Sarkar 指出,Eclipse Collections 包含緩存、原語支持、并發庫、通用注解、字符串處理、輸入 / 輸出等等。
21、NSA Ghidra。在舊金山舉行的 2019 年 RSA 大會上,美國國家安全局( U.S. National Security Agency)推出了一款基于 Java 的開源工具Ghidra,安全研究人員和從業者現在可以使用它來了解惡意軟件的工作原理,并檢查自己的代碼是否存在漏洞。這個逆向工程平臺可以將軟件從機器語言反編譯回源代碼(例如 Java 語言)。該工具有一個故事,即使不是聲名狼藉,也是傳奇:2017 年 3 月,維基解密(WikiLeaks)將其存在公之于眾。
繪制基因組圖譜
22、集成基因組瀏覽器( Integrated Genome Browser,IGB)。繪制人類基因組圖譜的競賽始于 1990 年,并在 13 年后結束。當時,醫學研究人員成功地對生物技術專家 Craig Venter 的 30 億個 DNA 堿基對進行了測序,這項工作歷時 10 年,涉及 3,000 人,耗資 30 億美元。測序完成后,科學家們很想深入研究我們這個物種的源代碼,但是怎么做呢?進入基于 Java 的基因組瀏覽器,這是一個由包括生物信息學教授 Ann Loraine 在內的團隊開發的可視化工具,可用于探索基礎數據集和參考基因注解。開源的集成基因組瀏覽器(Integrated Genome Browser )允許研究人員放大、平移和繪制基因組數據,以便識別和注解遺傳特征。為了配合這一全球努力,加州大學圣克魯茲分校(University of California Santa Cruz)提供了一個類似的工具,即由 Jim Kent 管理的基因組瀏覽器(Genome Browser)。
23、BioJava。BioJava于 2000 年啟動,至今仍很強大,它是一個用于處理生物數據的開源庫,生物數據領域也被稱為生物信息學。科學家使用該庫可以處理蛋白質和核苷酸序列,并可以研究有關基因到蛋白質翻譯、基因組學、系統發育和大分子結構的數據。該項目得到了開放生物信息學基金會(Open Bioinformatics Foundation,OBF)的支持,其全球范圍的貢獻者得到了各種制藥、醫學和基因組學領域的資助。 “BioJava 是方法論和軟件開發的一個熱門選擇,這要歸功于 Java 的可用工具及其跨平臺的可移植性,” Aleix Lafita 及其同事在 2019 年發表的一篇題為“ BioJava 5:社區驅動的開源生物信息庫”的論文中寫道。該論文進一步指出,自 2009 年以來,BioJava 已經接受了 65 個不同開發人員的貢獻,并且在過去的一年中,它已在 GitHub 上累積了 224 個 fork 和 270 個 star,并且下載次數超過了 19,000 次。
最喜歡的“東西”
24、VisibleTesla。這款基于 Java 的應用程序是由特斯拉(Tesla)汽車愛好者 Joe Pasqua 于 2013 年創建的,它是一個免費程序,可用于監視和控制他的特斯拉 Model S。VisibleTesla的靈感來自于特斯拉汽車俱樂部社區,它提供與電動汽車制造商官方移動應用程序類似的功能。用戶可以為諸如解鎖的門或充電狀態之類的東西設置地理圍欄和通知,以及收集和處理行程數據。該項目的開源代碼托管在 GitHub 上。
25、SmartThings。該物聯網(IoT)應用程序是由SmartThings開發的(SmartThings 是由 Alex Hawkinson 于 2012 年聯合創立的,后來在 Kickstarter 上籌集了 120 萬美元的資金),可以讓我們通過智能手機或平板電腦控制和自動化所有的東西,從家用照明、鎖、咖啡機、恒溫器以及收音機到全部家用安全系統。該應用程序使用基于 Java 的 Micronaut 框架(請參閱#18),因此它基于云的服務可以以亞秒級的速度運行。該公司于 2014 年被三星電子(Samsung Electronics)以 2 億美元的高價收購。
原文鏈接:
https://blogs.oracle.com/javamagazine/the-top-25-greatest-java-apps-ever-written
總結
以上是生活随笔為你收集整理的甲骨文:有史以来最伟大的 25 个 Java 应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小商店启动内测:零成本、一键开通小程
- 下一篇: 脏旧毛巾属于什么垃圾啊?