HOME> 葡萄牙世界杯冠军> 初探 IBM Bluemix——带您领略平台云

初探 IBM Bluemix——带您领略平台云

2025-08-02 09:57:03

从一个传说讲起

这是一个耳熟能详的传说:传说中,凤凰是人世间幸福的使者,每五百年,它就要背负着积累于人世间的所有不快和仇恨恩怨,投身于熊熊烈火中自焚,以生命和美丽的终结换取人世的祥和和幸福。在肉体经受了巨大的痛苦和轮回后它们才能获得更美好的躯体得以重生。佛教徒把这个故事称为“涅槃”。

的确,一切苦难和磨砺的尽头也是新的希望开始的地方。作为 IT 从业人员,特别是程序员的你,是否也想过或者期望经历这样的涅槃呢?如果你曾经或者现在正在经历如下的痛苦,那么 Bluemix 就是为你而准备的。

不停的安装各种运行时,容器以及繁杂的第三方依赖包安装并配置一切必须的服务(数据库,移动服务等)将所需的服务与应用进行关联,配置端口/IP/防火墙等建立动态路由以及负载均衡机制保证从底层到应用层各个层次的高可用性确保日志的完整收集和高效分析日常要做好应用的性能监控保证应用可以根据负载的大小进行灵活的伸缩最后,不断的重复着 开发》测试》上线 的轮回

Bluemix 带来了什么

Bluemix 致力于解决上述在软件开发过程中遇到的问题,旨在帮助程序员更快速的开发,测试,部署和运维云平台应用。

什么是 Bluemix?

简单的讲,Bluemix 就是一个开放的公有云平台,允许程序员在上面运行几乎所有类型的应用,而不用为硬件,软件,网络等其他因素分心。如上文提到,Bluemix 处于云世界的中间层,也就是 PaaS 层。如下图所示:

图 1. Bluemix 扮演的角色

通常来讲,所谓 PaaS 指的是运行在 Iaas 层上的一系列软件服务,并把服务器平台或开发环境作为一种服务提供给用户,也就是“平台即服务”。Bluemix 运行在 IBM 的 IaaS 层产品 Softlayer 之上。Softlayer 在 2013 年被 IBM 收购,其主要为用户提供企业级的 IT 基础设施的建设和解决方案,无论是在性能还是在安全性上都有很高的质量保证,有兴趣的读者可以参考文章最后的资源链接进一步学习。用户的应用程序通过很简单的操作(大部分场景只需要一条简单的命令即可)就能部署应用到 Bluemix 环境里,程序员不需要去关心底层的操作系统,运行时,网络等等一切和 code 本身无关的东西,而可以把全部的精力放到程序的设计和优化上。

选择 Bluemix 的理由

Bluemix 作为 PaaS 层产品给程序员带来了很多的优势:第一,节省时间和精力,程序员可以把所有的心思都放在应用程序的编写和调优上,而不用去担心繁杂的平台基础架构和设施,更有利于发掘程序员的创造力,开发出更高质量,高性能的应用;第二,加速应用程序上线,在实际的操作中,只需要简单的几条命令或者 UI 界面的几次点击操作就能轻松的完成各种应用程序的部署,而完全不用去担心硬件采购,软件安装等等这些先期准备工作;第三,很容易的满足应用程序对各种新功能和新服务的需求,IBM 及其合作伙伴负责提供优质的服务,程序员只需要简单的“绑定”操作就能将服务加入到应用程序中;第四,Bluemix 支持的语言,运行时,框架等都是程序员已经熟知的,采用 Bluemix 平台几乎不需要增加新的学习成本;最后一点是,Bluemix 底层采用 IaaS 是可以提供企业级需求的 Softlayer,可以有效的保证平台的高性能和高安全性。

目前,Bluemix 正处于公开测试阶段,程序员只需要简单的注册就能轻松的使用 Bluemix 提供的平台云服务。在测试阶段,每个注册账号可以获得 8G 的内存空间用来部署和运行足够多的应用,其中还包括多达 20 个云服务的使用权,注册网址是:www.bluemix.net

Bluemix 运行时和 Buildpacks

在 Bluemix 中程序运行时是以 Buildpacks 的形式提供给用户的,通过下面这张图,可以了解运行时和 Buildpack 的关系。

图 2. 图解 Buildpack

