10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

使用 Google App Engine、Google Closure Library 与 Clojure 编写 HTML 5 应用

  • 2010-11-15
  • 本文字数:1024 字

    阅读完需:约 3 分钟

上周,Freiheit.com 的 CTO Stefan Richter 在慕尼黑举办的 Google 开发者日上谈到了他对于使用HTML 5 与Google App Engine 编写富Internet 应用的愿景。特别地,他认为相对于基于服务器端的页面渲染来说,基于HTML 5 来构建客户端组件会更加困难。

在之前的Web 开发中,厚重的客户端应用模型都是基于Widget、事件以及事件处理器,这经常会导致复杂的事件处理链,而这一切会造成维护的梦魇。在两层的客户端应用模型中,人们甚至会直接从事件处理器中访问数据库。借助于服务器端的页面渲染,人们可以创建完整的页面,每次都是一个请求,一个响应。

Stefan 认为借助于 HTML 5,“你可以在客户端生成”越来越多的 HTML 代码。他们所尝试的一种方式就是使用 Google Closure Templates。

Closure Templates 是个客户端与服务器端的模板系统,你可以使用它动态构建可重用的 HTML 与 UI 元素。Closure Templates 分别针对 JavaScript 与 Java 提供了相应的实现,这样你就可以在服务器端与客户端使用同样的模板了。

他还推荐集中编写事件处理器,只在必要的情况下将状态封装到客户化 Widget 中。

从后端视角来看,他提出了这样一个问题:“我们真的需要类与对象来传递数据吗?”。他们可以通过 Clojure Macros 在服务器端生成数据访问代码。同样的数据结构既可以用在客户端,也可以用在服务器端:

我们使用键 / 值对作为主要的数据结构。我认为这是应用部署的未来。不再有阻抗失配、不再有 ORM、不再有数据转换。

Clojure 内部使用了键 / 值对形式。我们可以从 Google Datastore 上获取到他们,也可以将其发送给 Google Datastore,还能以 JSON 形式将其发送到客户端。

Stefan 建议大家尽其所能地尝试使用他们,就按照“键 / 值”对形式来用,编写没有副作用的功能性 JavaScript 代码。

在演讲中,他对下一代的 RIA 给出了一系列的通用原则:

  • 只需要阅读代码就应该理解他们的行为
  • 不要尝试在浏览器中编写窗口风格的桌面应用
  • 准备好在客户端渲染大多数 HTML 代码
  • 不要以 Java 形式编写 JavaScript 代码,忘记你所学的 Java 吧
  • 提前规划好离线功能(以及同步数据)
  • 你需要想好如何处理并发修改问题,因为用户很有可能会同时修改同一条数据
  • 你需要推送通知
  • 将客户端的异常记录到服务器上

Deadline 应用就是根据这些原则创建的。

HTML 5(以及云)会改变 RIA 的架构与编程模型么?开发者与架构师准备好了么?你的想法如何?

查看英文原文: Writing HTML5 Applications with Google App Engine, Google Closure Library and Clojure

2010-11-15 06:543028
用户头像

发布了 88 篇内容, 共 271.1 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

我看 JAVA 之 并发编程【三】java.util.concurrent.atomic

awen

Java 并发编程 Atomic 原子操作

2021 斩获 90K 月薪的 Spring 全家桶:文档 + 面试题 + 学习笔记 + 思维导图

编程 架构 微服务 IT 计算机

Python代码阅读(第7篇):列表分组计数

Felix

Python 编程 Code Programing 阅读代码

使用Micronaut框架构建一个微服务网络.

Java 编程 架构 面试 程序人生

Spring Boot 实战派,让开发像喝水一样简单!

Java 程序员 架构 面试 IT

你真的懂语音特征吗?

华为云开发者联盟

语音 音频 声学 时域图 时域

孩子排斥写作业 VS 员工不接活儿——项目管理来帮忙

Ian哥

如何用Camtasia添加视频水印?

淋雨

视频剪辑 Camtasia 录屏软件

Java测试框架九大法宝

FunTester

自动化测试 JUnit 测试框架 selenium testNG

Java 程序性能优化“学习日记”

Java 编程 面试 IT 计算机

为什么安全性在托管中变得越来越重要

九河云安全

高频面试题-请把Java垃圾回收器说清楚

Java 编程 架构 面试 JVM

面试进阶齐飞!霸榜GitHub的 Java 全栈笔记太香了!

Java 编程 程序员 IT 计算机

算法有救了!GitHub 上神仙项目手把手带你刷算法,Star 数已破500k

Java 编程 程序员 面试 算法

台达AS228T_CanOpen_VFD_X

林建

台达 AS228T Canopen 功能块 E变址

Tensor:Pytorch神经网络界的Numpy

华为云开发者联盟

神经网络 数组 PyTorch Numpy Tenso

毕业六年本科,去年疫情期间备战二个月,阿里巴巴四面成功!定级 P7

Java 程序员 架构 面试 IT

渣本全力以赴33天,四面阿里妈妈(淘宝联盟),拿下实习岗offer

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

Compose 编程思想

Changing Lin

8月日更

收获颇丰!这份阿里架构师纯手敲JDK源码全彩小册可以打满分

Java架构追梦

Java 阿里巴巴 架构 面试 jdk源码

MySQL中的DEFINER(定义者)是什么

Simon

MySQL

惠及百万用户 医保“上云”有了新思路

云计算

“助力金九银十”25 大Java后端面试指南,3000道面试题解析

Java 编程 程序员 面试 IT

经验分享:我是如何拿下微软、滴滴、百度等 20家大厂的 Offer?

Java 程序员 架构 面试 IT

Apache之道在腾讯的探索与实践

腾源会

Apache 开源 腾源会 腾讯开源

这波性能优化,太炸裂了!

why技术

Java 性能优化 JVM

接口返回值一定不允许使用枚举类型吗?

skow

Java 面试 后端 开发规范

xposed 入门之修改手机 IMEI

Qunar技术沙龙

android 程序员 App 经验分享 安卓

C++ Vector

若尘

c++ vector 8月日更

spring cloud 在国内中小型公司能用起微服务来吗?

Java 程序员 架构 面试 IT

一文搞懂指标采集利器 Telegraf

尔达Erda

学习 微服务 开发者 云原生 插件开发

使用Google App Engine、Google Closure Library与Clojure编写HTML 5应用_架构_Jean-Jacques Dubray_InfoQ精选文章