论坛首页 Java企业应用论坛

代码擂台,特别有请buaawhl

浏览 69619 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-07-18  
dlee 写道
buaawhl 写道
你觉得Swing的工作方式和结构很差?

用 Swing 的思路做 Web 开发有框架 Echo。这简直是一种疯狂!我强烈反对这种开发方式,对于提高开发效率几乎没有什么实质上的帮助。


我当然也不看好Echo,所以才开发fastm。

那为什么现代的Web Framework都拼了命的想把页面UI Component和后台Java 处理代码绑定在一起?为什么要拼了命的想 支持“事件机制”呢?

fastm只是一种输出机制。恰好具有Swing的优点。
对于fastm来说,页面组件只有只用fastm Template DOM.
这个页面组件的Model也只有一种,就是ValueSet DOM。

fastm就是准备凭借这样简单的结构和思路,击败所有的“复杂”模板技术。
我昨晚在“推荐一篇文章”那个主题里面,把我新作的一个fastm tile Potal demo上载。

有兴趣的朋友可以下载,运行,审阅源代码。
更希望大家能够用自己最熟悉的技术-- jsp, taglib, velocity, tapestry, and any others,也做出同样的功能。参加这个代码擂台。
(希望做这个demo不耽误大家太多时间。因为还是需要不少事件的,我自己花了两个晚上)
0 请登录后投票
   发表时间:2004-07-18  
还是把代码转过来。
这段时间参加了代码擂台。我觉得这种交流方式不错。
这里也采用这种方式,我把我的fastm portal Demo例子(包括source code,可以直接运行)放在这个贴子的附件里。

我参考了mymsn的portal运作方式。当然,我的HTML功底很糟,做的界面风格比较简单。但具体功能和MyMsn一样完备。

用法:
在home.html中有一个连接tile portal demo。
进入这个连接,就到了tile portal demo。

这个Portal Demo中的概念。
Page是最上层的概念。你可以创建,删除,左右移动Page。
Page里面包含Column。你可以在Page里面创建,删除,左右移动Column。
Column里面包含Content。你可以在Column里面创建,删除,上下移动Content,或者把Content左右移动到。
这个Content就是用户做需要选择的内容。目前我提供了MSN,Yahoo,Sohu,Sina等模拟版面。

大家可以下载,体会一下任意组装Page, Column, Content的过程。

实现思路:
这个Demo没有使用数据库,整个结构在Session中保留。所以不需要配置资源,可以直接运行。
大家可以参考阅读一下这个Demo的代码,体会一下在fastm做到这种页面组装是多么容易的事情。

有兴趣的程序员,可以试着用jsp, taglib, velocity, tapestry实现同样的功能。
比较一下。
0 请登录后投票
   发表时间:2004-07-18  
buaawhl 写道
Page是最上层的概念。你可以创建,删除,左右移动Page。
Page里面包含Column。你可以在Page里面创建,删除,左右移动Column。
Column里面包含Content。你可以在Column里面创建,删除,上下移动Content,或者把Content左右移动到。
这个Content就是用户做需要选择的内容。目前我提供了MSN,Yahoo,Sohu,Sina等模拟版面。

这个不用 JS 你怎么实现?难道都要到服务器过一趟?这些东西用 JS 实现都是非常简单的,似乎不能算很大的亮点吧?
0 请登录后投票
   发表时间:2004-07-18  
dlee 写道
buaawhl 写道
你觉得Swing的工作方式和结构很差?

用 Swing 的思路做 Web 开发有框架 Echo。这简直就是一种疯狂!我强烈反对这种开发方式,对于提高开发效率几乎没有什么实质上的帮助。
几年前我们用 Perl 做 CGI 时就是采用的这种页面模板替换的开发方式,如果继续走下去可能就和 fastm 很象了。确实是很朴素的思想,实现起来也不难。上次和庄表伟讨论后认为:


和页面script(JSP, Velocity一样)开发方式一样,页面模板替换的开发方式也有很多种。我没有参考Perl,就是因为Perl是script。
PHP模板简单,但PHP的页面开发效率很低吗?

一个更著名的项目是Barracuda. XMLC 直接采用HTML DOM的方式。
这也算页面模板替换的开发方式吗?

我参考了PHP,最后又在PHP基础之上创建了DOM概念。
使用方式和简单的“页面模板替换的开发方式”相比,
已经是一个根本的变革了。

简单的“页面模板替换的开发方式”,有JDynamicTe。
也是我的重要参考项目。
也是移植了PHP模板,但操作方式完全是顺序操作的。
与fastm的DOM操作方式有根本不同。
0 请登录后投票
   发表时间:2004-07-18  
