Linux 之父出席、干货分享、圆桌讨论,精彩尽在 OpenCloudOS 社区开放日,报名戳 了解详情
写点什么

JBoss 发布了支持 Groovy 并增强了 JSF 的 Seam 2.0

  • 2007 年 11 月 08 日
  • 本文字数:1021 字

    阅读完需:约 3 分钟

我认为我们主要需要考虑两点:(1)你喜欢用声明式的方式还是编程式的来定义用户界面?

(2)在客户端到底有多少功能可以被真正执行

还有一个问题,你希望的类型安全是什么样的。 所有这些问题几乎都是正交的。例如,GWT 提供类型安全的,编程式的,客户端的方案。另一方面,Wicket 提供类型安全的,编程式的,服务器端的方案。

JSF 在某种程度上是类型安全的,声明式的,服务器端的方案,如果需要的话,你也可以选择编程式的方式。每种方式都有它自己的优缺点,但是我认为 JSF 的方法是强迫性的: 首先,我必须用一种声明式的语言来定义用户界面。用户界面本质上是分层的,而我希望我的代码结构能够反映这种本质。我对于使用 swing 风格的 代码来建立用户界面总是觉得别扭。这种代码看起来总是很丑陋而且难以维护——有点象通过遍历 DOM 树来解析 XML 的 Java 代码。这里存在基本的结构性的 断层。

对于用户界面中动态性强的部分,编程式的操作当然更有效。但是,动态性强的部分是很少的。除了个人控制级别的界面以外,大多数用户界面是静态的。而 JSF 在处理动态性的界面时也是很强大的,它允许你在 Java 代码中直接操纵 JSF 组件。当然,你可以选择使用 JavaScript 代码来操作浏览器中的 DOM 对象。(总有一天,有人会建立一个 JSF 实现,使得客户端可以访问 JSF 组件树,但是我们现在没有实现这个功能。)

其次,我不认为把更多的状态和应用逻辑放在客户端执行会减少很多开发工作。有太多事情只能在服务器端有效的处理:持久化,安全,数据级别的并发,等等。如 果你把试图把你的应用代码放到客户端,那么你最终会回到我们 3、4 年前的状态,会有这样一种架构,其特点是:有一个无状态的服务层,一些数据传输对象,细 粒度的手工方式的获取数据以及合并数据变化。这是痛苦的编程模式,我们采用有状态的组件和会话范围的持久化上下文——这两种都是服务器端技术——刚刚从其中逃脱。

使用 RichFaces 和 Seam,你可以创建这样的用户界面:异步的获取数据,交互式的更新视图,异步的响应用户交互,交互式的应用变化,这些动作都处 于一个良好定义的乐观事务中,没有任何烦人的重复工作。当然,学习 JSF 和 RichRaces 比使用其他方式要多花一些时间,但是从长期来看这些代价是物 有所值的。

我所认为的 JSF 方式的最大的弊端目前很少被提及:使用 EL 把视图绑定到模型时缺乏类型安全。我理想的环境应该支持一种真正类型安全的声明式语言来定义用户界面。可惜,Java 不能真正支持创建这样的 DSL。遗憾。

2007 年 11 月 08 日 21:07600
用户头像

发布了 47 篇内容, 共 81535 次阅读, 收获喜欢 2 次。

关注

评论

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

Javaweb框架面试题,尚学堂java全套资料百度云,附高频面试题合集

Java 程序员 后端

Java中级笔试题百度文库,java架构师直通车百度云,使用指南

Java 程序员 后端

Java二叉树面试题总结,马哥linux视频教程百度云,GitHub重磅官宣

Java 程序员 后端

Java入门基础,千锋教育java教程,深度剖析原理

Java 程序员 后端

996页阿里Java面试真题解析火爆全网,Java工程师笔试题目

Java 程序员 后端

Github爆火的《高并发秒杀顶级教程》,2021最新Java框架体系架构面试题

Java 程序员 后端

HTTPS面试常问全解析,黑马学习java,Java中高级工程师面试题及答案

Java 程序员 后端

Java-SSM框架相关面试题整理,2021Java面试题知识点总结

Java 程序员 后端

997页字节跳动Java面试真题解析火爆全网,腾讯T3大佬亲自教你

Java 程序员 后端

Java400道面试题通关宝典助你进大厂,Java后端工程师需要掌握的知识

Java 程序员 后端

Prometheus 内置函数(四)

耳东@Erdong

Prometheus PromQL 10月日更

Dubbo高频面试题+解析,宅家36天咸鱼翻身入职腾讯

Java 程序员 后端

ELK性能优化实战总结,黑马java笔记与作业,Java面试基础知识点

Java 程序员 后端

flutter中文网,达内java教程视频,HTTP规范中的那些容易掉进去的坑

Java 程序员 后端

hash、set、zset的底层数据结构原理,字节Java面试必问

Java 程序员 后端

Alibaba高并发业务实战文档,java自学百度网盘,Java架构师知识体系

Java 程序员 后端

在线手机号码VCF批量导入工具

入门小站

工具

GitHub标星8k!黑马springboot笔记,阿里Java校招面试题

Java 程序员 后端

Javaweb面试问题,java教程马士兵全集,设计思想解读开源框架

Java 程序员 后端

2021 Qcon 前端专场精彩回顾

程序员海军

大前端 可视化 vite Qcon

Java五年工作经验面试题,极客学院和黑马,深入linux内核架构面试

Java 程序员 后端

SQL 笔记

越锋利

sql 课程

Java中高级面试技术问题,mysql优化视频教程,Java全栈知识体系

Java 程序员 后端

Java从入门到精通百度云,java教学百度网盘,思维导图+源代码+笔记+项目

Java 程序员 后端

BIO和NIO有啥区别,Redis灵魂14问

Java 程序员 后端

BTAJ大厂最新面试题汇集,中级Java开发人员要掌握的技术

Java 程序员 后端

docker面试题汇总,尚学堂尚硅谷java,已拿offer入职

Java 程序员 后端

Github爆火的《高并发秒杀顶级教程》,尚学堂java资料,Java基础面试题

Java 程序员 后端

分布式存储和区块链结合能碰撞出怎样的火花?

CECBC

BIO和NIO有啥区别,绝对干货分享

Java 程序员 后端

Java中级笔试题百度文库,牛客网java笔试题库,从底层开始带你了解并发编程

Java 程序员 后端

GPU容器虚拟化:用户态和内核态的技术和实践详解

GPU容器虚拟化:用户态和内核态的技术和实践详解

JBoss发布了支持Groovy并增强了JSF的Seam 2.0_Java_Scott Delap_InfoQ精选文章