# Java 云开发简介和工具

> 原文： [https://howtodoinjava.com/cloud/java-cloud-development-introduction-and-tools/](https://howtodoinjava.com/cloud/java-cloud-development-introduction-and-tools/)

如今，“云”已成为业界最热门的话题。 每个人似乎都在朝着它冲来。 所有财大气粗的大公司都在投资或利用它。 同时，对于大多数开发人员来说，这似乎是一个难题。 让我们今天解决这个难题，并了解其确切含义。 什么使云如此有趣和有用？ 还有更重要的问题，当我们谈论**云开发**时，对我们的开发人员有什么帮助。

```java
Table of Contents

What is Cloud Computing
Advantages of Cloud Computing
Cloud Service Delivery Models
	- Infrastructure as a Service (IaaS)
	- Platform as a Service (PaaS)
	- Software as a Service (SaaS)
Cloud Deployment Models
	- Public Cloud
	- Private Cloud
	- Hybrid Cloud
Java Cloud Development Tools
	Oracle Java Cloud Service
	AWS SDK for Java
	Google App Engine
	Cloudfoundry
	Heroku Java
	Jelastic
	IBM SmartCloud
	Openshift

```

## 什么是云计算

简而言之，云计算就是基于互联网的计算。 通常，术语“云”用于指代用于分布式计算的平台。 如 [Wiki](https://en.wikipedia.org/wiki/Cloud_computing) 中所述，“云计算，也是按需计算，是一种基于互联网的计算，可根据需要向计算机和其他设备提供共享的处理资源和数据。”

作为普通用户，当您检查电子邮件或在互联网上搜索某些内容时，您会从很少的云功能中受益。 在这些示例中，使用了处理技术的功能，该功能存在于遥远的位置，并且用户不知道。 还有许多其他这样的示例，例如在 Dropbox 中存储或在 Google 驱动器中保存文档。 所有这些都是由云驱动的。 当我们开始研究云的 5 个基本特征时，您将获得更多见解。

1.  #### 按需功能

    用户能够在不需要人工干预的情况下配置云计算资源，这通常是通过基于 Web 的自助服务门户完成的。 从 SMTP 服务器到以 GB 为单位的存储限制，这些资源可以是任何东西。 您应该要做的就是 – 登录控制台并添加/删除所需的服务。

2.  #### 广泛的网络访问

    所有云服务都必须可以通过网络访问，并且对可以连接到它们的客户端应用没有任何限制。 一个人应该能够使用办公台式机，笔记本电脑或他的手机/智能手机连接到云接口。 这种移动性对企业特别有吸引力，因此在上班时间或下班时间，无论是在路上还是在办公室中，员工都可以随时随地关注项目，契约和客户。

3.  #### 资源池

    使用[多租户模型](https://en.wikipedia.org/wiki/Multitenancy)将提供商的计算资源集中起来为多个消费者提供服务，并根据消费者需求动态分配和重新分配不同的物理和虚拟资源。 资源包括存储，处理，内存，网络带宽，虚拟机和电子邮件服务等。

4.  #### 快速扩容

    资源是根据触发器或参数按需配置和/或自动分配和释放的。 这将确保您的应用在任何时间点都具有所需的容量。 例如，在为您的应用提供最高负载时，云将为您分配资源来处理所有任务 - 但是当负载较低时，这些资源将为其他一些客户端提供服务。

5.  #### 实测服务

    根据使用情况透明地监视，测量和报告（计费）资源使用情况。 如果您已经使用或知道亚马逊云基础架构，那么它会为您提供数百种服务 - 但是您只需要为每月使用的服务和消耗的资源付费。 用简单的英语来说，是**按使用付费**。

## 云计算的优势

今天，如果您在 Facebook 上发布身份，预订机票或通过移动设备转帐资金，则很有可能正在使用后端云提供的某些服务。 越来越多的组织以非常快的速度向云迁移，为什么呢？ 这是因为云计算可以提高效率，帮助改善现金流并提供更多好处 - 同时有效解决小型企业每天面临的一些最复杂的问题。 让我们列出一些好处，云提供：

*   **高可用性**：大多数云提供商在提供服务方面都非常可靠，其中许多维护正常运行时间为 99.99% 。 连接始终处于打开状态，这意味着您的应用始终处于运行状态。
*   **可扩展性和性能**：迁移到云使所有人都能使用企业级技术。 它还允许小型企业比大型，成熟的竞争对手采取行动更快。 随用随付服务和云业务应用意味着小型公司可以与大型公司一起运行，扰乱市场，同时保持精简和灵活。
*   **自动化备份和恢复**：云提供商为您提供了计划备份的功能，因此您不会由于端到或任何其他因素的错误而丢失数据。 您已经有了备份，只需很少的鼠标单击就可以回滚到最小的工作量。
*   **最新及时更新**：云提供商会为您照顾软件，并定期发布软件更新（包括安全更新），因此您不必担心浪费时间自己维护系统。 让您可以自由地专注于重要的事情，例如发展业务。
*   **具有成本效益**：也许，最显着的云计算优势在于节省 IT 成本。 借助云计算，您可以在内部服务器存储和应用需求为零的情况下节省大量的资金成本。 缺乏内部部署基础架构还消除了相关的运营成本，包括电力，空调和管理成本。 您需要为使用的东西付费，并可以随时删除。

## 云服务交付模型

云基础架构的交付模型可以大致分为基础架构即服务（IaaS），平台即服务（PaaS）或软件即服务（SaaS）。 让我们详细看看它们。

#### 基础架构即服务（IaaS）

IaaS 提供物理计算机或（通常）虚拟机和其他物理资源。 如果您在博客世界中，或者对服务器基础结构感到好奇，则可以将其与托管服务器，内存和网络相关联。 所有基础结构服务，例如计算机，存储设备和路由器，都属于此类别。 它们主要是基于虚拟机的解决方案，其中根据您的成本向您分配了一定数量的资源。 亚马逊，Rackspace，微软，Bluehost 和 Godaddy 等公司是 IaaS 的领先提供商。

请注意，IaaS 可能不附带捆绑软件，您可以自行安装和配置所需的软件和数据库，因为云供应商很可能会提供适当的工具来帮助您这样做。

此外，云提供商可能会在收取象征性费用后向您出售预配置的资源和基础架构。

#### 平台即服务（PaaS）

PaaS 供应商为应用开发人员提供了开发环境。 在 PaaS 模型中，云提供商提供了一个计算平台，通常包括操作系统，编程语言执行环境，数据库和 Web 服务器。 应用开发人员可以在云平台上开发和运行其软件解决方案，而无需购买和管理基础硬件和软件层的成本和复杂性。

平台即服务（PaaS）用户不管理或控制底层的云基础架构，包括网络，服务器，操作系统或存储，但是可以控制已部署的应用以及应用托管环境的可能配置设置。

#### 软件即服务（SaaS）

在 SaaS 模型中，用户可以访问特定的应用软件和数据库。 云提供商管理运行应用的基础架构和平台。 SaaS 有时被称为“按需软件”，通常按使用付费或使用订阅费定价，例如，每月或每年。

提供的服务包括：

*   企业服务，例如工作流管理，群件和协作，供应链，通信，数字签名，客户关系管理（CRM），桌面软件，财务管理，地理空间和搜索。
*   Web 2.0 应用，例如元数据管理，社交网络，博客，Wiki 服务和门户网站服务。

## 云部署模型

部署模型主要是指为单个或多个组织提供的服务。 它们分为 3 个主要类别：

#### 公有云

当通过开放供公众使用的网络提供服务时，云被称为“公共云”。 通常，诸如 Amazon AWS，Microsoft 和 Google 之类的公共云服务提供商在其数据中心拥有并运营基础架构，并且通常通过互联网进行访问。

资源使用可以是收费的还是免费的 - 取决于提供给供应器的服务和基于服务的服务。

#### 私有云

私有云是专门为单个组织运营的云基础架构，无论是内部管理还是第三方管理。 这需要大量的参与才能虚拟化整个业务环境。 如果经常提高业务能力，但是项目的每个步骤都会引发安全问题，必须解决这些问题以防止出现严重的漏洞。

私有云可以托管在 IT 组织内部，或者像 Rackspace 这样的云供应商可以为特定公司自定义其基础架构的一部分。

#### 混合云

混合云是由两个或更多云（私有云，社区云或公共云）组成的，这些云仍然是不同的实体，但被捆绑在一起，提供了多种部署模型的优势。

例如，组织可以将敏感的客户端数据存储在私有云应用的内部，但可以将该应用与作为软件服务在公共云上提供的商业智能应用互连。

## Java 云开发工具

1.  #### Oracle Java 云服务

    [Oracle Java 云服务](https://docs.oracle.com/cloud/latest/jcs_gs/)是 Oracle 云中平台服务产品的一部分。 通过使用 Oracle Java 云服务，您可以快速创建和配置 Oracle WebLogic 服务器域并设置 Java EE 应用环境，而不必担心自己设置任何基础架构或平台详细信息。 您创建的所有 Oracle Java 云服务实例也都进行了预配置，以使用 Oracle 数据库云（数据库即服务）中的实例以及在 Oracle 存储云服务中创建的对象存储容器。

    创建 Oracle Java 云服务实例时，可以选择专为更高可用性需求而设计的环境，例如用户验收测试，登台和生产，或者专为开发和测试而设计的环境。

    您可以请求 Oracle Java 云服务的试用订阅或购买订阅。

2.  #### 适用于 Java 的 AWS 开发工具包

    Amazon 提供了在 AWS 云上开发安全，可靠和可扩展的 Java 应用所需的所有工具，文档和示例代码。 Eclipse Java IDE 用户可以使用适用于 Eclipse 的 AWS 工具包轻松地开始使用 SDK。 用于 Eclipse 的 [AWS 工具包](https://aws.amazon.com/sdk-for-java/)是 Eclipse Java IDE 的插件，使开发人员可以更轻松地使用 Amazon Web 服务开发，部署和调试 Java 应用。

    Amazon 还为许多 AWS 服务（包括 Amazon S3，Amazon EC2，DynamoDB 等）提供了一组专用的 API。 单个可下载的包包括 AWS Java 库，代码示例和文档。

3.  #### Google 应用引擎

    [Google 应用引擎](https://cloud.google.com/appengine/docs/java/gettingstarted/introduction)应用易于创建，易于维护，并且可以随着流量和数据存储需求的变化而轻松扩展。 使用应用引擎，无需维护任何服务器。 您只需上传您的应用即可使用。

    通过应用引擎，您可以使用 Servlet 或监听端口`8080`的服务器代码轻松部署和运行标准 Java Web 应用。 应用引擎应用会根据传入流量自动扩展。 负载平衡，微服务，授权，SQL 和 noSQL 数据库，内存缓存，流量拆分，日志记录，搜索，版本控制，推出和回滚以及安全扫描均受本机支持，并且可以高度自定义。

    要在应用引擎上运行应用，您需要：

    *   一个`app.yaml`文件，描述您的应用的运行时配置，其中包括实例的最小和最大数量以及所需的 CPU 和 RAM。
    *   一个`pom.xml`文件，该文件描述了应用的程序包依赖项。
    *   您的 Java 应用代码。

    除了这些要求之外，应用引擎通常与您要使用的开发工具，框架和库无关。

4.  #### Cloudfoundry

    CloudFoundry 是一个开源的云计算平台即服务（PaaS），最初由 VMware 开发，现在归 Pivotal Software 所有，后者是由 EMC，VMware 和 General Electric 合资成立的。

    CloudFoundry 支持从初始开发到所有测试阶段再到部署的整个生命周期。 因此，它非常适合连续交付策略。 用户可以访问一个或多个空间，这些空间通常对应于生命周期阶段。 例如，可以将准备好进行质量检查的应用推送（部署）到其项目的质量检查空间。 可以将不同的用户限制在具有不同访问权限的不同空间中。

    CloudFoundry 有三种口味。

    **CloudFoundry 开源软件（OSS）**：任何人都可以使用。 部署此版本的 CloudFoundry 涉及使用 CloudFoundry BOSH（高级外壳）部署脚本语言（Pivotal 的另一种开源工具）与基础架构进行接口。 百度网站在 OSS CloudFoundry 上实现。

    **Pivotal CloudFoundry（Pivotal CF）**：可从 Pivotal 获得的商业产品。 它提供了 OSS 产品中未包含的用于安装和管理的额外工具。

    **Pivotal Web 服务（PWS）**：托管在 Amazon Web 服务（AWS）上的 Pivotal CloudFoundry 实例。

5.  #### Heroku Java

    Heroku 是基于托管容器系统的云平台即服务（PaaS）平台，具有集成的数据服务和强大的生态系统，用于部署和运行现代应用。 Heroku 开发人员的经验是一种以应用为中心的软件交付方法，并与当今最流行的开发人员工具和工作流集成在一起。

    Heroku 支持多种编程语言，例如 Java，Node.js，Scala，Clojure，Python，PHP 和 Go。 [Heroku](https://www.heroku.com/) 使在云中轻松部署和扩展 Java 应用变得容易。 无论您是喜欢将标准库与 Tomcat 或 Jetty 之类的应用服务器一起使用，还是与 Spring 或 Play 之类的框架一起使用，Heroku 都不会妨碍您 - 允许您使用自己喜欢的工具构建自己的东西。

6.  #### Jelastic

    [Jelastic](https://jelastic.com/) （Java Elastic 的缩写）是在单个平台内不受限制的基于 PaaS 和容器的 IaaS，可提供高可用性的应用，自动垂直和水平缩放。 Jelastic 提供了复杂的 PaaS（如 Heroku）的所有功能，但还集成了基础架构即服务（如 Amazon）的关键元素。 他们的托管客户需要一个完整的垂直栈，该栈可以安装在裸机上，并可以通过计费集成等交钥匙功能轻松进行管理。

    如今，Jelastic 的“基础架构平台”正迅速成为全局托管服务提供商的标准，并通过以仅现有虚拟化解决方案的一小部分成本提供卓越的统包式云环境来渗透企业市场。

    Jelastic 的独特之处在于它没有限制或代码更改要求，并且提供了自动化的垂直扩展，应用生命周期管理以及来自世界各地多个托管提供商的可用性。 Jelastic 通过插件支持 IntelliJ IDEA 和 Eclipse。

    Jelastic 团队的顾问包括 PHP Rasmus Lerdorf 的创建者，Java James Gosling 和巴西 JavaMan Bruno Souza 的父亲。

7.  #### IBM SmartCloud

    [IBM SmartCloud](https://en.wikipedia.org/wiki/IBM_cloud_computing) 是用于构建和使用私有，公共和混合云的一系列企业级云计算技术和服务。 SmartCloud 产品可以作为自助服务或托管服务购买。

    除了构成云的组件之外，IBM 云还包括通过公共，私有和混合云交付模型提供的基础架构即服务（IaaS），软件即服务（SaaS）和平台即服务（PaaS）。 IBM 将这些产品归为三类：SmartCloud 基础，SmartCloud 服务和 SmartCloud 解决方案。

    SmartCloud 基础由基础架构，硬件，供应，管理，集成和安全性组成，它们是私有云或混合云的基础。 PaaS，IaaS 和备份服务使用这些基本组件构建而成，构成了 SmartCloud 服务。 SmartCloud 解决方案在此云平台和基础架构上运行，由许多协作，分析和营销 SaaS 应用组成。

    IBM 提供了五种云配置模型：

    1.  由客户拥有和运营的私有云
    2.  客户拥有但由 IBM（或其他提供商）运营的私有云
    3.  由 IBM（或其他提供商）拥有和运营的私有云
    4.  虚拟私有云服务（基于对单个企业的多租户支持）
    5.  公共云服务（基于向个人提供的功能）

8.  #### Openshift

    [OpenShift](https://developers.openshift.com/en/java-overview.html) 是 RedHat 的平台即服务（PaaS），允许开发人员在云环境中快速开发，托管和扩展应用。 借助 OpenShift，您可以选择提供的产品，包括在线，本地和开源项目选项。

    借助 OpenShift，您可以使用自己喜欢的应用服务器和框架轻松地部署和运行 Java 应用。 想要运行由 MySQL 支持的 Spring 的 JBoss 服务器吗？ 或者，您是否正在寻找具有 Scala 和 MongoDB 的 GlassFish？ 如果它可以在 Red Hat Enterprise Linux 64 位上运行，那么它可以在 OpenShift 上运行。

    OpenShift 支持源和 WAR 文件部署以及`server.xml`的修改。

作为开发人员，还有许多其他事情可能会让您感兴趣。 我将鼓励您在云上进行更多探索。

学习愉快！