JSF准备好与ASP.NET相竞争了吗?
 

前言

最近Java Server Face发布的版本已经得到了许多开发者的强有力的支持,同时也得到了强有力的IDE的集成,JSF的迅速崛起之势不禁让人感到技术变化之快,对目前来讲,将JSF开发与微软的ASP.Net/Visual Studio开发相比较是不是为时过早呢? 

为了比较方便,我们首先来看看微软提供两项关键技术即:ASP.Net 2.0和他的集成开发环境Visual Studio 2005,接下来比较在JSF核心技术中的组件技术和主要的JSF开发环境。(虽然我不是一个.Net开发专家,但是我所知道的能够有效的将.Net和JSF进行比较) 

微软提供的开发功能

首先,来介绍一下微软的开发技术,大家都知道, 对Visual Studio .Net 和ASP来说发布的最大的版本就是Visual Studio 2005 (Whidbey)和ASP.Net 2.0了,下面是二者的一些主要的特性。

ASP.Net 2.0 

新的ASP.Net 2.0组件,或者在微软中叫做控件,设计的更加强大能够减少开发者的代码量,一个主要的例子就是ASP.Net 1.x中Datagrid控件的变化,在2.0中Gridview取代了Datagrid,2.0的Gridview与Visual Studio开发环境紧密的结合在一起并且提供了非常方便的帮助向导叫“Smart Tasks”,这就使从可视化的编辑器中快速的进行可视化控件的定制,因此,Gridview能够迅速的在屏幕上定制,设置列为静态的或者是动态的,设置排序和分页等。开发者也可以使用帮助向导来迅速的配置组件的外观为一个整体,从而没有必要为控件输入许多个性化的属性来进行设置。

一般来讲, Gridview和其他2.0控件一起能够提高生产效率,减少手动编写代码量.这些都是利用了Visual Studio的Smart Tasks的编辑器来进行更加容易的定制。

Visual Studio 2005的开发环境

就像上面提到的Gridview的例子, Visual Studio 2005编辑器提供了完整的ASP.Net控件的交互,这样就提高了控件本身的可用性.下面我们来看看Visual Studio 2005开发环境的主要特性:

Inituitive Rendering

Visual Studio在可视化编辑器中提供了ASP控件的直接的可视化透视图,如果你选择控件,你可以通过使用一般的属性编辑窗口来编辑它的属性,或者使用漂亮的”Smart Tasks”弹出式的为每个控件定制的编辑器。

“Smart Tasks”

“Smart Tasks”是一个非常方便的为每个Asp.Net控件定制的简单来使用的弹出属性编辑器。它允许定制复杂控件的配置,例如,可以方便的为Gridview控件定义属性,像datasource,数据列的显示,编辑,排序,分页等,甚至可以定义控件本身的显示样式,如交叉行的颜色,主题的颜色等。

Easy Databinding

数据绑定可以通过使用”Smart Tasks”弹出属性编辑器并且指定一个数据源或者直接从Servers Explorer上拖拉一个数据对象到界面上来完成。

#p#

Easy to use page templating

Visual Studio的"Master Page"技术可以非常容易的创建一个”master”页来充当其他页的页面模板, Visual Studio提供了一个简单的checkbox方法来决定是否从一个master页的类库中创建一个新的页面。可视化编辑器根据master页通过在页面中提供编辑区域来保持master页的内容的完整性。

Integrated Security

Visual Studio 和ASP.Net提供了一种简单的机制来安全访问Web应用程序,通过使用登录控件,可以迅速的创建一个登录界面,并且加入.Net的安全技术。

Built-in Mobile Development

Visual Studio 2005为与微软相关的移动设备提供了丰富的移动开发工具箱。

Application Themes

提供了高标准的外表和视觉效果。

JavaServer Faces提供的开发功能

Intuitive rendering

首先让我们来看看JSF IDE提供的JSF UI组件(与ASP控件相同的)的直接的视觉效果。在几个嵌入JSF的IDE像Sun的Java Studio Creator, Oracle的 JDeveloper 10.1.3, IBM的WSAD 5.1.2也包括最近新出的M7's NitroX JSF IDE,都可以工作在一个可视化的界面中,并且在运行时看到JSF UI组件的透视图状态。所有的这些工具都提供了JSF可视化编辑。下面时一些JSF IDE和他们的可视化JSF编辑器:

Oracle JDeveloper 10.1.3's JSF enabled Visual JSP Editor

Sun Java Studio Creator's JSF Visual Editor