在 Bluemix 中自带四种 Bludpacks,分别是 Liberty for Java,Node.js,Ruby on Rails,Ruby Sinatra。如果部署的应用是上面四种语言之一,那么在部署应用的时候就不需要指定相应的 Buildpack,平台自身会根据部署的应用类型选择对应的 Buildpack。在本文开始的部分,我们提到 Bluemix 支持几乎所有类型的应用,那么除了上面四种应用,其他类型的应用又是通过什么方法进行部署呢?答案就是在部署应用的时候,明确的指定应用所需的 Buildpack 类型,这些 Buildpack 有的来自社区,有的来自程序员自己的开发,因为 Bluemix 是一个开放的云平台架构,允许第三方根据其标准去做一些客制化的拓展。下图所列的就是目前 Bluemi 支持的运行时类型。

图 3. 运行时(Runtimes)

Bluemix 提供的服务(Services)和功能插件(Add-Ons)

应用程序往往不是单独存在的,它需要额外的附加一些新的价值才能使其丰富起来,在 Bluemix 中这些应用程序的附加值是通过服务(Services)和功能插件(Add-Ons)来实现的。在 Bluemix 中,为程序员提供了分门别类的多种服务,这些服务主要包括:Web 和应用服务,移动开发服务,数据管理服务,大数据,DevOps 服务等等。Bluemix 可以做到以最小的代价将相应的服务添加到应用程序中,以此来丰富应用程序,这些操作既可以通过命令行,也可以通过基于浏览器的 UI 来完成。在使用过程中,用户可以创建多个服务的实例,同样多个应用也可以同时使用同一个服务实例。

功能插件(Add-Ons)可以理解成一种特殊的服务,这些功能插件是为运行时来提供更高层次的附加功能。用户可以根据自己的需求,选择应用是否连接到一个或者多个功能插件上,以此来丰富运行的应用程序。功能插件与服务的不同之处在于,同一个 Space 里,只能有一个功能插件实例,多个应用去连同一种功能插件的时候,实际上连的是同一个插件实例,共享同一份服务资源。

对于服务和功能插件来说,当某一个服务绑定到应用中,或者当应用连接到某一个功能插件上时,关于这个服务和功能插件的相关服务信息就会被写进一个成为“VCAP_SERVICES”的系统环境变量中,用户可以在代码里通过调用 System.getenv(“VCAP_SERVICES”) 来获取具体的信息,这些信息是遵循一定的格式的 JSON 字符串,例如对于某一个数据库的服务,读到的环境变量里主要就是数据库的连接信息,用户可以在应用程序里获取并建立与数据库的连接。

如何使用 Bluemix Java 运行时

BlueMix 为程序员提供了多种方法开发,测试应用并最终运行在 Bluemix 运行时中,本文主要关注 Bluemix Java 运行时,并向读者介绍最常用的几种方法,其他运行时的使用方法和本文介绍的类似,读者可以自行使用。

使用命令行工具部署和管理应用

命令行工具一直受大多数程序员欢迎,高效并且高性能,你想在 Bluemix 上做的任何事情,都可以通过命令行工具来完成。比如下面所列,是我们和应用打交道时用到的最频繁的操作。

应用的部署,启动,停止,重启以及删除、服务的创建,绑定,以及解除绑定等操作查看和监控应用程序的日志

命令行工具的安装也很简便,请首先阅读文章末尾的参考资源安装命令行工具。使用 Bluemix 之前,需要首先注册 Bluemix 账号,访问 www.bluemix.net 注册 Bluemix 账号,当这些都完成以后,让我们开始你的平台云之旅吧!

当使用命令行部署 Java EE 的应用到 Bluemix 的时候,Bluemix 支持三种格式应用的部署,分别是:WAR,EAR 以及直接上载一个 Liberty server 到 Bluemix。除了支持这三种格式的打包文件外,还支持将打包文件解压成目录结构,通过命令行将整个目录结构上传并部署到 Bluemix 环境。我们这里将以一个 WAR 应用为例子来详细讲解每一步的操作,关于其他两种格式的应用的部署与 WAR 应用的部署几乎是一样的,详细介绍请阅读参考资源——部署 Liberty 应用到 Bluemix。

登录 Bluemix

使用之前注册的用户名和密码登录到 Bluemix,为部署应用做准备:

首先,使用“cf api”建立于 Bluemix 的连接,连接地址是 https://api.ng.bluemix.net

清单 1. 连接 Bluemix

USAGE:

cf api [URL]

C:\Users\IBM_ADMIN>cf api https://api.ng.bluemix.net

Setting api endpoint to https://api.ng.bluemix.net...

