抛开JSP,直接从JSF入手
曾几何时,学Java Web编程必从JSP开始,成了Java Web程序员们公认的定律。好比少林寺的武僧,习武之初一定先蹲几年马步一样。在论坛上,我经常看到“过来人”以先知的口吻教导初来乍到的菜鸟,想搞Java Web编程的话,必须先从JSP入手,然后再研究某某框架云云。两年前,这是正确的,但现在,这样的教条已经过时了。
1840年的第一次鸦片战争,当英国人敲开清政府闭关锁国的大门时,据我所知,少林寺的武僧恐怕没有帮上什么忙吧。纵然武艺高强,下盘稳固,可是在枪炮面前,血肉之躯如何抵挡得了呢?技术在进步,时代不同了,现在,JSP已经不是 Java Web的必经之路了,如果你是初学者,别听信那些“过来人”三年前的经验,直接以JSF作为你Java Web的跳板,站在巨人的肩膀上,也许用不了多久,你就能超越曾经教导过你的前辈了。
这不是作者信口雌黄,哗众取宠,从JSF入手,是你不甘人后、敢为人先的绝佳机会。你没有必要再为什么JSP费神了。如果说三年前JSF刚刚诞生时,稚嫩的JSF1.0尚需JSP扶上马送一程、尚需借助JSP的名义和程序员们“混个脸熟”的话,那么,三年后的今天,当JSF已经发展到1.2版本时,JSP也许到了该退休的时候了。即便JSP生命力顽强,还能撑几年,发挥点余热,也已经不值得你费九牛二虎之力,苦苦追随了。在我看来,JSP更适合作为一种底层技术,退到幕后,像Servlet一样,默默奉献,把发展的空间让给更能提高程序员生产力的后起之秀。
不必担心有人说你眼高手低,好高骛远,JSF是一个新的框架,它并不需要你有深厚的技术底子,你只需知道组件、事件、JavaBean这些基本概念,就可以放手去干了。玩过网络游戏的人都知道,在游戏中,装备有着举足轻重的作用。同样,作为一个程序员,选择一项领先的编程技术,对于你的生产力也是至关重要的。
从JSP开始学习Java Web编程,就像笨人玩网络游戏,把自己当成一架机器,在网吧里无休止地打怪练级,只有苦劳,没有功劳;聪明的玩家花钱买一个装备,瞬间就把自己送入强手的行列。JSF就是这样的装备,能够让你马上成为Java Web编程的熟手,而且,JSF还是免费的。
JSF对程序员技能的要求
初学Java Web编程的程序员,能否跳过JSP,从JSF入手,只要看看JSF对于程序员的技能有什么基本要求就明白了。前文提到过,JSF是一个Java Web用户界面的框架,JSF的设计目标是填平桌面编程和Java Web编程之间的鸿沟,模糊桌面编程和Web编程的界限,让有着桌面编程经验的程序员,能够快速地进入Web编程的领域,并以他们熟悉的方式编写代码,用他们惯常的思维考虑问题,甚至用完全类似的工具设计界面、调试程序。
事实上,经过这么多年的发展,桌面编程不论是在Java下还是在C++下,已经没有什么区别了,所以,只要你有过桌面编程的经历,不管是Java的还是C++的,你都可以借助JSF,立即着手编写功能强大的Java Web程序。
所以,有限的桌面编程经验,就是JSF对程序员的要求。概括起来,所谓桌面编程经验,其实就是:
第一,理解UI组件的概念,知道如何拖放组件到界面上,如何设置组件的属性;
第二,理解事件和事件驱动,知道如何编写事件例程,对事件作出响应;
第三,掌握面向对象的基本知识,以便理解JavaBean的技术(这其实很简单,只是符合一定规范的Java类而已);
第四,熟悉HTTP协议的一些基础知识,为你进入JSF高级编程作好准备。
这就是全部。对于一般的Java Web编程,JSF要求具备这些技能就足够了,至于Web应用和桌面应用的不同之处,JSF会为你处理,无需你费心。站在更高的高度,用同样的眼光看待桌面应用和Web应用,是JSF领先于其他Java Web框架的根源所在。