buaawhl 写道
一个更著名的项目是Barracuda. XMLC 直接采用HTML DOM的方式。

XMLC 根本就是有问题的开发方式。我为什么要在服务器端操作 DOM?我神经病啊。而且还要事先把每个 HTML 编译为 Java Class,我的 HTML 还必须要符合 XML 格式正确的要求。我直接在浏览器端用 XMLHTTP 获得需要的数据,然后用 JS 来操作 DOM 不就可以了?Java 的任何 XML 解析器解析 XML 的速度都是根本无法与 IE 的 XML 解析器相比的。
0 请登录后投票
   发表时间:2004-07-18  
dlee 写道
buaawhl 写道
你觉得Swing的工作方式和结构很差?

2、Web 层是经常变化的,评价各种框架优劣的标准应该是看其是否可以非常容易地应对这些变化。出现 MVC 就是为了解决以前把所有代码全部填入 JSP 所造成的难以应对变化的问题。我们把表示层开发完全前推到浏览器端,用 JS 开发了一整套可重用的控件(可以参考以前我发在 Web 表示层版上的一些帖子)。页面和显示逻辑放在一起是很适当的,我不认为页面完全不包含逻辑有什么必要。即使这样我把所有 JS 代码完全放在 JS 文件中,不是一样达到了页面完全不包含逻辑的目的?
3、一个好的 Web 层框架应该可以实现有更好交互性的界面。fastm 如果不动态生成 JS,完全无法提供更好的交互,因为所有的工作还是要从服务器过一趟才能完成,完全没有考虑到浏览器端的计算能力(JS+DHTML)。以前我所说的基于 FORM 的请求/响应模式的所有问题都没有解决。


我对这个非常感兴趣。正在努力突破这一关。
我的HTML + CSS + JavaScript非常糟。

我看了很长时间你前面的关于XMLHTTP的讨论。
但我不清楚,那些Java Script的通用性。能否用在XMLHTTP之外的环境。

另外,fastm产生的背景就是 逻辑极其复杂的 JSP和动态Java Script生成。
为了解决这个问题,我才写了fastm。

fastm对java script动态生成有很好的支持。最灵活的jsp能做到的,fastm也能做到。
fastm也支持 java script的注释。
比如,

// BEGIN DYNAMIC: special_code

... some special code

... or variable.
    document.write("{special_var}", ....)
...
// END DYNAMIC: special_code
0 请登录后投票
   发表时间:2004-07-18  
dlee 写道
buaawhl 写道
一个更著名的项目是Barracuda. XMLC 直接采用HTML DOM的方式。

XMLC 根本就是有问题的开发方式。我为什么要在服务器端操作 DOM?我神经病啊。而且还要事先把每个 HTML 编译为 Java Class,我的 HTML 还必须要符合 XML 格式正确的要求。我直接在浏览器端用 XMLHTTP 获得需要的数据,然后用 JS 来操作 DOM 不就可以了?Java 的任何 XML 解析器解析 XML 的速度都是根本无法与 IE 的 XML 解析器相比的。


:-) Barracuda也是fastm的一个竞争目标。fastm正是用轻量的简单DOM(只有两种动态节点,和一种静态节点)替换HTML DOM。

dlee 写道
buaawhl 写道
你觉得Swing的工作方式和结构很差?

2、我们把表示层开发完全前推到浏览器端,用 JS 开发了一整套可重用的控件(可以参考以前我发在 Web 表示层版上的一些帖子)。页面和显示逻辑放在一起是很适当的,我不认为页面完全不包含逻辑有什么必要。即使这样我把所有 JS 代码完全放在 JS 文件中,不是一样达到了页面完全不包含逻辑的目的?
3、一个好的 Web 层框架应该可以实现有更好交互性的界面。fastm 如果不动态生成 JS,完全无法提供更好的交互,因为所有的工作还是要从服务器过一趟才能完成,完全没有考虑到浏览器端的计算能力(JS+DHTML)。以前我所说的基于 FORM 的请求/响应模式的所有问题都没有解决。


fastm只是动态生成DHTML。
Java Script和server端模板技术没有关系。
它们属于UI的两个方面的问题。都是必不可少的。
我这段时间也正在搜索各种java script项目。

"用 JS 开发了一整套可重用的控件"  cool. very interesting.
这正是我下一步的目标。能够多讨论一下吗?有地址吗?
请问是开源的吗?
对不起,我知道,只要看到页面,就可以从服务器上把Java Script下载下来。
:-)
0 请登录后投票
   发表时间:2004-07-18  