OK

API endpoint: https://api.ng.bluemix.net (API version: 2.2.0)

Not logged in. Use 'cf login' to log in.

其次,运行“cf login”登录到 Bluemix 并选择所要工作的组织和空间

清单 2. 登录 Bluemix

USAGE:

cf login [-a API_URL] [-u USERNAME] [-p PASSWORD] [-o ORG] [-s SPACE]

C:\Users\IBM_ADMIN>cf login

API endpoint: https://api.ng.bluemix.net

Username> xiuleizh@cn.ibm.com

Password>

Authenticating...

OK

Select an org (or press enter to skip):

1. xiuleizh@cn.ibm.com

2. OE_Runtimes_SVT

Org> 1

Targeted org xiuleizh@cn.ibm.com

Targeted space dev

API endpoint: https://api.ng.bluemix.net (API version: 2.2.0)

User: xiuleizh@cn.ibm.com

Org: xiuleizh@cn.ibm.com

Space: dev

部署应用到 Bluemix

本文提供一个例子应用供大家下载部署使用,这个应用是 HelloWithMongo.war,里面包含了一个简单的 servlet 以及一些对 Non-SQL 数据库 Mongo 的基本操作,在 Bluemix 提供的数据库服务里包含了 Mongo 数据库,我们直接拿来使用。

运行“cf push”命令来部署应用到 Bluemix:

清单 3. 部署应用到 Bluemix

USAGE:

Push a single app (with or without a manifest):

cf push APP [-b BUILDPACK_NAME] [-c COMMAND] [-d DOMAIN] [-f MANIFEST_PATH]

[-i NUM_INSTANCES] [-m MEMORY] [-n HOST] [-p PATH] [-s STACK] [-t TIMEOUT]

[--no-hostname] [--no-manifest] [--no-route] [--no-start]

C:\Users\IBM_ADMIN>cf push HelloMongoDW -p C:\A_Workspace\apps\HelloWithMongo.war

Creating app HelloMongoDW in org xiuleizh@cn.ibm.com / space dev as xiuleizh@cn.

ibm.com...

OK

Using route hellomongodw.ng.bluemix.net

Binding hellomongodw.ng.bluemix.net to HelloMongoDW...

OK

Uploading HelloMongoDW...

Uploading from: C:\A_Workspace\apps\HelloWithMongo.war

53.4K, 14 files

OK

Starting app HelloMongoDW in org xiuleizh@cn.ibm.com / space dev as xiuleizh@cn.

ibm.com...

-----> Downloaded app package (484K)

OK

Buildpack Version: 20140527-0132

-----> Downloading IBM 1.7.0 JRE from http://file.icap.cdl.ibm.com/icapShared/jr

e/ibm-java-jre-7.0-6.0-linux-x86_64-small-footprint-uncompressed-jar-20140116.ta

r.gz (0.0s)

Expanding JRE to .java (1.2s)

Downloading from output/wlp/com.ibm.ws.liberty-2014.4.0.0-201405270132.tar.gz ..

. (0.0s).

Installing archive ... (0.6s).

-----> Uploading droplet (93M)

0 of 1 instances running, 1 starting

1 of 1 instances running

App started

Showing health and status for app HelloMongoDW in org xiuleizh@cn.ibm.com / spac

e dev as xiuleizh@cn.ibm.com...

OK

requested state: started

instances: 1/1

usage: 1G x 1 instances

urls: hellomongodw.ng.bluemix.net

state since cpu memory disk

#0 running 2014-05-30 06:45:02 PM 0.6% 329.8M of 1G 179.1M of 1G

部署成功以后可以运行“cf apps”查看应用的运行状态。在这里有几点需要说明:第一,最好要做到唯一,不和部署在 Bluemix 上的其他应用重复,因为默认情况下这个会和 domain 组成应用的访问连接,即:.ng.bluemix.net,每一个应用的访问连接应该是唯一的,如果不是唯一,部署的过程中会报错提醒,我们只要换一个不一样的名字即可;第二,cf push 命令默认会将当前目录下的所有内容 push 到云端,除非我们显示的使用 –p 参数显示的指定要部署的内容;第三,从上面的输出中可以看到,应用的访问路径是“urls: hellomongodw.ng.bluemix.net”,即“http:// hellomongodw.ng.bluemix.net”,这也是默认的 Bluemix 中应用的访问路径的统一格式“appname.domain”。

绑定 MongoDB 服务到例子应用

