美国上市公司,专注Java培训22年

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


Java的故事始于1991年,当时SunMicrosystems试图将其在计算机工作站市场的领先地位扩展到新兴且发展迅速的个人电子产品市场。几乎没有人预料到Sun即将创建的编程语言会使计算大众化,激发了一个全球范围的社区,并成为了一个由语言、运行时平台、SDK、开源项目以及许多工具组成的持久软件开发生态系统的平台。经过JamesGosling领导的数年秘密开发之后,Sun于1995年发布了具有里程碑意义的“一次编写,随处运行”的Java平台,并将重点从最初的交互式电视系统设计转到了新兴的万维网应用程序上。在本世纪初,Java就已经开始为从智能卡到太空飞行器的一切制作动画了。如今,数以百万计的开发人员在使用Java编程,Java仍然在以越来越快的步伐向前发展。在Java诞生25周年之际,JavaMagazine(Oracle的双月刊)联合OracleJava开发团队,共同撰文回顾Java是如何塑造我们这个星球的。

以下是迄今为止,最具创意和影响力的25个Java应用程序,包含了从WikipediaSearch到美国国家安全局的Ghidra等。这些应用包罗万象,覆盖了包括:太空探索、视频游戏、机器学习、基因组学、汽车、网络安全等不同领域。

这份清单没有特定的顺序,也还不够详尽,可能会有遗漏,如果你认为文章中遗漏了哪个重要的Java应用,可以在文末给我们留言!

最后的边界1、Maestro火星探测器控制器。2004年,Java成为首个扩展人类星球影响力的编程语言。那年在三个月的时间里,美国国家航空航天局(NASA)的科学家在位于加利福尼亚州帕萨迪纳的喷气推进实验室(JPL)里,使用了由JPL机器人接口实验室建造的基于Java的MaestroScienceActivityPlanner来控制“勇气号”火星探测器(SpiritMarsExplorationRover)。在JPL里,Java试验早在许多年前就开始,当时是为1995年的“逗留者”火星车(MarsSojourner)创建了一个命令和控制系统。Java创始人JamesGosling为JPL工作了很长时间,因此他成为了顾问委员会的一名成员。

2、JavaFX深空轨迹探测器。计划进行一次太空飞行?您可能需要来自a.i.solutions的工具,a.i.solutions是一家美国航空承包商,其产品和工程服务已经被国防公司和民用航天机构使用了20多年。

该公司的JavaFX深空轨道探测器(JavaFXDeepSpaceTrajectoryExplorer)使轨迹设计人员可以计算深空三体系统的路径和轨道。该应用程序可以为任何行星-卫星系统或小行星生成多维视图和模型,并能在密集的视觉搜索中过滤数百万个点。

3、NASAWorldWind。NASA发布了开源的WorldWind软件开发工具包,所有人都可以免费使用火箭科学家的工作成果。WorldWind是一个虚拟地球SDK,允许程序员将美国航天局的地理渲染引擎添加到自己的Java、Web或Android应用程序中。WorldWind的地理空间数据远远超过了谷歌地球(GoogleEarth),它是由NASA工程师通过高程模型和其他数据源可视化地形的方式生产的。其网站称:“世界各地的组织都使用WorldWind监测天气模式,可视化城市和地形,跟踪车辆移动,分析地理空间数据以及对人类进行地球知识的教育。”

4、JMARS和JMoon。Java任务-遥感计划和分析(JMARS)是一个地理空间信息系统,由亚利桑那州立大学火星空间飞行设施人员编写,自2003年开始公开发行,至今仍为NASA科学家所使用。月球JMARS(月球科学家称之JMoon)可以分析月球勘测轨道飞行器(LunarReconnaissanceOrbiter,LOR)拍摄的广角图像,它是一种自动航天器,自2009年发射以来,一直在50至200公里的月球轨道上运行,并能将观测结果发送给NASA的行星数据系统(PlanetaryDataSystem)。

5、小体映射工具(SmallBodyMappingTool,SBMT)。SBMT在太空科学家中很受欢迎,是由约翰霍普金斯大学应用物理实验室开发的,它使用来自航天器的任务数据以3D的形式可视化小行星、彗星和小卫星等不规则天体。SBMT是用Java编写的,并使用了用于Java3D图形处理的开源可视化工具包(VTK)。“黎明“号(Dawn)、“罗塞塔”号(Rosetta)、“奥西里斯-雷克斯”号(OSIRIS-REx)和“隼鸟二号”(Hayabusa2)飞行任务团队在探索彗星、小行星和矮行星时都使用了SBMT。

