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