摘要:從太空根究到基因組學(xué),從反向編譯器到機器人控制器,Java 都是當(dāng)今世界的中心。下面將介紹幾個從許多 Java 運用程序中鋒芒畢露的優(yōu)異運用。
Java 的故事始于 1991 年,其時 Sun Microsystems 試圖將其在核算機作業(yè)站商場的領(lǐng)先地位擴展到新式且發(fā)展迅速的個人電子產(chǎn)品商場。簡直沒有人預(yù)料到 Sun 行將創(chuàng)立的編程言語會使核算大眾化,激發(fā)了一個全球規(guī)劃的社區(qū),并成為了一個由言語、作業(yè)時途徑、SDK、開源項目以及許多東西組成的耐久軟件開發(fā)生態(tài)體系的途徑。通過 James Gosling 領(lǐng)導(dǎo)的數(shù)年隱秘開發(fā)之后,Sun 于 1995 年發(fā)布了具有里程碑含義的“一次編寫,處處作業(yè)” 的 Java 途徑,并將要害從開始的交互式電視體系規(guī)劃轉(zhuǎn)到了新式的萬維網(wǎng)運用程序上。在本世紀(jì)初,Java 就現(xiàn)已開始為從智能卡到太空飛行器的全部制造動畫了。
現(xiàn)在,數(shù)以百萬計的開發(fā)人員在運用 Java 編程, Java 仍然在以越來越快的腳步向前打開。在 Java 誕生 25 周年之際,Java Magazine(Oracle 的雙月刊)聯(lián)合 Oracle Java 開發(fā)團隊,一起撰文回想 Java 是怎樣描繪咱們這個星球的。
以下是迄今為止,最具構(gòu)思和影響力的 25 個 Java 運用程序, 包含了從 Wikipedia Search 到美國國家安全局的 Ghidra 等。這些運用一應(yīng)俱全,覆蓋了包含:太空根究、視頻游戲、機器學(xué)習(xí)、基因組學(xué)、轎車、網(wǎng)絡(luò)安全等不同范疇。
這份清單沒有特定的次序,也還不行翔實,或許會有丟掉,假定你以為文章中丟掉了哪個重要的 Java 運用,能夠在文末給咱們留言!
畢竟的間隔
1、Maestro 火星探測器操控器。 2004 年,Java 成為首個擴展人類星球影響力的編程言語。那年在三個月的時刻里,美國國家航空航天局(NASA)的科學(xué)家在坐落加利福尼亞州帕薩迪納的噴氣推動實驗室(JPL)里,使用了由 JPL 機器人接口實驗室制作的根據(jù) 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)品和工程服務(wù)現(xiàn)已被國防公司和民用航天組織使用了 20 多年。
該公司的 JavaFX 深空軌跡探測器(JavaFX Deep Space Trajectory Explorer)使軌跡規(guī)劃人員能夠核算深空三系通通的途徑和軌跡。該應(yīng)用程序能夠為任何行星 - 衛(wèi)星體系或小行星生成多維視圖和模型,并能在布滿的視覺查找中過濾數(shù)百萬個點。
3、NASA WorldWind。NASA 發(fā)布了開源的 WorldWind 軟件開發(fā)工具包,所有人都可以免費運用火箭科學(xué)家的作業(yè)效果。WorldWind 是一個虛擬地球 SDK,容許程序員將美國航天局的地輿烘托引擎添加到自己的 Java、Web 或 Android 應(yīng)用程序中。 WorldWind 的地輿空間數(shù)據(jù)遠(yuǎn)遠(yuǎn)超過了谷歌地球(Google Earth),它是由 NASA 工程師經(jīng)過高程模型和其他數(shù)據(jù)源可視化地勢的方法出產(chǎn)的。其網(wǎng)站稱:“世界各地的安排都運用 WorldWind 監(jiān)測氣候方法,可視化城市和地勢,盯梢車輛移動,剖析地輿空間數(shù)據(jù)以及對人類進行地球常識的教育。”
4、JMARS 和 JMoon。
5、小體映射東西( Small Body Mapping Tool ,SBMT)。
數(shù)據(jù)的強度
6、Wikipedia Search。一部群眾百科全書應(yīng)該運行在開源軟件上,而且具有一個由 Java 驅(qū)動的搜索引擎,這是再合適不過的了。 Lucene 是由 Doug Cutting 于 1999 年編寫,并以他妻子的中心名命名的,它實際上是 Cutting 開發(fā)的第五個搜索引擎。他作為工程師先后為 Xerox PARC(施樂帕克研究中心)、Apple 和 Excite 創(chuàng)建了其他的引擎。 2014 年,Wikipedia 用 Elasticsearch 替代了 Lucene 引擎,Elasticsearch 是一個分布式的、支撐 REST 的搜索引擎,也是用 Java 編寫的。
7、Hadoop。
8、并行圖形剖析(Parallel Graph AnalytiX,PGX)。圖形剖析是有關(guān)了解數(shù)據(jù)中的聯(lián)絡(luò)和聯(lián)接的。依據(jù)基準(zhǔn)查驗, PGX 是世界上速度最快的圖形剖析引擎之一。 PGX 是用 Java 編寫的,由 Oracle Labs 研究員 Sungpack Hong 領(lǐng)導(dǎo)的團隊于 2014 年初度發(fā)布,PGX 容許用戶加載圖形數(shù)據(jù)并作業(yè)剖析算法,比方,社區(qū)發(fā)現(xiàn)(Community Detection)、聚類、途徑查找、頁面排名、影響要素剖析、異常檢測、途徑剖析和方法匹配等算法。在健康、安全、零售和金融范疇,它的用例舉目皆是。
9、H2O.ai。機器學(xué)習(xí)(ML)的曲線十分峻峭,這可能會阻擋領(lǐng)域?qū)<医Y(jié)束巨大的 ML 主意。自動化 ML(AutoML)能夠經(jīng)過揣度 ML 流程中的某些進程(例如特征工程、模型練習(xí)和調(diào)整以及轉(zhuǎn)譯等)來供給一些幫助。 由 Java 冠軍 Cliff Click 創(chuàng)立的根據(jù) Java 的開源 H2O.ai 途徑,旨在結(jié)束 AI 的大眾化,并能為那些剛?cè)腴T的人們充任虛擬數(shù)據(jù)科學(xué)家,一起能幫助 ML 專家行進功率。
詼諧的國際
10、 Minecraft。該游戲的陡峭環(huán)境是由生物群落、人以及自己用積木建立的居處組成的,它對國際各地的兒童和成人都有著耐久的吸引力,這使得它成為歷史上最受歡迎的視頻游戲。 Minecraft 及其 3D 國際是由 Markus “Notch” Persson 用 Java 開發(fā)的,并于 2009 年以 Alpha 版別發(fā)布,它是永無止境的創(chuàng)造力之源,由于沒有兩個衍生的國際是相同的。該視頻游戲?qū)?Java 的運用也能夠讓在家和校園的程序員創(chuàng)立自己的模塊。
11、Jitter 機器人和 leJOS。在主動吸塵器 Roomba 呈現(xiàn)之前,就已經(jīng)有 Jitter 。Jitter 是一個用來招致國際空間站(ISS)中漂浮顆粒的原型機器人,它能夠在失重狀態(tài)下導(dǎo)航,在墻壁上彈跳,并能運用回轉(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 建議的 TinyVM 項目,該項目后來演變成 leJOS,由 Brian Bagnall、JürgenStuber 和 Paul Andrews 領(lǐng)導(dǎo)。這個功用完全的環(huán)境具有許多特定于機器人編程的類,這些類運用 Java 的面向?qū)ο筇匦赃M行了簡化,使得任何人都能夠運用其高檔操控器和行為算法。
12、Java 小程序。依據(jù)牛津英語詞典,小程序(applet)一詞最早呈現(xiàn)在 1990 年的 PC Magazine(計算機雜志)上。可是直到 1995 年 Java 呈現(xiàn)后,小程序才真實騰飛。Java 小程序能夠在網(wǎng)頁(Frame、新窗口、Sun 的 AppletViewer 或查驗東西)中建議,并能作業(yè)在于瀏覽器相獨立的 JVM 上。一些人將 Minecraft 的前期成功歸功于這樣一個實踐:玩家能夠經(jīng)過 Java 小程序在 Web 瀏覽器中玩游戲,而不用下載并設(shè)備游戲。雖然 Java 小程序自 Java 9 以來就不被推薦,并且在 2018 年也被從 Java SE 11 中除掉掉了,但它們一度是最快的游戲。一個詼諧的實踐是:Java 小程序還能夠拜訪 3D 硬件加速,這使得它們在科學(xué)可視化方面很受歡迎。
榮譽代碼
13、NetBeans 和 Eclipse IDE。最早進入 Java 集成開發(fā)環(huán)境國際的是 NetBeans ,NetBeans 于 1996 年在布拉格的查爾斯大學(xué)(以 Xelfi 的名義)創(chuàng)建,并于 1997 年由企業(yè)家 Roman Staněk 創(chuàng)建的同名公司進行商業(yè)化。 Sun 在 1999 年購買了支撐悉數(shù) Java 應(yīng)用程序類型的模塊化 IDE,并于次年將其開源。 2016 年,Oracle 將整個 NetBeans 項目捐贈給了 Apache 軟件基金會(Apache Software Foundation)。
另一個盛行的根據(jù) Java 的集成開發(fā)環(huán)境是開源的 Eclipse IDE,它不僅能夠用于 Java 編碼,還可用于從 Ada 到 Scala 的其他言語的編碼。 Eclipse SDK 由 IBM 于 2001 年推出,是根據(jù) IBM VisualAge 的,它是面向 Java 開發(fā)人員的,可是能夠經(jīng)過插件進行擴展。 Eclipse IDE 于 2004 年從 IBM 分離出來并參加 Eclipse 基金會,它現(xiàn)在仍然是可用的尖端 IDE 之一。
14、 IntelliJ IDEA。IDE 有許多,但 IntelliJ IDEA 在 2001 年推出后就成為了人們的獨愛?,F(xiàn)在,IntelliJ IDEA 已成為許多 IDE 的結(jié)構(gòu),這些 IDE 適用于 Python、Ruby 和 Go 等多種語言。 IntelliJ IDEA 及其相關(guān)的 JetBrains IDE 套件是運用 Java 編寫的,能夠行進許多開發(fā)人員所依托的生產(chǎn)力和導(dǎo)航功用。其間包含代碼索引、重構(gòu)、代碼完畢(這要早于智能手機上的文本主動完畢)以及發(fā)現(xiàn)過失的動態(tài)剖析(類似于拼寫查看器)。 “ IntelliJ IDEA 幫助克服了在某個結(jié)構(gòu)下處理和調(diào)試根據(jù) Java 和 JVM 的雜亂應(yīng)用程序的應(yīng)戰(zhàn),”駐英自由軟件和數(shù)據(jù)工程師、Java 冠軍 Mani Sarkar 說。 “它們讓開發(fā)人員在運用它們的東西時,感到高效、多產(chǎn),最重要的是能感到高興。”
15、Byte Buddy。開源 Java 庫 Byte Buddy 的創(chuàng)建者,來自奧斯陸(挪威 Oslo)的軟件工程師 Rafael Winterhalter 坦承,他的終身(有時令人發(fā)狂)專心于小眾商場。盡管如此,他的奉獻仍是大受歡迎:Winterhalter 說,用于 Hibernate 和 Mockito 等 Java 東西的 Byte Buddy 運行時代碼生成和操作庫每月下載量高達 2000 萬次。
16、Jenkins。
17、GraalVM。由 Oracle Labs 的 Thomas Wuerthinger 領(lǐng)導(dǎo)的一個蘇黎世(Zurich)研討團隊,花費了多年的時刻來練習(xí)三個主意:咱們是否能夠用 Java 編寫編譯器(原始 JVM 是用 C 編寫的)呢?它是否能夠作業(yè)以任何言語編寫的程序呢?它是否夠高效呢?在宣告了 60 篇研討論文之后, GraalVM 究竟勝出,并成為了一個商業(yè)產(chǎn)品。 Twitter 是這項技能的張狂愛好者之一,它運用 GraalVM 來行進服務(wù)的速度和核算功率。
18、Micronaut。為云編寫代碼的開發(fā)人員需求細(xì)心考慮其應(yīng)用程序運用了多少內(nèi)存,以及應(yīng)用程序怎樣運用這些內(nèi)存。 Micronaut 的創(chuàng)建者 Graeme Rocher 說: “您有必要使應(yīng)用程序?qū)χ貑ⅰ⑷毕葜鲃忧袚Q、停機再康復(fù)十分活絡(luò),并在建議時刻和內(nèi)存耗費方面進行優(yōu)化,” 。Micronau 是一個用于微服務(wù)的 Java 結(jié)構(gòu),該微服務(wù)需運用注解元數(shù)據(jù),以便 JVM 可以有效地編譯應(yīng)用程序的字節(jié)碼。
19、WebLogic Tengah。
20、Eclipse Collections。作業(yè)在投資銀行、證券生意所和其他金融服務(wù)公司的許多高薪開發(fā)人員都需求強健的 Java 技術(shù),這是有原因的:Java 編程言語拿手處理并發(fā),即處理高頻生意和其他大規(guī)模金融業(yè)務(wù)中常見的多個實施線程。 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)推出了一款根據(jù) Java 的開源東西 Ghidra ,安全研究人員和從業(yè)者現(xiàn)在能夠使用它來了解歹意軟件的作業(yè)原理,并查看自己的代碼是否存在縫隙。這個逆向工程途徑能夠?qū)④浖臋C器言語反編譯回源代碼(例如 Java 言語)。該東西有一個故事,即便不是身敗名裂,也是傳奇:2017 年 3 月,維基解密(WikiLeaks)將其存在公之于眾。
制作基因組圖譜
22、集成基因組瀏覽器( Integrated Genome Browser,IGB)。制作人類基因組圖譜的比賽始于 1990 年,并在 13 年后完畢。其時,醫(yī)學(xué)研究人員成功地對生物技術(shù)專家 Craig Venter 的 30 億個 DNA 堿基對進行了測序,這項作業(yè)歷時 10 年,觸及 3,000 人,耗資 30 億美元。測序完成后,科學(xué)家們很想深入研究咱們這個物種的源代碼,可是怎么做呢?進入根據(jù) Java 的基因組瀏覽器,這是一個由包含生物信息學(xué)教授 Ann Loraine 在內(nèi)的團隊開發(fā)的可視化東西,可用于根究根底數(shù)據(jù)集和參看基因注解。開源的集成基因組瀏覽器(Integrated Genome Browser )容許研究人員擴展、平移和制作基因組數(shù)據(jù),以便辨認(rèn)和注解遺傳特征。為了協(xié)作這一全球竭力,加州大學(xué)圣克魯茲分校(University of California Santa Cruz)供給了一個相似的東西,即由 Jim Kent 處理的基因組瀏覽器(Genome Browser)。
23、BioJava。
最喜歡的“東西”
24、VisibleTesla。這款根據(jù) Java 的應(yīng)用程序是由特斯拉(Tesla)轎車愛好者 Joe Pasqua 于 2013 年創(chuàng)立的,它是一個免費程序,可用于監(jiān)督和操控他的特斯拉 Model S。 VisibleTesla 的構(gòu)思來自于特斯拉轎車沙龍社區(qū),它供給與電動轎車制造商官方移動應(yīng)用程序相似的功用。用戶可認(rèn)為比如解鎖的門或充電狀況之類的東西設(shè)置地輿圍欄和奉告,以及搜集和處理行程數(shù)據(jù)。該項意圖開源代碼保管在 GitHub 上。
25、SmartThings。該物聯(lián)網(wǎng)(IoT)應(yīng)用程序是由 SmartThings 開發(fā)的(SmartThings 是由 Alex Hawkinson 于 2012 年聯(lián)合創(chuàng)建的,后來在 Kickstarter 上籌集了 120 萬美元的資金),能夠讓我們經(jīng)過智能手機或平板電腦操控和自動化一切的東西,從家用照明、鎖、咖啡機、恒溫器以及收音機到悉數(shù)家用安全體系。該應(yīng)用程序運用根據(jù) Java 的 Micronaut 結(jié)構(gòu)(請參閱#18),因而它根據(jù)云的服務(wù)能夠以亞秒級的速度作業(yè)。該公司于 2014 年被三星電子(Samsung Electronics)以 2 億美元的高價收買。
庫學(xué)科技成立于2009年,是一家綜合性的互聯(lián)網(wǎng)公司,公司總部在北京大興區(qū),公司的主要業(yè)務(wù)涉互聯(lián)網(wǎng)軟件開發(fā),數(shù)據(jù)庫、人工智能、新媒體運營等領(lǐng)域,主要是為國內(nèi)的中大型互聯(lián)網(wǎng)公司,提供技術(shù)人員的定向入職輸送,與國內(nèi)大型企業(yè)做聯(lián)合定崗招聘,與崗位需求相結(jié)合通過短期實訓(xùn)達到企業(yè)崗位要求的合格的工程師。