数据的强度

6、WikipediaSearch。一部大众百科全书应该运行在开源软件上,并且具有一个由Java驱动的搜索引擎,这是再合适不过的了。Lucene是由DougCutting于1999年编写,并以他妻子的中间名命名的,它实际上是Cutting开发的第五个搜索引擎。他作为工程师先后为XeroxPARC(施乐帕克研究中心)、Apple和Excite创建了其他的引擎。2014年,Wikipedia用Elasticsearch代替了Lucene引擎,Elasticsearch是一个分布式的、支持REST的搜索引擎,也是用Java编写的。

7、Hadoop。Lucene并不是唯一一个进入我们这个榜单的Cutting创建的作品。2003年,Google在一篇研究论文中描述了在大型商用计算机集群上处理数据的MapReduce算法,受该论文的启发,Cutting用Java编写了一个MapReduce操作开源框架,并以他儿子的玩具大象命名,称为Hadoop。Hadoop1.0于2006年发布,催生了大数据趋势,并激发了许多公司开始收集“数据湖”(datalakes),制定挖掘“数据排放”(dataexhaust)的策略,并将数据描述为“新石油”(thenewoil)。到2008年,Yahoo(当时的Cutting曾在该公司工作)宣称他们的SearchWebmap运行在10,000个内核的Linux群集上,是现有的最大的产线Hadoop应用程序。到2012年,Facebook声称在全球最大的Hadoop集群上拥有超过100PB的数据。

8、并行图形分析(ParallelGraphAnalytiX,PGX)。图形分析是有关理解数据中的关系和连接的。根据基准测试,PGX是世界上速度最快的图形分析引擎之一。PGX是用Java编写的,由OracleLabs研究员SungpackHong领导的团队于2014年首次发布,PGX允许用户加载图形数据并运行分析算法,比如,社区发现(CommunityDetection)、聚类、路径查找、页面排名、影响因素分析、异常检测、路径分析和模式匹配等算法。在健康、安全、零售和金融领域,它的用例比比皆是。

9、#。机器学习(ML)的曲线非常陡峭,这可能会阻止领域专家实现伟大的ML想法。自动化ML(AutoML)可以通过推断ML流程中的某些步骤(例如特征工程、模型训练和调整以及转译等)来提供一些帮助。由Java冠军CliffClick创建的基于Java的开源#平台,旨在实现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是LegoMindstorms的Java虚拟机,是Lego的硬件软件环境,可用于从积木玩具中开发可编程的机器人。玩具OS可以追溯到1999年由JoséSolorzano发起的TinyVM项目,该项目后来演变成leJOS,由BrianBagnall、JürgenStuber和PaulAndrews领导。这个功能齐全的环境具有许多特定于机器人编程的类,这些类使用Java的面向对象特性进行了简化,使得任何人都可以利用其高级控制器和行为算法。

12、Java小程序。根据牛津英语词典,小程序(applet)一词最早出现在1990年的PCMagazine(计算机杂志)上。但是直到1995年Java出现后,小程序才真正腾飞。Java小程序可以在网页(Frame、新窗口、Sun的AppletViewer或测试工具)中启动,并能运行在于浏览器相独立的JVM上。一些人将Minecraft的早期成功归功于这样一个事实:玩家可以通过Java小程序在Web浏览器中玩游戏,而不必下载并安装游戏。尽管Java小程序自Java9以来就不被推荐,并且在2018年也被从JavaSE11中剔除掉了,但它们一度是最快的游戏。一个有趣的事实是:Java小程序还可以访问3D硬件加速,这使得它们在科学可视化方面很受欢迎。

荣誉代码

13、NetBeans和EclipseIDE。最早进入Java集成开发环境世界的是NetBeans,NetBeans于1996年在布拉格的查尔斯大学(以Xelfi的名义)创立,并于1997年由企业家RomanStaněk创立的同名公司进行商业化。Sun在1999年购买了支持所有Java应用程序类型的模块化IDE,并于次年将其开源。2016年,Oracle将整个NetBeans项目捐赠给了Apache软件基金会(ApacheSoftwareFoundation)。

另一个流行的基于Java的集成开发环境是开源的EclipseIDE,它不仅可以用于Java编码,还可用于从Ada到Scala的其他语言的编码。EclipseSDK由IBM于2001年推出,是基于IBMVisualAge的,它是面向Java开发人员的,但是可以通过插件进行扩展。EclipseIDE于2004年从IBM分离出来并加入Eclipse基金会,它目前仍然是可用的顶级IDE之一。

