The Choice of the Web Framework

本文探讨了如何选择合适的Web框架,从浏览器为中心到Java为中心的各种框架进行了分类,并对比了Applet、XML/HTML和JWS等技术的特点。随着带宽的增长,作者倾向于使用RIA技术,如Flex、XUL和Swing等。

The Choice of the Web Framework
Aaron Yuan/2005.12.26


0. Preface
Now, the web frameworks bloom in every aspects[1]. This is can be a good thing, but on the other hand, this also make people confused on choosing the correct one to be based on for their application. So how to do the choice? This article tries to give some useful hints.

1. Category
We can classify all the the framework as the browser-centric and java-centric. Of course, we will build the business layer and database layer using java, such as spring and hibernate or EJB3. The key point lay on the presentation layer. Now we have many choice, the most common is :Struts(Action), JSP(JSF), Tapestry, Applet, WingS(webonswing,etc.), webstart. We can draw a line from java-centric to browser-centric,
and every framework should be one position.

JWS(Xito,JDNC,JDIC) Applet WingS(webonswing) wicket JSF(spring MVC,Struts), Tapestry
java----------------------------->----------------------->---------------------->------------Broswer

Note: Broswer-centric mean the most presentation job is fulfilled by XML/HTML. And this is the mainstream of the world now.

2. Compare
Here is a compare matrix which I come across on the net. Sorry I just can not figure out the specific location.

Factors Applet XML/HTML based JWS

User Interface moderate-sophicated simple-moderate moderate-sophicated
Offline Support No No Yes
UI Response Network Independent Network dependent Network Independent
Interactivity Broswer Limited Broswer/Make-up limited Open
First Use Response Minutes Seconds Minutes
Subsequent use response Minutes Seconds Seconds
Bandwidth Usage Variable Fixed Flexible
Lightweight client support Limited Open Limited

From the matrix above, we can see many advantes the JWS plan over the others. So why people sitll insist on developing the web service based on the XML/HTML? We can see that that's only one reason: make the user the most convenient. For they do not need to install the java SDK or waiting for a while before they start an application caused by the limit of bandwidth. And from these analysis, we also can understand why AJAX(Asynchronous JavaScript And XML) will populate today. Javascirpt is ugly from my
view although some guys will laught at me for that. I love the pure java system. It can be rapidly development and if the architecture is elegant enough, the maintance can be a kind of joy. We can imagine we can develop the same system like what we have, just get rid of so much jsp, xml, html ,css....

3. Thinking
Html and Browser is made to present the static the text and the Http protocol is also sessionless. So we will make overhead use of it if we just wanna build the application based on it. Why not shift to java platform? I just can not fiugred out. Ruby on Rails? Asp.Net? LAMP? maybe... I just think if the java community is more unify...maybe the world will be better.....

In my opition, with the bandwidth growing, the downloading will not a burden, so my choice will be: RIA. On how to do with it, there are
FLEX
XUL(Lazlo)
Swing
AJAX
I need write the action script for FlEX or javascipt for AJAX, I do not like that style. As for Lazlo, I still need do that job. I choose Swing. But there are sitll two methods,to use swing: on the server or on the cilent. The reprents of the former is:
Echo(Echo2)
WingS
SwingWeb
WebOnSwing
This type solution is cool, but not so applicable. Basicly, They all wrap the servelet using all kinds of method. So when the http requests arrive, the response will generate the html to form the swing-like web. this will comsume a lot of time and brandwidth.
The reprents of the latter is so many, so only superstar will be choosed here:
SwiXML(SwiNG,SwiAT)
CookSwing(CookXML)
JDNC(JDIC SwingX)

I still choose JWS, but with a little XUL to do the form designer like cookSwing or Thinlet project.

another concern: If we give up the based j2ee server or even webserver(at now, we still use it). Where is the socket? Because the client side have been located in the romote client machine, not like jsp like file (which located in the server), so how to fulfil the basci communication? HTTP? socket? RPC? RPC in fact in based on the socket. While HTTP will still be used. According to the spring spec, it can support the following
4 choice:

Remote Method Invocation (RMI). Through the use of the RmiProxyFactoryBean and the RmiServiceExporter Spring supports both traditional RMI (with java.rmi.Remote interfaces and java.rmi.RemoteException) and transparent remoting via RMI invokers (with any java interface).

Spring's HTTP invoker. Spring provides a special remoting strategy which allows for java serialization via HTTP, supporting any java interface (just like the RMI invoker). The corresponding support classes are HttpInvokerProxyFactoryBean and HttpInvokerServiceExporter.

Hessian. By using the HessianProxyFactoryBean and the HessianServiceExporter you can transparently expose your services using the lightweight binary HTTP-based protocol provided by Caucho.

Burlap. Burlap is Caucho's XML-based alternative for Hessian. Spring provides support classes such as BurlapProxyFactoryBean and BurlapServiceExporter.

JAX RPC. Spring provides remoting support for Web Services via JAX-RPC.

JMS (TODO).


if they have not so.. i will try one: cookSwing+JWS+spring+hibernate.
______________
[1]: Echo Cocoon Millstone OXF
Struts SOFIA Tapestry WebWork
RIFE Spring MVC Canyamo Maverick
JPublish JATO Folium Jucas
Verge Niggle Bishop Barracuda
Action Framework Shocks TeaServlet wingS
Expresso Bento jStatemachine jZonic
OpenEmcee Turbine Scope Warfare
JWAA Jaffa Jacquard Macaw
Smile MyFaces Chiba JBanana
Jeenius JWarp Genie Melati
Dovetail Cameleon JFormular Xoplon
Japple Helma Dinamica WebOnSwing
Nacho Cassandra Baritus

【四轴飞行器】非线性三自由度四轴飞行器模拟器研究(Matlab代码实现)内容概要:本文围绕非线性三自由度四轴飞行器模拟器的研究展开,重点介绍了基于Matlab的建模与仿真方法。通过对四轴飞行器的动力学特性进行分析,构建了非线性状态空间模型,并实现了姿态与位置的动态模拟。研究涵盖了飞行器运动方程的建立、控制系统设计及数值仿真验证等环节,突出非线性系统的精确建模与仿真优势,有助于深入理解飞行器在复杂工况下的行为特征。此外,文中还提到了多种配套技术如PID控制、状态估计与路径规划等,展示了Matlab在航空航天仿真中的综合应用能力。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的高校学生、科研人员及从事无人机系统开发的工程技术人员,尤其适合研究生及以上层次的研究者。; 使用场景及目标:①用于四轴飞行器控制系统的设计与验证,支持算法快速原型开发;②作为教学工具帮助理解非线性动力学系统建模与仿真过程;③支撑科研项目中对飞行器姿态控制、轨迹跟踪等问题的深入研究; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注动力学建模与控制模块的实现细节,同时可延伸学习文档中提及的PID控制、状态估计等相关技术内容,以全面提升系统仿真与分析能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值