从太空探索到基因组学,从反向编译器到机器人控制器,Java是当今世界的核心。为庆祝Java诞生25周年,Oracle在官方博文中介绍了25个优秀的Java应用程序。Java的故事始于1991年,当时SunMicrosystems试图将其在计算机工作站市场的领导地位扩展到个人电子市场,这是一个快速增长的新兴市场。然而,很少有人能预料到Sun即将创建的编程语言会使计算民主化,催生一个全球社区,并最终成为一个持久的语言、运行时平台、SDK、开源项目和大量工具的社区.软件开发生态系统的平台。经过JamesGosling领导的多年秘密开发,Sun于1995年发布了具有里程碑意义的“一次编写,随处运行”Java平台,并将重点从最初的交互式电视系统设计转移到新兴的万维网应用程序上。在2000年代初期,Java已经在为从智能卡到太空飞行器的所有事物制作动画。今天,数以百万计的开发人员使用Java进行编程,并且Java继续以越来越快的速度发展。在Java诞生25周年之际,Oracle的双月刊《Java杂志》与Oracle的Java开发团队联手反思Java如何塑造了我们的星球。这里有25个迄今为止最具创新性和影响力的Java应用程序,包括从维基百科搜索到NSA的Ghidra等所有内容。这些应用包罗万象,涵盖了太空探索、视频游戏、机器学习、基因组学、汽车和网络安全等不同领域。此列表不分先后,不够详尽,可能会有遗漏。如果你觉得文中遗漏了任何重要的Java应用,可以在文末给我们留言!1TheLastFrontier1.MaestroMarsRoverController2004年,Java成为第一个扩大人类星球影响力的编程语言。在那一年的三个月里,位于加利福尼亚州帕萨迪纳市的喷气推进实验室(JPL)的NASA科学家使用基于Java的MaestroScienceActivityPlanner来控制“精神号”火星探测器(SpiritMarsExplorationRover)。在JPL,Java实验始于多年前,当时为1995年的火星旅居者探测器创建了一个命令和控制系统。Java创始人JamesGosling在JPL工作了很长时间,以至于他是顾问委员会的成员。2.JavaFXDeepSpaceTracker是否计划太空飞行?您可能需要a.i.solutions的工具,这是一家美国航空航天承包商,其产品和工程服务已被国防公司和民用航天机构使用20多年。该公司的JavaFXDeepSpaceTrajectoryExplorer允许轨迹设计者计算深空三体系统的路径和轨道。该应用程序生成任何行星-月球系统或小行星的多维视图和模型,并在密集的视觉搜索中过滤数百万个点。3.NASAWorldWindNASA发布了开源的WorldWind软件开发包,让火箭科学家的工作免费提供给所有人。WorldWind是一个虚拟地球SDK,允许程序员将NASA的地理渲染引擎添加到他们的Java、Web或Android应用程序中。WorldWind的地理空间数据远远超过GoogleEarth的数据,GoogleEarth是由NASA工程师通过从高程模型和其他数据源可视化地形生成的。据其网站介绍:“世界各地的组织使用WorldWind来监测天气模式、可视化城市和地形、跟踪车辆运动、分析地理空间数据,并让人类了解地球。4.JMARS和JMoonJavaMission-RemoteSensingPlanningandAnalysis(JMARS)是亚利桑那州立大学火星太空飞行中心工作人员编写的地理空间信息系统,自2003年以来一直公开可用,至今仍被NASA科学家使用。LunarJMARS(JMoon,月球科学家称之为JMoon)分析了月球勘测轨道飞行器(LOR)拍摄的广角图像,这是一种自主航天器,自2009年发射以来一直在50到200公里的距离内绕月球运行,并且可以将观测结果发送到美国宇航局的行星数据系统(PlanetaryDataSystem)。5.SmallBodyMappingTool(SmallBodyMappingTool,SBMT)SBMT在太空科学家中非常流行,由约翰霍普金斯大学应用物理实验室开发,它利用航天器的任务数据可视化不规则物体,如小行星、彗星、和3D中的小卫星。SBMT是用Java编写的,并使用开源的Java3D图形可视化工具包(VTK)。Dawn、Rosetta、OSIRIS-REx和Hayabusa2飞行任务团队在探索彗星、小行星和矮行星时使用了SBMT。2数据强度6.维基百科搜索流行的百科全书应该在开源软件上运行,并有一个由Java驱动的搜索引擎,这再合适不过了。Lucene由DougCutting于1999年编写,以他妻子的中间名命名,实际上是Cutting的第五个搜索引擎。他曾在XeroxPARC(XeroxParker研究中心)、Apple担任工程师,而Excite则创建了其他引擎。2014年,维基百科用Elasticsearch取代了Lucene引擎,Elasticsearch是一个分布式的、支持REST的搜索引擎,也是用Java编写的。7.HadoopLucene并不是唯一一个通过Cutting为这个列表创建的作品。受到谷歌2003年描述用于在大型商业计算机集群上处理数据的MapReduce算法的研究论文的启发,Cutting用Ja??va编写了一个用于MapReduce操作的开源框架,以他儿子的玩具大象的名字命名,称为Hadoop。2006年发布的Hadoop1.0拉开了大数据风潮的序幕,促使许多公司开始收集“数据湖”,制定战略以挖掘“数据废气”,并将数据描述为“新石油”。“(新石油)。到2008年,雅虎(Cutting当时工作的地方)宣布他们在10,000核Linux集群上运行的SearchWebmap是现有最大的生产线Hadoop应用程序。到2012年,Facebook声称拥有世界上最大的Hadoop集群上超过100PB的数据8.ParallelGraphAnalytiX(PGX)图形分析是关于理解数据中的关系和连接。根据基准测试,PGX是世界上最快的图形分析引擎之一。写在Java并于2014年由Oracle实验室研究员SungpackHong领导的团队首次发布,PGX允许用户加载图形数据并运行分析算法,例如社区检测、聚类、寻路、页面排名、影响因素分析、异常检测、路径分析和模式匹配算法。它的用例在健康、安全、零售和金融领域比比皆是。9.H2O.ai的机器学习(ML)曲线非常陡峭,这可能会阻止领域专家实现激发伟大的ML想法。自动化ML(AutoML)可以通过推断ML管道中的某些步骤(例如特征工程、模型训练和调整以及翻译)来提供帮助。基于Java的开源H2O.ai平台由Java冠军CliffClick创建,旨在使AI民主化并充当刚起步者的虚拟数据科学家,同时帮助ML专家提高工作效率。3FUNWORLD10.Minecraft游戏的宁静环境由生物群落、人和您自己用积木建造的住宅组成,对世界各地的儿童和成人具有持久的吸引力,使其成为历史上最激动人心的游戏之一。流行的视频游戏。Minecraft及其3D世界由Markus"Notch"Persson用Ja??va开发并于2009年发布alpha版,是永无止境的创造力源泉,因为没有两个生成的世界是相同的。视频游戏对Java的使用还允许家庭和学校的程序员创建自己的模块。11.JitterRobots和leJOS在机器人吸尘器Roomba之前,有Jitter。Jitter是一种原型机器人,旨在吸收漂浮在国际空间站(ISS)中的粒子,能够在失重状态下导航、从墙壁上弹跳并使用陀螺仪进行自我定位。据报道,俄罗斯宇航员发现机器人的x、y、z旋转操纵令人印象深刻,让人想起国际空间站自己控制其方向的方式。Jitter是leJOS的卓越原型,leJOS是LegoMindstorms的Java虚拟机,Lego的硬件软件环境用于从积木玩具开发可编程机器人。ToyOS最早可以追溯到1999年由JoséSolorzano发起的TinyVM项目,后来演变为leJOS,由BrianBagnall、JürgenStuber和PaulAndrews领导。这个功能齐全的环境具有许多使用Java的面向对象功能简化的机器人编程特定类,使其高级控制器和行为算法可供任何人使用。12.Javaapplets根据牛津英语词典,applet这个词最早出现于1990年的PCMagazine。但直到1995年Java出现,applet才真正起飞。Java小程序可以在网页(框架、新窗口、Sun的AppletViewer或测试工具)中启动,并在独立于浏览器的JVM上运行。一些人将Minecraft的早期成功归功于玩家可以通过Java小程序在Web浏览器中玩游戏,而不必下载和安装游戏。尽管Java小程序自Java9以来已被弃用,并于2018年从JavaSE11中删除,但它们曾经是最快的游戏。有趣的事实:Java小程序还可以访问3D硬件加速,这使得它们在科学可视化方面很受欢迎。4荣誉码13.NetBeans和EclipseIDE最早进入Java集成开发环境世界的是NetBeans,它于1996年在布拉格的查尔斯大学创立(当时名为Xelfi),1997年由企业家RomanStaněk在公司创立同名商业化。Sun于1999年购买了支持所有Java应用程序类型的模块化IDE,并于次年将其开源。2016年,Oracle将整个NetBeans项目捐赠给了Apache软件基金会。另一个流行的基于Java的集成开发环境是开源的EclipseIDE,它不仅可以用于Java编码,还可以用于从Ada到Scala的其他语言的编码。EclipseSDK由IBM于2001年推出,基于IBMVisualAge,面向Java开发人员,但可以通过插件进行扩展。EclipseIDE是从IBM分离出来的,并于2004年加入了EclipseFoundation,它仍然是当今可用的顶级IDE之一。14.IntelliJIDEAIDE有很多,但IntelliJIDEA自2001年推出以来就成为人们的最爱。今天,IntelliJIDEA是许多IDE的框架,适用于Python、Ruby和Go等多种语言。IntelliJIDEA及其相关的JetBrainsIDE套件是用Java编写的,以提高许多开发人员所依赖的生产力和导航功能。其中包括代码索引、重构、代码完成(早于智能手机上的文本自动完成)和查找错误的动态分析(类似于拼写检查器)。“IntelliJIDEA有助于克服在框架内管理和调试复杂的基于Java和JVM的应用程序的挑战,”英国自由软件和数据工程师兼JavaChampionManiSarkar说。“他们让开发人员在使用他们的工具时感到高效、高效,最重要的是快乐。”15.ByteBuddyRafael,来自奥斯陆(挪威奥斯陆)的软件工程师,开源Java库ByteBuddyWinterhalter的创建者承认,他的生活(有时令人发狂)一直专注于利基市场。尽管如此,他的贡献还是很受欢迎:Winterhalter表示,用于Hibernate和Mockito等Java工具的ByteBuddy运行时代码生成和操作库每月有2000万次下载。16.JenkinsJenkins由SunMicrosystems工程师KohsukeKawaguchi于2004年创建,是一个功能强大的开源持续集成服务器。Jenkins用Ja??va编写,可帮助我们快速自动地构建、测试和部署应用程序。它通常被认为是使基础架构即代码(Iac)成为可能的早期DevOps工具之一。Jenkins及其1500多个社区贡献的插件可以处理各种部署和测试任务,从使用GitHub到支持色盲开发人员,再到提供MySQLConnectorJAR文件。17.GraalVM,一个由Oracle实验室的ThomasWuerthinger领导的苏黎世研究小组,花了数年时间磨练三个想法:我们可以用Java编写一个编译器吗(最初的JVM是用C编写的)?它可以运行用任何语言编写的程序吗?效率够高吗?在发表了60篇研究论文后,GraalVM胜出并成为商业产品。该技术的最大粉丝之一是Twitter,它使用GraalVM来提高其服务的速度和计算效率。18.Micronaut为云编写代码的开发人员需要仔细考虑他们的应用程序使用了多少内存,以及应用程序如何使用这些内存。“你必须让应用程序对重启、故障转移、停机和恢复非常敏感,并在启动时间和内存消耗方面进行优化,”Micronaut的创建者GraemeRocher说。Micronau是一个用于微服务的Java框架,需要注释元数据以便JVM可以高效地编译应用程序的字节码。19.WebLogicTengah1997年,WebLogicTengah成为第一个实质性的企业Java服务器实现。“它早于Java2企业版,成为BEA的主要产品,最终导致Oracle收购BEASystems,”Java杂志和Dr.Dobb'sJournal的前主编AndrewBinstock说。与此同时,IBM在业务对象框架SanFranciscoProject上取得的成功“确实将Java从一个酷孩子们玩的有趣的新事物转变为一个严肃的业务工具,”Binstock说。今天,OracleWebLogicServer仍然是领先的Java应用服务器。另一种选择仍在蓬勃发展:开源应用服务器GlassFish,由Sun于2005年创建并于2018年捐赠给Eclipse基金会。20.EclipseCollections交易所和其他金融服务公司需要强大的Java技能:Java编程语言擅长处理并发性,即管理高频交易和其他大型金融交易中常见的多线程执行。EclipseCollections,最初称为GoldmanSachsCollections,后来捐赠给了EclipseFoundation,“通过优化的数据结构和丰富、强大、流畅的API”扩展了原生Java的性能密集型特性,Java冠军ManiSarkar说。Sarkar指出,EclipseCollections包括缓存、原始支持、并发库、公共注释、字符串处理、输入/输出等。21.NSAGhidra在旧金山举行的2019RSA大会上,美国国家安全局(U.S.NationalSecurityAgency)介绍了Ghidra,这是一种基于Java的开源工具,安全研究人员和从业人员现在可以使用它来了解恶??意软件行为。有效,并检查您自己的代码是否存在漏洞。这个逆向工程平台可以将软件从机器语言反编译回源代码(例如Java语言)。这个工具有一个故事,如果不是臭名昭著的话,那就是传奇:2017年3月,维基解密公开了它的存在。5绘制基因组图22.绘制人类基因组图的集成基因组浏览器(IGB)竞赛始于1990年,结束于13年后。当时,医学研究人员已经成功地对来自生物技术专家克雷格文特尔的30亿个碱基对DNA进行了测序,这项工作耗时10年,动用了3,000人,耗资30亿美元。一旦测序,科学家们很想深入研究我们物种的源代码,但是如何呢?进入基于Java的基因组浏览器,这是一个由包括生物信息学教授AnnLoraine在内的团队开发的可视化工具,用于探索底层数据集和参考基因注释。开源集成基因组浏览器允许研究人员放大、平移和映射基因组数据,以识别和注释遗传特征。为了补充这一全球努力,加州大学圣克鲁兹分校提供了一个类似的工具,即由JimKent管理的基因组浏览器。23.BioJavaBioJava于2000年推出并且仍然很强大,它是一个用于处理生物数据的开源库,该领域也称为生物信息学。使用该库,科学家可以处理蛋白质和核苷酸序列,并可以研究有关基因到蛋白质翻译、基因组学、系统发育和大分子结构的数据。该项目得到了开放生物信息学基金会(OBF)的支持,该基金会的全球贡献者得到了各个制药、医学和基因组学领域的资助。“BioJava是方法论和软件开发的流行选择,这要归功于Java的可用工具及其跨平台的可移植性,”AleixLafita及其同事在2019年发表的一篇题??为“BioJava5:社区驱动的开源生物信息学库”的论文中的”在论文中写道。论文进一步指出,自2009年以来,BioJava已经接受了65位不同开发者的贡献,并且在过去的一年里,它在GitHub上积累了224个fork和270个star,超过19,000次。6最喜欢“things”24.VisibleTesla这款基于Java的应用程序由特斯拉汽车爱好者JoePasqua于2013年创建,作为一个免费程序来监视和控制他的Tesla。TeslaModelS。受特斯拉汽车俱乐部社区的启发,VisibleTesla提供与电动汽车类似的功能汽车制造商的官方移动应用程序。用户可以设置地理围栏和通知,例如未锁定的门或充电状态,以及收集和处理行程数据。该项目的开源代码是host在GitHub上编辑。25.SmartThings由SmartThings开发的物联网(IoT)应用程序(SmartThings由AlexHawkinson于2012年共同创立,后来在Kickstarter上筹集了120万美元)使我们能够访问计算机控制和自动化从家庭照明、锁、咖啡机等一切事物、恒温器和收音机到整个家庭安全系统。该应用程序使用基于Java的Micronaut框架(参见#18),因此其基于云的服务可以以亚秒级的速度运行。该公司于2014年被三星电子以高达2亿美元的价格收购。
