写点什么

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

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

关注

评论

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

蚂蚁金服+拼多多+抖音+天猫Java面经合集,金九银十Java开发校招社招福音!

编程susu

Java 编程 程序员 计算机 技术宅

做了好几年Java开发,一直碌碌无为,如今靠着这份面试题跟答案,我从15K变成了30K

编程susu

Java 编程 程序员 计算机 技术宅

netty系列之:轻轻松松搭个支持中文的服务器

程序那些事

Java Netty 程序那些事

“不服跑个分?” 是噱头还是实力?| 龙蜥技术

OpenAnolis小助手

内核 Cgroups CFS调度器

LeetCode 每日一题「搜索插入位置」

陈皮的JavaLib

Java 面试 算法 LeetCode 8月日更

实现"双碳"目标,看下纺织业的智慧样本

百度大脑

人工智能

27岁到来之际,我在阿里实现了年薪40W+的小目标

编程菌

Java 编程 程序员 计算机 技术宅

公司刚来的京东架构师:看完我写的spring笔记,甩给了我一份文档

编程菌

Java 编程 程序员 计算机 技术宅

微信业务架构&学生管理系统架构选型

John

[架构实战营]模块六作业

xyu

#架构实战营

撒花!!金九银十喜提offer!秋招蚂蚁金服Java研发岗四面

编程菌

Java 编程 程序员 计算机 技术宅

centos7中docker安装

消失的子弹

Docker Kubernetes 云原生

Linux之tr命令

入门小站

Linux

关键字transient的认识

阿志

序列化 java关键字

去哪儿网库存搜索在高并发场景下的探索

Qunar技术沙龙

技术 高并发 投票机制

比特币挖矿的未来只能依靠绿色能源?

CECBC

SSR 技术概述

编程三昧

SSR 8月日更 服务端渲染

DockerHub再现百万下载量黑产镜像,小心你的容器被挖矿

腾讯安全云鼎实验室

容器 云原生 镜像

短短29天,应对高峰100W+访问,看浙大如何交出满分答卷

TakinTalks稳定性社区

架构训练营第 1 期 模块六作业

高远

sql task6

橙橙橙橙汁丶

Go- 包的制作

HelloBug

Go 语言 包的制作

06. 第三次AI浪潮:有何不同?

Databri_AI

人工智能

C#多线程开发-线程基础 01

Andy阿辉

C# 多线程 8月日更 c#多线程

织信Informat低代码平台,赋能企业数字化飞速升级,提效300%!

优秀

低代码 低代码平台

区块链在供应链金融应用优势与四类常见模式

CECBC

内核热补丁,真的安全么?| 龙蜥技术

OpenAnolis小助手

操作系统 内核 热替换

在线JSON转PHP Array工具

入门小站

工具

Go- 包的使用

HelloBug

Go 语言

京东三面惨遭被虐,关于redis,高并发,分布式,微服务一窍不通

编程菌

Java 编程 程序员 计算机 技术宅

秒懂消息队列

yuexin_tech

消息队列

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