IBM Websphere Application Developer's JSF enabled JSP Visual editor 

#p#

方便的属性编辑器(像”Smart Tasks”) 

使用更加方便的编辑器类似微软的”smart tasks”编辑器来编辑复杂组件的属性像JSF数据表格确实在JSF IDE中存在不同程度的差异。例如Sun的 Studio Creator可以通过在可视化编辑器上右键DataTable来编辑表格的布局,IBM也为他的DataTable的自定义版本提供了一个更好的属性编辑器:HX:datagrid, Oracle JDeveloper也通过DataTable向导提供了访问DataTable组件的属性的功能。

然而,由于IDE之间的不同,这种特点通常存在不同的JSF IDE,但是每一个又有自己的使用方法,由于他们的不一致的方法和UI,理想的情况下,应该有一个单一的向导标准来在一个可视化编辑器中访问JSF组件。

JDeveloper 10.1.3's Reentrant DataTable Wizard

IBM WSAD's Datagrid Property Editor

Sun Creator Studio's Table Layout Wizard for dataTables

虽然不同的JSF编辑器提供了更加高级属性编辑器,但微软提供了单一的,一致的向导。

Easy Databinding 

JSF IDE提供了更加方便的访问数据绑定JSF UI组件的功能了吗? 

当然,例如, Sun的 Java Studio Creator提供了能够将一个绑定数据的UI组件拖到页面上,然后拖一个数据项如表格在组件上,并且设置组件的数据属性的功能。IBM也提供了向导来支持这种功能。Oracle JDeveloper也提供了拖拽组件像DataTable的功能。 Oracle 产品JDeveloper今年版本将提供高级的数据绑定功能,可以从数据控件板上拖拽item,创建不同的先前绑定的JSF UI组件。

虽然.Net的数据绑定是强大的,对于微软的SQL Server支持的相当好,但对其他各种数据库/数据源支持并不是那么好,而JSF IDE对各种与Java兼容的数据库/数据源提供了更强大的数据绑定功能,因此,JSF IDE可以与微软相媲美。

虽然各种JSF IDE提供了页面模板,例如IBM页面模板,然而没有统一的方式来创建页面模板比如怎么使用微软的”Master Page”技术,在页面模板方面,将来的JSF IDE将会提供更好的支持,比如JDeveloper.通常,真正强大的是被JCP核准的Web页面模板的标准的方法.这种方式所有的JSF IDE能够实现一个单一的Web页面模板策略。

Integrated Security

微软的”Login”控件和”smart tasks”向导可以为Web应用程序创建更加安全的机制,这并不是说不可以在JSF IDE中创建安全性,只是需多做一点工作来构造安全的访问策略。

Built in Mobile Development

微软提供一个强有力的开发方案,虽然仅仅支持微软的PDA技术,在Visual Studio也提供了PalmOs开发的插件,但是很小和独立,不值得一提,JSF IDE并没有这方面的功能,Oracle产品 JDeveloper的版本提供了JSF PDA开发方案,通过使用可视化编辑器和ADF Faces, Oracle的ADF Faces JSF组件与内置的对PDA支持一起和JDeveloper产品的版本提供了一个PDA友好的可视化的设计器。

虽然MS对PDA开发提供了强大的技术支持,但它缺少对非微软PDA开发的支持。另一方面, Oracle's ADF Faces对不同的设备类型提供了内置的对PDA支持,但是在JDeveloper 10.1.3版本以前,可视化编辑器的集成并不支持。 

Application Themes (Skins)

应用程序的外观和主题设置在JSF IDE中通过使用CSS和图片来实现,然而对于JSF或者J2EE的应用程序外观来说并没有一个标准,JSF通过使用“pluggable rendering”这种核心技术来实现应用程序的外观效果,每个UI组件根据客户端的要求来呈现不同的样式。Oracle的UIX技术提供了这样的功能,即外观能够被创建并且与用户接口组件相关,在运行时可以应用/改变。

总结

虽然微软与JSF IDE在基本的开发特性上不相上下,但是,新的JSF IDE将会对微软的技术提出更大的挑战,直到今天为止,JSF IDE与微软的可视化开发环境能够竞争的相当好,虽然JSF在微软的堆栈方面不能提供所有的特性,但这也只是时间的问题, 在J2EE社区中将会提供更加强大的驱动力来推进JSF IDE的发展,在将来有可能超过微软,这很值得我们期待。

(责任编辑 火凤凰 sunsj@51cto.com  TEL:(010)68476636-8007)