写点什么

使用 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:543057
用户头像

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

关注

评论

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

程序员自我提升不得不知道的一些宝藏网址,收藏起来吧

北游学Java

Java 后端 资源分享

Instagram视频下载器: 4K Video Downloader

科技猫

软件 音视频 经验分享 资源分享 工具分享

HPE的通信技术集团将如何加速电信5G的普及和应用?

VoltDB

数据库 5G VoltDB 电信

Kylin安装部署

五分钟学大数据

kylin 3月日更

从开源的历史与今天,聊聊为什么要期待HDC.Cloud 2021

脑极体

I/O多路复用之EPOLL

高性能架构探索

微信扫码登录技术实现的简单思考

朱季谦

redis

深入理解Spring Security授权机制原理

朱季谦

security

重磅官宣:Nacos2.0发布,性能提升10倍

阿里巴巴中间件

云计算 开源 nacos

区块链如何应用到食品?区块链食品安全溯源

13530558032

区块链数字版权保护--为数字版权保护赋能

13530558032

阿里P7大牛整理!对Android开发的现状和未来发展的思考,吊打面试官系列!

欢喜学安卓

android 程序员 面试 移动开发

嵌入式软件架构设计之分层设计

cdhqyj

架构 软件 嵌入式 分层

从低代码/无代码烂大街的吃瓜群众说起

李小腾

低代码 无代码开发

什么?都1202年了还不懂k8s和容器的关系?!这份k8s指南快拿走不谢!

观测云

云计算 k8s 云服务 知识星球

android开发经典实战!我的移动开发春季历程,大厂直通车!

欢喜学安卓

android 程序员 面试 移动开发

视频云大赛|视频目标分割,下一个视频算法技术爆发点?

阿里云CloudImagine

阿里云 算法 计算机视觉 音视频

java集合【12】——— ArrayList,LinkedList,Vector的相同点与区别是什么?

秦怀杂货店

Java 源码 集合

融云2021 X-Meetup启航 探索高并发下的高质量实时通信架构设计

融云 RongCloud

LeetCode题解:剑指 Offer 49. 丑数,暴力法,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

安卓推送一体解决方案

融云 RongCloud

量化交易系统开发;量化策略软件,马丁策略交易

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合

朱季谦

ELK

新思科技解析导致汽车无钥匙进入系统易受攻击的漏洞及缺陷

InfoQ_434670063458

2021最新分享Java面试全套合集!

比伯

Java 编程 架构 面试 计算机

爱奇艺大数据生态的实时化建设

爱奇艺技术产品团队

大数据 实时数仓 数据流

浅谈I/O多路复用

高性能架构探索

身份验证会影响用户体验吗?

龙归科技

身份认证 用户体验 安全性

中国唯一入选 Forrester 领导者象限,阿里云 Serverless 产品能力全球第一

阿里巴巴中间件

阿里云 Serverless Forrester Wave

智慧党建平台建设--开拓新时期党建系统

13530558032

区块链农产品溯源平台搭建,一物一码追溯系统

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