这个例子应用使用了 Mongo 数据库,在访问应用之前需要将 Mongo 数据库绑定到已经部署成功的应用中,在 Bluemix 中使用数据库也非常简单,无需安装,无需做任何配置,只需要简单的执行几条命令:

首先,创建一个 Mongo 数据的实例

清单 4. 创建 Mongo 数据库实例

USAGE:

cf create-service SERVICE PLAN SERVICE_INSTANCE

C:\Users\IBM_ADMIN>cf create-service mongodb 100 mongo_demo

Creating service mongo_demo in org xiuleizh@cn.ibm.com / space dev as xiuleizh@c

n.ibm.com...

OK

如果想要得到某一种服务的 SERVICE PLAN,可以单独运行“cf marketplace”进行查看,当然,也可以查看每个服务的说明文档,这些信息都会在服务提供者提供的使用文档里进行说明。

其次,当创建好数据库实例后,需要运行一个绑定的命令将数据库实例和应用程序进行绑定,比如上面创建的 Mongo 数据库实例 mongo_demo,使用如下命令进行绑定

清单 5. 绑定 Mongo 数据库和应用程序

USAGE:

cf bind-service APP SERVICE_INSTANCE

C:\Users\IBM_ADMIN>cf bind-service HelloMongoDW mongo_demo

Binding service mongo_demo to app HelloMongoDW in org xiuleizh@cn.ibm.com / spac

e dev as xiuleizh@cn.ibm.com...

OK

TIP: Use 'cf push' to ensure your env variable changes take effect

当执行完绑定命令后,有的时候我们需要重新运行“cf push”使得数据库的绑定操作生效,操作很简单,仅仅是把之前部署应用的命令重新执行一遍,即:

清单 6. 重新部署应用

C:\Users\IBM_ADMIN>cf push HelloMongoDW -p C:\A_Workspace\apps\HelloWithMongo.war

Updating app HelloMongoDW in org xiuleizh@cn.ibm.com / space dev as xiuleizh@cn.

ibm.com...

OK

Uploading HelloMongoDW...

Uploading from: C:\A_Workspace\apps\HelloWithMongo.war

53.4K, 14 files

OK

Stopping app HelloMongoDW in org xiuleizh@cn.ibm.com / space dev as xiuleizh@cn.

ibm.com...

OK

Starting app HelloMongoDW in org xiuleizh@cn.ibm.com / space dev as xiuleizh@cn.

ibm.com...

-----> Downloaded app package (484K)

-----> Downloaded app buildpack cache (4.0K)

OK

Buildpack Version: 20140527-0132

-----> Downloading IBM 1.7.0 JRE from http://file.icap.cdl.ibm.com/icapShared/jr

e/ibm-java-jre-7.0-6.0-linux-x86_64-small-footprint-uncompressed-jar-20140116.ta

r.gz (0.0s)

Expanding JRE to .java (1.1s)

Downloading from output/wlp/com.ibm.ws.liberty-2014.4.0.0-201405270132.tar.gz ..

. (0.0s).

Installing archive ... (0.6s).

Downloading from output/wlp/com.ibm.ws.liberty.ext-2014.4.0.0-201405270132.tar.g

z ... (0.0s).

Installing archive ... (0.3s).

-----> Installing client jar(s) from output/serviceClient/mongo-2.10.1.jar (0.0s

)

-----> Uploading droplet (119M)

0 of 1 instances running, 1 starting

0 of 1 instances running, 1 starting

1 of 1 instances running

App started

Showing health and status for app HelloMongoDW in org xiuleizh@cn.ibm.com / spac

e dev as xiuleizh@cn.ibm.com...

OK

requested state: started

instances: 0/1

usage: 1G x 1 instances

urls: hellomongodw.ng.bluemix.net

state since cpu memory disk

#0 running 2014-06-01 06:35:01 PM 0.7% 331.2M of 1G 212.9M of 1G

对比第一次部署应用到 Bluemix 的输出,最明显的变化是多了一些关于 Mongo 数据库的输出,在重新部署的时候,Bluemix 自动安装了 Mongo 数据库的驱动程序,这样应用就可以正常运行了。

在浏览器中输入“http://hellomongodw.ng.bluemix.net”,将会看成如下页面:

图 4. 访问应用主页

读者可以可以看到有两个连接,点击第一个连接,程序会首先向 Mongo 数据库中插入几条数据,然后将这几条数据检索出来,并在页面进行展现,点击 MongoServlet,应用成功返回如下页面,则说明应用成功运行了。

