对比 JDK 11(上图上)和 JDK 17(上图下)中亚马逊的贡献比例,可以看出亚马逊对 Java 的贡献在显著增长。
5 OpenJDK 版本和贡献

上图也更好的展示了这个趋势,2020 年,亚马逊向 OpenJDK 提交了 176 个贡献;2021 年提交了 381 个贡献;到 2022 年仅一季度就提交了 110 个贡献。可以看到亚马逊对 OpenJDK 的贡献是呈上升趋势,而且我们也在对 Java LTS 版本提供支持。目前亚马逊已经决定支持 JDK 8 到 2026 年,对于非 LTS 版本,亚马逊会在下一版本的 30 天内进行升级来确保开发者能够获得更好、更便捷、更安全的使用体验。
6 JDK 11 到 19 的新增功能 (部分)

上图是 OpenJDK 11 到 OpenJDK 19 的部分新增功能,可以看到新增功能的覆盖范围很广,亚马逊和亚马逊云科技也在其中做出了非常重要的贡献。
7 Amazon SDK for Java
这是适用于 Java 的 Amazon 开发工具包,通过提供一组一致且 Java 开发者熟悉的库来简化亚马逊云科技服务的使用。它支持 API 生命周期注意事项,例如凭据管理、重试、数据封送处理和序列化。适用于 Java 的 Amazon 开发工具包还支持更高级别的抽象,以简化开发。
适用于 Java 的 Amazon 开发工具包 2.0 是对 1.0 的重写,具有一些出色的新功能。与 1.0 版本一样,它使你能够轻松使用亚马逊云服务,也包括非阻塞 I/O、自动分页、HTTP/2 和可插拔 HTTP 层等功能以进一步自定义你的应用程序。你可以在几分钟内开始使用 Maven 或任何支持 MavenCentral 的项目管理工具对 Java 项目进行构建、依赖管理。
8 相关工具

当然,亚马逊也了解到很多开发者喜欢使用 IDE 来开发。亚马逊云科技也和众多主流 IDE 进行集成,来帮助我们开发者进行快速的 Java 开发。
9 Amazon CDK for Java

Amazon CDK 是一个开源软件开发框架,用于使用熟悉的编程语言对云应用程序资源进行建模和预置。你可以使用不同的编程语言(如 Python、JavaScript、TypeScript、Java 或 C#)来执行此操作。
相比以前的工具,使用 CDK 可以让你的上手速度变快很多,因为你可以使用熟悉的语言和概念,类和方法,而无需进行上下文切换。你还拥有编程语言的所有工具支持,例如自动补全、内联文档、测试、Linting 和调试器。最重要的是,你能够更快地完成基础架构和应用程序的抽象和构建。我们提供了许多合理的默认值,因此无需阅读大量文档,只需利用默认值快速安全地开始即可。当然,许多默认值可以根据你的需要进行调整。
10 Java 框架

目前很多开发者都在使用不同的 Java 框架进行应用的开发和构建。包括 Web 应用、微服务以及持久性 API 等等。相信各位开发者都选择了不同的框架加速开发。亚马逊云科技提供了一整套开发的生态体系服务来为此提供良好的支持。
11 适用于 Java 软件交付的开发者工具

我们有端到端的解决方案来帮助开发者进行协同工作。从 CI/CD 到整个系统的可观察性,从基础设施即代码到开发/测试,再到开发与安全的集成,你可以使用专门的 Amazon 工具构建成熟的端到端 Java 开发实践。同时,我们在某些领域与顶级供应商进行了原生集成,为开发者提供一站式体验。
具体来说,你可以在构建阶段使用 Amazon Cloud 9 和 Java SDK,并利用 Amazon CodeCommit 对其进行版本控制。代码提交可使用类似 Git 的环境,可以与任何标准的 IDE(Eclipse 或 VS Code)集成。Amazon CodeArtifacts 是二进制文件的版本化存储库,如果你使用的是处理容器 /K8s,则可以使用 Amazon ECR 来推送和拉取映像。Amazon Codeguru 是我们用于 SAST(静态代码分析)的机器学习注入服务,可帮助你提高代码质量和安全性。
开发者可以使用 Amazon CodeBuild 生成 Java 代码,并使用 Amazon CodeDeploy 将其部署到亚马逊云科技环境中。Amazon Codepipeline 为 CI/CD 流水线提供了完整的集成。所有这些开发服务都与可观察性工具很好地集成。开发者可以使用 CloudWatch 来记录和提醒需求,使用 X-Ray 进行追踪,使用 Amazon Config 来评估、审核和评估亚马逊云科技服务资源的配置,利用开发运营专家来识别生产代码中的异常。对于容器化工作负载,Prometheus 和 Grafana 的托管服务可以很好地满足可观察性需求。最重要的是,你可以使用我们的基础设施级代码,CDK 或者 SAM for serverless 配置这些服务。
步骤1 – 使用 Amazon CodeCommit 构建代码库

Amazon CodeCommit 是一项安全、高度可扩展的托管型源代码控制服务,可帮助团队更轻松地协作处理代码。使用 Amazon CodeCommit,你无需运行自己的源代码控制系统,也无需担心基础设施的扩展能力。你可以使用 Amazon CodeCommit 将来自代码的任何数据存储为二进制文件,而且它可以无缝兼容你现有的 Git 工具。
步骤2 – 使用 Amazon CodeBuild 编译和测试

在开发阶段之后,你通常会生成、编译和测试 Java 源代码。你可以利用完全托管的服务 Amazon CodeBuild 来打包依赖项,并创建构建包并运行单元测试用例。使用 Amazon CodeBuild 可以进行依赖的打包,进行构建包的创建,并且运行相关的单元测试。使用该服务进行设置、修补、更新和管理之外, 也可进行自动扩展和收缩,以满足你的代码的构建需求。
步骤3 – 使用 Amazon CodeDeploy 部署

在部署过程中,我们寻找的是失败、不继续和/或回滚部署的任何理由。在这个过程中,我们用到很多亚马逊内部团队遵循的最佳实践。
通常我们会分为三步:首先部署是在 beta 环境中执行的,在该环境中执行各种激进的测试;如果一切正常,那么可以转移到 gamma 环境,这是一个类似生产的环境,运行完整的端到端测试。最后,如果没有失败,你可以转移到生产环境,分批或分波执行部署并执行和监控以获得结果。
按照此做法,可以帮助开发者快速地在成功时部署代码,在失败时回滚代码。你可以使用 CodeDeploy 来自动执行部署,最大限度地提高应用程序可用性。
12 Amazon CodePipeline 持续交付
CodePipeline 对生成和测试进行建模,并且可以根据你定义的发布过程模型,在每次发生代码更改时部署代码。这使你能够快速可靠地交付功能和更新。你可以通过将我们针对流行的第三方服务(如 GitHub)的预构建插件或将你自己的自定义插件集成到发布过程的任何阶段来轻松构建端到端解决方案。
我们希望和开发者一起共建 Java 社区、Java 生态,在云上帮助开发者更好地进行 Java 应用开发,提升开发者的全方位技能。
欢迎持续关注 Build On Cloud 微信公众号,了解更多面向开发者的技术分享和云开发动态!