14、IntelliJIDEA。IDE有很多,但IntelliJIDEA在2001年推出后就成为了人们的最爱。如今,IntelliJIDEA已成为许多IDE的框架,这些IDE适用于Python、Ruby和Go等多种语言。IntelliJIDEA及其相关的JetBrainsIDE套件是使用Java编写的,可以提高许多开发人员所依赖的生产力和导航功能。其中包括代码索引、重构、代码完成(这要早于智能手机上的文本自动完成)以及发现错误的动态分析(类似于拼写检查器)。“IntelliJIDEA帮助克服了在某个框架下管理和调试基于Java和JVM的复杂应用程序的挑战,”驻英自由软件和数据工程师、Java冠军ManiSarkar说。“它们让开发人员在使用它们的工具时,感到高效、多产,最重要的是能感到快乐。”

15、ByteBuddy。开源Java库ByteBuddy的创建者,来自奥斯陆(挪威Oslo)的软件工程师RafaelWinterhalter坦承,他的一生(有时令人发狂)专注于小众市场。尽管如此,他的贡献还是大受欢迎:Winterhalter说,用于Hibernate和Mockito等Java工具的ByteBuddy运行时代码生成和操作库每月下载量高达2000万次。

16、Jenkins。Jenkins由SunMicrosystems工程师KohsukeKawaguchi于2004年创建,是一个功能强大的开源的持续集成服务器。Jenkins用Java编写,可帮助我们快速自动地构建、测试和部署应用程序。它通常被认为是使“基础设施即代码”(InfrastructureAsCode,Iac)成为可能的早期DevOps工具之一。Jenkins及其1500多个由社区贡献的插件可以处理各种各样的部署和测试任务,从与GitHub合作,到支持色盲开发人员,再到提供MySQLConnectorJAR文件。

17、GraalVM。由OracleLabs的ThomasWuerthinger领导的一个苏黎世(Zurich)研究团队,花费了多年的时间来磨练三个想法:我们是否可以用Java编写编译器(原始JVM是用C编写的)呢?它是否可以运行以任何语言编写的程序呢?它是否够高效呢?在发表了60篇研究论文之后,GraalVM最终胜出,并成为了一个商业产品。Twitter是这项技术的狂热爱好者之一,它使用GraalVM来提高服务的速度和计算效率。

18、Micronaut。为云编写代码的开发人员需要仔细考虑其应用程序使用了多少内存,以及应用程序如何使用这些内存。Micronaut的创建者GraemeRocher说:“您必须使应用程序对重启、故障自动切换、停机再恢复非常敏感,并在启动时间和内存消耗方面进行优化,”。Micronau是一个用于微服务的Java框架,该微服务需使用注解元数据,以便JVM能够有效地编译应用程序的字节码。

19、WebLogicTengah。1997年,WebLogicTengah成为企业级Java服务器的首个实质性实现。“它早于Java2企业版,并成为BEA的主要产品,最终导致了Oracle收购BEASystems,”JavaMagazine和Dr.Dobb’sJournal的前主编AndrewBinstock说。与此同时,IBM在业务对象框架SanFranciscoProject上的成功,“使Java真正从酷孩子们正在玩的一个有趣的新事物中脱颖而出,并成为一种严肃的业务工具,”Binstock说。如今,OracleWebLogicServer仍然是领先的Java应用程序服务器。然而,另一种选择仍在蓬勃发展:开源应用程序服务器GlassFish,它于2005年由Sun创建,于2018年捐赠给Eclipse基金会。

20、EclipseCollections。工作在投资银行、证券交易所和其他金融服务公司的许多高薪开发人员都需要强大的Java技能,这是有原因的:Java编程语言擅长处理并发,即管理高频交易和其他大规模金融事务中常见的多个执行线程。EclipseCollections最初称为GoldmanSachsCollections,后来捐赠给了Eclipse基金会,它扩展了原生Java的性能密集型特性,“具有优化的数据结构和丰富的、功能强大的、流畅的API”,Java冠军ManiSarkar说。Sarkar指出,EclipseCollections包含缓存、原语支持、并发库、通用注解、字符串处理、输入/输出等等。

21、NSAGhidra。在旧金山举行的2019年RSA大会上,美国国家安全局(U.S.NationalSecurityAgency)推出了一款基于Java的开源工具Ghidra,安全研究人员和从业者现在可以使用它来了解恶意软件的工作原理,并检查自己的代码是否存在漏洞。这个逆向工程平台可以将软件从机器语言反编译回源代码(例如Java语言)。该工具有一个故事,即使不是声名狼藉,也是传奇:2017年3月,维基解密(WikiLeaks)将其存在公之于众。