图 5. 操作 Mongo 数据库

点击第二个连接,程序会打印出环境变量的相关信息,从中,读者可以查看有关 Mongo 数据的连接信息,如下图:

图 6. 打印环境变量

到这里我们已经成功的在 Bluemix 上部署并运行了一个示例应用,接下来再介绍几个常用的和应用程序相关的命令:

清单 7. 其他常用命令

1. 停止,启动以及重启应用

停止:

USAGE:

cf stop APP

C:\Users\IBM_ADMIN>cf stop HelloMongoDW

Stopping app HelloMongoDW in org xiuleizh@cn.ibm.com / space dev as xiuleizh@cn.

ibm.com...

OK

启动:

USAGE:

cf start APP

C:\Users\IBM_ADMIN>cf start HelloMongoDW

Starting app HelloMongoDW in org xiuleizh@cn.ibm.com / space dev as xiuleizh@cn.

ibm.com...

OK

0 of 1 instances running, 1 starting

0 of 1 instances running, 1 starting

1 of 1 instances running

App started

Showing health and status for app HelloMongoDW in org xiuleizh@cn.ibm.com / spac

e dev as xiuleizh@cn.ibm.com...

OK

requested state: started

instances: 1/1

usage: 1G x 1 instances

urls: hellomongodw.ng.bluemix.net

state since cpu memory disk

#0 running 2014-06-01 09:28:56 PM 0.6% 338.5M of 1G 212.9M of 1G

重启:

USAGE:

cf restart APP

C:\Users\IBM_ADMIN>cf restart HelloMongoDW

Stopping app HelloMongoDW in org xiuleizh@cn.ibm.com / space dev as xiuleizh@cn.

ibm.com...

OK

Starting app HelloMongoDW in org xiuleizh@cn.ibm.com / space dev as xiuleizh@cn.

ibm.com...

OK

0 of 1 instances running, 1 starting

0 of 1 instances running, 1 starting

0 of 1 instances running, 1 starting

1 of 1 instances running

App started

Showing health and status for app HelloMongoDW in org xiuleizh@cn.ibm.com / spac

e dev as xiuleizh@cn.ibm.com...

OK

requested state: started

instances: 1/1

usage: 1G x 1 instances

urls: hellomongodw.ng.bluemix.net

state since cpu memory disk

#0 running 2014-06-01 09:34:03 PM 0.7% 334.8M of 1G 212.9M of 1G

2. 解绑定,删除服务实例

解绑定:

USAGE:

cf unbind-service APP SERVICE_INSTANCE

C:\Users\IBM_ADMIN>cf unbind-service HelloMongoDW mongo_demo

Unbinding app HelloMongoDW from service mongo_demo in org xiuleizh@cn.ibm.com /

space dev as xiuleizh@cn.ibm.com...

OK

删除:

USAGE:

cf delete-service SERVICE_INSTANCE [-f]

OPTIONS:

-f Force deletion without confirmation

C:\Users\IBM_ADMIN>cf delete-service mongo_demo

Are you sure you want to delete the service mongo_demo ? y

Deleting service mongo_demo in org xiuleizh@cn.ibm.com / space dev as xiuleizh@c

n.ibm.com...

OK

3. 查看应用日志

USAGE:

cf logs APP

OPTIONS:

--recent Dump recent logs instead of tailing

4. 删除应用

USAGE:

cf delete APP [-f]

OPTIONS:

-f Force deletion without confirmation

C:\Users\IBM_ADMIN>cf delete HelloMongoDW

Really delete HelloMongoDW?> y

Deleting app HelloMongoDW in org xiuleizh@cn.ibm.com / space dev as xiuleizh@cn.

ibm.com...

OK

巧用 Manifest.yml 文件

当我们使用“cf push”命令部署应用的时候,这个命令有可能会变的非常冗长,在清单 3 中我们给出了其用法,这条命令有很多的参数可以选择,只要我们设置好相应的参数,就可以在一条命令里执行多个操作,例如:

cf push appName –p myapp.war –b https://github.com/ryanjbaxter/mybuildpack -i 5 –m 512M --no-start

在上述命令中,除了部署应用外,我们还额外指定了应用要使用的 Buildpack,以及应用实例的数量,分配的内存大小以及部署后是否选择启动,在开发调试的时候,每次都输入这么长的命令会显的很麻烦,为了解决这个问题,我们可以使用 manifest.yml 文件,如下是一个示例:

