Google App Engine Java 版上构建电子书分享网站
2010年07月23日
级别: 初级
张军, 软件工程师, IBM 中国软件开发中心
2009 年 10 月 27 日 "云计算"是目前热门的技术方向,本文从 Google 的云计算平台 App Engine 入手,简单介绍了 Google 面向 Java 开发人员的云计算平台。从一个实际的电子书分享应用构建出发,讲述了如何在 Google App Engine 平台上构建这个应用程序。
"云计算"基本概念的介绍 云计算空间
您是否希望随时获取最新的云计算消息?是否想得到云计算相关的技术知识?developerWorks 云计算空间就是这样一个云计算信息资源的门户,在这里您可以了解来自 IBM 和业界其他媒体的最新信息,并且得到如何在云环境中使用 IBM 软件的入门知识。
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 支持的概览。
在 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,可以从 这里 下载。 安装 Google App Engine 的 SDK
运行 Eclipse 之后,在 Help > Software Updates 中获取 Google App Engine 的插件。
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 中的编程时的核心概念。
用例介绍
一个电子书分享网站,最基础的需要满足的功能是允许用户上传文件和搜索文件。对于用户的浏览需求,列出最近上传的文件也是一个基本的需求。用例图如下图所示。
存储对象模型
存储模型是一个应用开发的核心之一,在 Google 的 App Engine 的平台,开发人员看不到数据库的概念,不需要创建数据库。 Google 的 App Engine 提供了基于 JPA 和 JDO 的两种技术给开发人员。这里我们利用 JDO 技术来做数据的存取。下面是电子书分享网站的 JDO 的对象模型。
示例演示:上传电子书的用例
下面针对用户上传一个文档这个用例,讲述如何实现这个功能。
构建上传文件页面
在工程的 war 目录下,添加一个新的文件 upload.html,在该文件中包含如下的代码。 *Please select a file *Please set the file's title File tags seperate by whitespace, like Google appengine File description your name your email
构建文件上传处理的 servlet
利用 apache 的 commons 的文件上传的库,该 servlet 将上传的内容解析成 File 对象。
持久化改文件
应为 File 类已经添加了 JDO 需要的注释,如下。 @PersistenceCapable(identityType = IdentityType.APPLICATION) 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 tags = new HashSet(); // associated tags
利用 JDO 的规范提供的 API,可以持久化该对象到 Google 的 App Engine 的存储设施上。 注意,这里需要首先在在项目的 classpath 的 META-INF 目录下有 jdoconfig.xml,其内容如下。
小结 本文介绍了云计算领域的一个重要厂商 Google 的 Appengine for Java 的开发平台。通过一个实际的例子讲述了如何使用该平台开发 Web 应用。 下载 参考资料 Google App Engine:访问 Google's App Engine 的主页。
有关 JDO 的介绍。
"Google App Engine for Java:第 1 部分:运转起来!"(developerWorks,2009 年 8 月):您将了解到为什么 Google App Engine for Java 将成为您构建高度可伸缩的杀手级应用程序的开发平台。
"Google App Engine for Java:第 2 部分:构建杀手级应用程序"(developerWorks,2009 年 8 月):本文将通过一个分步指南,使用 Google App Engine for Java 来编写和部署一个简单的联系人管理应用程序。
"Google App Engine for Java:第 3 部分:持久性和关系"(developerWorks,2009 年 9 月):介绍了 App Engine 当前基于 Java 的持久性框架。
"Java 开发 2.0:使用 Google App Engine"(developerWorks,2009 年 9 月):解释了如何使用 Google 的 App Engine for Java 迅速实现 Java 开发 2.0 概念。
"Java 数据对象上机实践"(Paul Monday,developerWorks,2002 年 7 月):本教程通过讨论、代码样例和实际经验演示了 JDO 的实际应用。
云计算空间:访问 IBM?? Cloud Computing Central 获得丰富的云资源。
浏览 技术书店 获得有关这些主题和其他技术主题的图书。
developerWorks Java 技术专区:查找数百篇有关 Java 编程各个方面的文章。
发表评论
-
自动化测试框架的设计原则【转】
2012-01-20 09:46 627自动化测试框架的设计 ... -
利用 STAF 实现程序更新包的自动部署测试
2012-01-20 09:46 984利用 STAF 实现程序更新 ... -
小小游戏程序员工作两年后的反思
2012-01-20 09:45 696小小游戏程序员工作两 ... -
开源C++库
2012-01-20 09:45 697开源C++库 2010年07月06日 开源C++库必须具 ... -
浅谈医院执行力不佳的原因
2012-01-19 14:52 532浅谈医院执行力不佳的 ... -
身在保险界【三十四】
2012-01-19 14:52 609身在保险界【三十四】 ... -
执一不二 跬步千里-王子密码10月份月会心得(四)
2012-01-19 14:52 988执一不二 跬步千里-王子密码10月份月会心得(四) 2010 ... -
年底装修“赶时间” 切不可盲目赶工
2012-01-19 14:52 583年底装修“赶时间” 切不可盲目赶工 2011年01月21日 ... -
WinCE驱动开发问题精华集锦
2012-01-17 04:34 635WinCE驱动开发问题精华 ... -
WinCE驱动开发问题精华集锦(一)
2012-01-17 04:34 471WinCE驱动开发问题精华 ... -
Adobe Flash Builder 4.5 Android Air 程序开发系列 之四 打开与关闭应用程序是的保存数据
2012-01-17 04:34 615Adobe Flash Builder 4.5 Android ... -
lamp升级
2012-01-17 04:34 768lamp升级 2011年08月23日 -- lamp ... -
关于PHP的缓存
2012-01-17 04:34 667关于PHP的缓存 2011年05 ...
相关推荐
This practical guide shows intermediate and advanced web and mobile app developers how to build highly scalable Java applications in the cloud with Google App Engine. The flagship of Google's Cloud ...
appengine-java-sdk-1.3.1 GoogleApp开发的SDK(Java版)
Google App Engine for Java 中文指南,Google App Engine for Java 中文指南
谷歌appengine依赖库,GWT编译需要引入此库,方便好用!
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 ...
在搭建WebRTC(AppRTC)时,我们会遇到需要部署Google App Engine的难题,并且最近墙的厉害,所以我特地把我珍藏的Google App Engine 最新版(2020-7-5)分享出来,希望可以方便想搭建WebRTC(AppRTC)的同学们
google app Engine for java中文api,
Google App Engine Java and GWT Application Development
Beginning Java Google App Engine - Kyle Roche and Jeff Douglas.pdf Google App Engine is one of the key technologies to emerge in recent years to help you build scalable web applications even if you ...
一个应该在Google App Engine 上的一个实例。用Java语言编写,里面包含源代码。致以Google App Engine是什么,请Google。 实例部署的地址是:http://hellojavaweb.appspot.com
A good book to learn Google App Engine.
Programming Google App Engine with Java
Eclipse Google 插件 Google App Engine SDK for Java Google App Engine文档 按钮 Google App Engine 开发包
clock.rar 这是我今天做的一个基于google app engine写的一个在该平台上开发app的示例,通过该示例的学习,我们可以很快上手学会怎样在GAE上开发属于你的应用程序了,希望对大家有用!
Google App Engine Documentation
Google App Engine文档
云应用开发——Google App Engine & Google Web Toolkit入门指南 Google App Engine入门 Google App Engine 开发人员指南
Google App Engine is a web application hosting service. By “web application,” we mean an application or service accessed over the Web, usually with a web browser: storefronts with shopping carts, ...