绘制基因组图普

22、集成基因组浏览器(IntegratedGenomeBrowser,IGB)。绘制人类基因组图谱的竞赛始于1990年,并在13年后结束。当时,医学研究人员成功地对生物技术专家CraigVenter的30亿个DNA碱基对进行了测序,这项工作历时10年,涉及3,000人,耗资30亿美元。测序完成后,科学家们很想深入研究我们这个物种的源代码,但是怎么做呢?进入基于Java的基因组浏览器,这是一个由包括生物信息学教授AnnLoraine在内的团队开发的可视化工具,可用于探索基础数据集和参考基因注解。开源的集成基因组浏览器(IntegratedGenomeBrowser)允许研究人员放大、平移和绘制基因组数据,以便识别和注解遗传特征。为了配合这一全球努力,加州大学圣克鲁兹分校(UniversityofCaliforniaSantaCruz)提供了一个类似的工具,即由JimKent管理的基因组浏览器(GenomeBrowser)。

23、BioJava。BioJava于2000年启动,至今仍很强大,它是一个用于处理生物数据的开源库,生物数据领域也被称为生物信息学。科学家使用该库可以处理蛋白质和核苷酸序列,并可以研究有关基因到蛋白质翻译、基因组学、系统发育和大分子结构的数据。该项目得到了开放生物信息学基金会(OpenBioinformaticsFoundation,OBF)的支持,其全球范围的贡献者得到了各种制药、医学和基因组学领域的资助。“BioJava是方法论和软件开发的一个热门选择,这要归功于Java的可用工具及其跨平台的可移植性,”AleixLafita及其同事在2019年发表的一篇题为“BioJava5:社区驱动的开源生物信息库”的论文中写道。该论文进一步指出,自2009年以来,BioJava已经接受了65个不同开发人员的贡献,并且在过去的一年中,它已在GitHub上累积了224个fork和270个star,并且下载次数超过了19,000次。

最喜欢的“东西”

24、VisibleTesla。这款基于Java的应用程序是由特斯拉(Tesla)汽车爱好者JoePasqua于2013年创建的,它是一个免费程序,可用于监视和控制他的特斯拉ModelS。VisibleTesla的灵感来自于特斯拉汽车俱乐部社区,它提供与电动汽车制造商官方移动应用程序类似的功能。用户可以为诸如解锁的门或充电状态之类的东西设置地理围栏和通知,以及收集和处理行程数据。该项目的开源代码托管在GitHub上。

25、SmartThings。该物联网(IoT)应用程序是由SmartThings开发的(SmartThings是由AlexHawkinson于2012年联合创立的,后来在Kickstarter上筹集了120万美元的资金),可以让我们通过智能手机或平板电脑控制和自动化所有的东西,从家用照明、锁、咖啡机、恒温器以及收音机到全部家用安全系统。该应用程序使用基于Java的Micronaut框架(请参阅#18),因此它基于云的服务可以以亚秒级的速度运行。该公司于2014年被三星电子(SamsungElectronics)以2亿美元的高价收购。

免责声明:内容来源于与公开网络,若涉及侵权联系尽快删除!


【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多
  • eclipse怎么建立Java项目?
    eclipse怎么建立Java项目?
    eclipse怎么建立Java项目?在使用Eclipse建立Java项目时,可以遵循以下步骤: 详情>>

    2024-05-10

  • Java关键词汇总-Java关键字有哪些及其作用?
    Java关键词汇总-Java关键字有哪些及其作用?
    Java关键词汇总-Java关键字有哪些及其作用?Java语言中的关键字(Keywords)是Java编程语言的核心组成部分,它们具有特定的意义,并被用于表示基本数据类型、控制语句、访问权限等。Java关键字总数大约有50个左右,下面列出了一些常用的Java关键字及其作用: 详情>>

    2024-04-08

  • Java编程工具用哪个最好
    Java编程工具用哪个最好
    Java编程工具用哪个最好?Java编程工具的选择取决于个人的偏好、项目需求和开发环境。以下是一些常用的Java编程工具: 详情>>

    2024-04-03

  • 好用的Java编写软件
    好用的Java编写软件
    Java是一种广泛使用的编程语言,因其跨平台、安全性和稳定性而受到许多开发者的喜爱。Java被用于开发各种类型的软件,从桌面应用程序到企业级服务器端应用程序。以下是一些常见的、用Java编写的软件示例: 详情>>

    2024-04-02

  • Java开班时间

    收起