清单 8. Manifest 示例

applications:

- name: appName

path: HelloWorldDW.war

memory: 512M

instances: 5

buildpack: https://github.com/ryanjbaxter/mybuildpack

services:

- todo-mongo-db

在如上示例中,我们定义了一些在部署应用的时候应该做的操作,当我们需要部署的时候,只需简单的在命令行里运行“cf push”即可,不再需要在后面跟很多的参数,需要注意的是:第一,当运行完“cf push”后,命令行会默认加载当前路径下的 manifest.yml,如果当前路径下没有 manifest.yml 文件,需要在“cf push”后加“-f”参数,指向一个全路径。

通过 Bluemix 控制台管理应用

命令行工具为程序员提供了很多命令来完成各种工作,同时,Bluemix 也提供了一个基于浏览器的 UI 界面,结合使用,会更高的提供应用程序的开发效率,在 UI 上同样也提供了一些更加丰富的功能。要使用 UI 进行应用管理,首先我们需要先部署一个应用到 Bluemix,继续之前,请读者自行完成上节中的清单 1,清单 2 以及清单 3。

Bluemix UI 的访问连接是:https://ace.ng.bluemix.net,输入注册的 Bluemix 账号进行登录,登陆后点击仪表盘(DASHBOARD)并在右上角选择要进入的 Organization 和 Space,如下图:

图 7. 登录 Bluemix UI

如果您已经完成了清单 1 到清单 3 就会在 Applications 旁边看到一个已经部署好的应用,应用的名字是 HelloMongoDW,单击这个应用,进入应用的管理界面:

图 8. 应用管理界面

在这个界面里向程序员展示了一些关于应用的基本信息,并提供了一些关于应用的操作链接。在这里我们单击 ADD A SERVICE 为示例程序绑定一个 Mongo 数据库:

图 9. 创建 Mongo 数据库

当点击 CREATE 后,UI 会提示是否要重启应用,来使得数据库的操作生效,点击 OK,UI 会自动重启应用。应用重启后,会在应用管理界面看到一个新的 Mongo 示例,显示 Mongo 被成功的绑定了。

图 10. 成功绑定 Mongo 数据库

点击上面的 Routes 连接,我们就可以访问应用了,整个过程只需要点击几个按钮,就完成了应用的部署和服务的绑定。接下来我们再介绍几个 UI 里常用的功能:

点击上图中的 Liberty,进入运行时管理页面:

图 11. 运行时管理页面

在这个页面里,我们可以:1,查看关于程序和运行时的基本信息;2,修改程序运行实例的数量以及分配内存的大小。3,点击左侧的 Files and Logs 可以查看应用的日志输出,如下图:

图 12. 查看应用日志输出

同时,我们还可以点击 CATALOG 去查看 Bluemix 提供的运行时和服务的详细列表和使用说明,如下图:

图 13. Bluemix 功能一览

点击 DOCS 可以查看 Bluemix 的所有文档,点击 COMMUNITY,进入 Bluemix 的开发者社区,在使用 Bluemix 的过程中碰到的任何疑问都能在这里找到合适的答案。在这里我们就不再一一介绍,有兴趣的读者可以自行研读,并做一些实际的操作。

安装 Eclipse 插件开发和部署应用

一个应用从无到有需要借助开发工具来完成应用的开发,大多数 Java 程序员的选择都是 Eclipse,Bluemix 同样提供了丰富的插件来帮助程序员使用 Eclipse 与 Bluemix 进行联合开发,装上了 Bluemix 插件的 Eclipse 可以连接到 Bluemix 平台上,在 Eclipse 里只需一个简单的拖拽动作就能将应用快速的部署到 Bluemix 上,同时插件还提供了完成的应用生命周期的管理功能。在 Eclipse Marketplace 中搜索 Bluemix 并安装插件到 Eclipse 中就能方便的使用这些功能:

图 14. 使用 Eclipse 插件开发 Bluemix 应用

除了可以进行应用开发外,Bluemix 还提供了一种称为 Dev Ops 的服务,通过该服务,可以实现应用的持续集成,敏捷开发,除了这些,Dev Ops 还提供了一个基于 Web 页面的 IDE,程序员只需要打开浏览器就能进行应用程序的开发,并将开发完成的应用一键部署到云端,这些对于开发人员来说都是非常高效有用的工具。详细的使用方法都可以在参考资源里找到。

问道怎么堆连击?如何快速提高连击次数?

快手怎么使用变声功能