Categories
程式開發

甲骨文:有史以来最伟大的25个Java应用程序


摘要:从太空探索到基因组学,从反向编译器到机器人控制器,Java都是当今世界的核心。下面将介绍几个从众多Java应用程序中脱颖而出的优秀应用。

甲骨文:有史以来最伟大的25个Java应用程序 1

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应用,可以在文末给我们留言!

最后的边界

甲骨文:有史以来最伟大的25个Java应用程序 2

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。

数据的强度

甲骨文:有史以来最伟大的25个Java应用程序 3

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专家提高效率。

有趣的世界

甲骨文:有史以来最伟大的25个Java应用程序 4

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硬件加速,这使得它们在科学可视化方面很受欢迎。

荣誉代码

甲骨文:有史以来最伟大的25个Java应用程序 5

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)将其存在公之于众。

绘制基因组图谱

甲骨文:有史以来最伟大的25个Java应用程序 6

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次。

最喜欢的“东西”

甲骨文:有史以来最伟大的25个Java应用程序 7

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