“云计算”是目前热门的技术方向,本文从 Google 的云计算平台 App Engine 入手,简单介绍了 Google 面向 Java 开发人员的云计算平台。从一个实际的电子书分享应用构建出发,讲述了如何在 Google App Engine 平台上构建这个应用程序。
“云计算”基本概念的介绍
IBM 在 Amazon EC2 云计算环境中提供了 DB2、Informix、Lotus、WebSphere 等方面的 AMI 镜像资源。您只需按使用量支付少量费用,就可以使用到云上的数据、门户、Web 内容管理、情景应用等服务。欢迎您随时访问 云计算空间,获取更多信息。
根据维基百科上的定义,云计算是一种动态易扩展,而且通常是通过互联网提供的虚拟化的资源计算方式, 用户不需要了解云内部的细节,也不必具有云内部的专业知识,或者直接控制基础设施。云计算包括基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)以及其它依赖于互联网满足客户计算需求的技术趋势。云计算服务通常提供通用的通过浏览器访问的在线商业应用,软件和数据存储在服务器上。本文的介绍主要在“平台即服务”这个层次上。在这个层次上,Google 所提供的技术即 Google App Engine 。
Google 的“云计算”平台
Google 作为一个搜索引擎,在其发展过程中不断地追求更高的可伸缩型和性能,逐渐发展出一套以自由技术为基础的良好的解决方案,其中包括 Google File System、BigTable 以及 Map Reduce 等。基于这些技术,Google 发展出了称之为 App Engine 的平台,可以允许开发人员在它之上开发应用,同时也利用上了 Google 所提供的基础设施,在可扩展性等非功能性的需求上获得好处,从而可以更加集中精力地解决业务的需求。
Google App Engine 最早于 2008 年 4 月发布,最初支持的开发语言是 Python 。今年 4 月,Google App Engine 已经宣布了对 Java 语言的支持。下图是 Google App Engine for Java 支持的概览。
图 1. Google App Engine for Java 支持的概览
在 Web 应用开发上,Google App Engine 支持 JSP 和 Servlet 技术;在数据存储上,Google App Engine 支持 JDO 和 JPA 两套机制,开发人员在面向对象的层次考虑数据的持久化,不需要考虑关系数据库。此外,Google App Engine 还提供一系列常用的服务,例如邮件收发、图像处理和缓存等。
本文将通过一个简单的实例来展示如何在 Google App Engine for Java 平台上构建 Web 应用。
准备开发环境
Google App Engine 支持两种开发方式:基于集成开发工具 Eclipse 和不基于 Eclipse 。由于 Eclipse 是广大 Java 开发人员使用最多的工具,本文将介绍基于 Eclipse 安装 Google App Engine SDK 并开发部署应用到 Google App Engine 上。下面是简要的过程:
安装 JDK 1.5 或者 1.6
App Engine 现在支持 Java 1.5 版本以上的 JDK,可以从 这里 下载。
安装 Eclipse 3.3 或者 3.4
下载 3.3 以上版本的 Eclipse 中的一款即可。
安装 Google App Engine 的 SDK
运行 Eclipse 之后,在 Help > Software Updates 中获取 Google App Engine 的插件。
图 2. 安装 Google App Engine Eclipse 插件
Eclipse 3.3(Europa), 从这里 下载 安装。
Eclipse 3.4(Ganymede),从这里 下载 安装。
构建一个 Hello World 应用
安装成功之后,就可以构建一个 Google App Engine 的应用了。选择 File>New>Web Application Project。
图 3. 新建 Web 项目
输入项目名称 Hello World 。
图 4. 输入项目名称
运行该应用。
图 5. 运行
应用运行起来之后,访问 http://localhost:8080 。
图 6. 运行结果
将应用部署到 Google App Engine 上
恭喜您,到这里,你已经构建出了第一个 Google App Engine 上的应用,您可以将它部署到 Google 的 App Engine 平台上了。您需要做的就是申请一个帐号。
构建一个电子书分享网站
到这里,读者对 Google App Engine for Java 已经有了直接的印象。下面将通过一个更复杂的例子,讲述利用 Google App Engine 中的编程时的核心概念。
用例介绍
一个电子书分享网站,最基础的需要满足的功能是允许用户上传文件和搜索文件。对于用户的浏览需求,列出最近上传的文件也是一个基本的需求。用例图如下图所示。
图 7. 用例图
存储对象模型
存储模型是一个应用开发的核心之一,在 Google 的 App Engine 的平台,开发人员看不到数据库的概念,不需要创建数据库。 Google 的 App Engine 提供了基于 JPA 和 JDO 的两种技术给开发人员。这里我们利用 JDO 技术来做数据的存取。下面是电子书分享网站的 JDO 的对象模型。
图 8. JDO 对象模型
示例演示:上传电子书的用例
下面针对用户上传一个文档这个用例,讲述如何实现这个功能。
构建上传文件页面
在工程的 war 目录下,添加一个新的文件 upload.html,在该文件中包含如下的代码。
<table>
<tbody>
<tr><td><strong>*Please select a file</strong></td></tr>
<tr><td><input name="efile" type="file" id="fileNode"></td></tr>
<tr><td><strong>*Please set the file's title</strong></td></tr>
<tr><td><input name="filename" type="text" size=60></td></tr>
<tr><td><strong>File tags</strong></td></tr>
<tr><td><input name="tags" type="text" size=60>
<label>seperate by whitespace, like
<i><b>Google appengine</b></i>
</label></td>
</tr>
<tr><td><strong>File description</strong></td></tr>
<tr><td>
<textarea name="description" rows="5" cols="50"></textarea>
</td></tr>
<tr><td><strong>your name</strong></td></tr>
<tr><td><input name="username" type="text" size=60></td></tr>
<tr><td><strong>your email</strong></td></tr>
<tr><td><input name="useremail" type="text" size=60></td></tr>
</tbody>
</table>
<input type="submit" value="upload">
</form>
构建文件上传处理的 servlet
利用 apache 的 commons 的文件上传的库,该 servlet 将上传的内容解析成 File 对象。
图 9. Servlet 模型
持久化改文件
应为 File 类已经添加了 JDO 需要的注释,如下。
public class File {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
private String username;
@Persistent
private String useremail;
@Persistent
private Date uploadDate;
@Persistent
private String filename; //could be a filename or a url...
@Persistent
private String description; //could be a filename or a url...
@Persistent
private String mimeType; //pdf,ppt, chm etc.
@Persistent
private com.google.appengine.api.datastore.Blob file;
@Persistent
private Set<Key> tags = new HashSet<Key>(); // associated tags
利用 JDO 的规范提供的 API,可以持久化该对象到 Google 的 App Engine 的存储设施上。
try {
pm.makePersistent(file);
} finally {
pm.close();
}
注意,这里需要首先在在项目的 classpath 的 META-INF 目录下有 jdoconfig.xml,其内容如下。
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig">
<persistence-manager-factory name="transactions-optional">
<property name="javax.jdo.PersistenceManagerFactoryClass"
value="org.datanucleus.store.appengine.jdo.
DatastoreJDOPersistenceManagerFactory"/>
<property name="javax.jdo.option.ConnectionURL" value="appengine"/>
<property name="javax.jdo.option.NontransactionalRead" value="true"/>
<property name="javax.jdo.option.NontransactionalWrite" value="true"/>
<property name="javax.jdo.option.RetainValues" value="true"/>
<property name="datanucleus.appengine.autoCreateDatastoreTxns"
value="true"/>
</persistence-manager-factory>
</jdoconfig>
小结
本文介绍了云计算领域的一个重要厂商 Google 的 Appengine for Java 的开发平台。通过一个实际的例子讲述了如何使用该平台开发 Web 应用。
相关推荐
标题中的"appengine-java-sdk-1.3.1"指的是Google App Engine的Java版本SDK,这是一个用于在Google云平台上开发和部署Java应用程序的工具包。这个SDK包含了运行和测试Google App Engine应用所需的所有组件,包括开发...
Google App Engine for Java为Java开发者提供了一个全面而强大的云计算平台,不仅支持常见的Java Web开发技术,还引入了一系列创新特性,如自动伸缩、易于部署等,极大地降低了构建高性能Web应用的技术门槛。...
在本案例中,AppEngine为这个留言网站提供了运行环境,处理用户的请求,执行Java代码,并与数据库进行交互。 【ExtGoogleProject】 这个文件名可能是项目的根目录或者压缩包的名称,暗示了这个项目是使用EXT框架...
谷歌AppEngine(Google App Engine)是一款强大的云计算平台,它允许开发者使用Java、Python、Go或PHP等语言构建并运行Web应用。AppEngine提供了全面的后端服务,包括数据库存储、任务队列、邮件服务以及用户身份...
Google App Engine for Java 是一个平台,允许开发者使用Java语言构建并托管网络应用程序,该平台运行在Google的强大可扩展基础设施上。这个平台的核心特性是它的Java运行时环境,它基于Java 6虚拟机(JVM),并且...
Google App Engine(简称GAE)是由Google公司提供的一个无服务器(serverless)的云计算平台,该平台允许开发者快速构建、部署以及管理应用。开发者无需关心服务器的配置和维护,只需关注应用的开发。GAE支持多种...
《Google App Engine Java和GWT应用开发》一书聚焦于如何利用Google App Engine(GAE)平台、Java语言以及Google Web Toolkit(GWT)来构建强大、可扩展且交互式的云端Web应用程序。这本书由Daniel Guermeur和Amy ...
Google App Engine(GAE)是由Google公司提供的一个为开发者提供网站托管服务的平台。它允许开发者运行应用程序在Google的基础设施上。GAE提供了包括Python、Java在内的多种语言支持,并且提供了数据存储、API调用、...
The App Engine SDK for Java includes a local development server as well as the tooling for deploying and managing your applications in App Engine. By downloading, you agree to be bound by the Terms ...
Google App Engine 是谷歌提供的一项平台即服务(PaaS)产品,允许开发者构建并运行Web应用程序。这个平台的主要特点是它提供了全面的基础设施,包括计算、存储和数据库服务,开发者只需要关注应用逻辑,而无需管理...
《 Beginning Java™ Google App Engine》是一本面向初学者至中级开发者的专业指南,旨在教你如何使用Java技术在Google App Engine上构建云端应用。Google App Engine是一个强大的云计算平台,它为Java开发者提供了...
"appengine-java-sdk-1.8.7.zip"是Google App Engine为Java开发者提供的一个完整的开发工具包,它包含了一整套用于构建、测试和部署Java应用的工具和服务。利用这个SDK,开发者可以轻松地创建高度可扩展的Web应用...
通过这份Google App Engine for Java 快速入门指南 v1.2.0,开发者不仅可以了解到如何构建和部署基于Java的应用程序,还可以学习到如何利用Eclipse for App Engine 进行高效的开发工作。无论是初学者还是经验丰富的...
描述中提到的"Google开发环境JDK,用于Goolge App Engine应用开发包"进一步确认了这个SDK是与Java开发紧密相关的,特别是对于在Google App Engine上构建应用。JDK(Java Development Kit)是Java编程的基础,包含...
**Google App Engine**是Google提供的一种云计算平台,用于构建和托管Web应用程序。它允许开发者使用Python、Java、Go或PHP等语言编写应用,并在Google的基础设施上运行,无需关心服务器维护、扩展性和高可用性等...
### Google App Engine for Java 快速使用指南 #### 1. App Engine 简介 ##### 1.1 什么是 Google App Engine? Google App Engine 是一项由 Google 提供的云计算平台服务,允许开发者在其基础设施上运行网络应用...
A good book to learn Google App Engine.