buaawhl 写道

还是MVC思维定势问题。

Swing也需要你把业务对象 填充到Swing UI组件专门的Model里面。
这一点,fastm和Swing完全一样。
你如果用Swing,你同样需要在Swing UI组件的Model里面自己控制分页,
设置Swing UI组件的显示风格。这些工作都是在Java里做的。
你觉得Swing的工作方式和结构很差?


根本就没有必要扯到swing。swing多数情况下是用来开发桌面程序的,这么做并没有什么问题。还有,swing里面本来就没有什么脚本之说,都是java写的程序。model里面分页?不要以为用java写的程序就都是model了。
这个fastm面对的是服务器端,可以那么说,在架构上和桌面程序有本质的区别。试图以桌面程序的方式来解构这类server端相关的应用,我看是你自己太思维定势了吧。
还是那句话,从软件解藕(不仅仅是MVC,我对mvc并无特殊嗜好,但是它确实能解决问题)的角度来看,fastm的做法就是一种倒退。在b/s架构中,把一些显示格式相关的东西放到java端代码中去,和放在页面脚本中哪个更合理,我想除了你以外,应该没有什么异议。
0 请登录后投票
   发表时间:2004-07-18  
dlee 写道
buaawhl 写道
Page是最上层的概念。你可以创建,删除,左右移动Page。
Page里面包含Column。你可以在Page里面创建,删除,左右移动Column。
Column里面包含Content。你可以在Column里面创建,删除,上下移动Content,或者把Content左右移动到。
这个Content就是用户做需要选择的内容。目前我提供了MSN,Yahoo,Sohu,Sina等模拟版面。

这个不用 JS 你怎么实现?难道都要到服务器过一趟?这些东西用 JS 实现都是非常简单的,似乎不能算很大的亮点吧?


fastm的竞争对手是 JSP, Velocity, Tapestry, Echo, XMLC等Server端模板生成技术。

虽然fastm可以动态生成java script。
fastm和Java Script不是一个层次的东西。就像不能把Jsp 和Java Script比一样。

至于XMLHTTP,Flex等“客户端浏览器插件”技术。
那已经是一种“纯B/S” ,  还是“类C/S的B/S”选型的问题。

“纯B/S” 是指   DHTML + CSS
“类C/S的B/S” 是指  DHTML + CSS + XMLHTTP / Flex等

对于这些有力的“客户端浏览器插件”技术,超出了fastm的能力范围。

fastm只能做到:
令“纯B/S”系统的开发更简单,以便让程序员更留恋“纯B/S”领域。
0 请登录后投票
   发表时间:2004-07-18  
charon 写道
buaawhl 写道

还是MVC思维定势问题。

Swing也需要你把业务对象 填充到Swing UI组件专门的Model里面。
这一点,fastm和Swing完全一样。
你如果用Swing,你同样需要在Swing UI组件的Model里面自己控制分页,
设置Swing UI组件的显示风格。这些工作都是在Java里做的。
你觉得Swing的工作方式和结构很差?


根本就没有必要扯到swing。swing多数情况下是用来开发桌面程序的,这么做并没有什么问题。还有,swing里面本来就没有什么脚本之说,都是java写的程序。model里面分页?不要以为用java写的程序就都是model了。
这个fastm面对的是服务器端,可以那么说,在架构上和桌面程序有本质的区别。试图以桌面程序的方式来解构这类server端相关的应用,我看是你自己太思维定势了吧。
还是那句话,从软件解藕(不仅仅是MVC,我对mvc并无特殊嗜好,但是它确实能解决问题)的角度来看,fastm的做法就是一种倒退。在b/s架构中,把一些显示格式相关的东西放到java端代码中去,和放在页面脚本中哪个更合理,我想除了你以外,应该没有什么异议。



能否提供JSP, Velocity关于日期格式化的代码(我出的那个题目)?

其实,我并不关心日期格式化在vm里面做,还是在Java Code里做。
但大家却都很关心这个问题。和我讨论说,fastm的页面显示逻辑怎么能放在Java Code里面做呢?
所以,我也要关心一下。看看Velocity是如何完成这个神话 --- 在VM里面只做关于显示的工作。
请问,如果有这样的逻辑,如果 是负数,用红颜色显示,如果是正数,用蓝颜色显示。你认为这个逻辑是属于显示逻辑呢?还是业务逻辑呢?区分标准是什么?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics