Bruce水桶妖 2012-09-02
平时在工作的时候,总是觉得刚毕业的同事们对技术的理解不到位,知其然而不知其所以然。可是,静下心来想一想,这也不能全怪他们,不是新人们不爱学,而是现如今JavaWeb开发的确很繁复。表面上看,现在会Java的人多如牛毛,SSH恨不得是每个java开发培训课的必选项目,但WEB开发的门槛,真的不低。当然,我说不低,是要以一个专业性要求为前提的,如果只是精于“C&P”大法,其实还不能算“掌握”,顶多是“会用”罢了,更别提精通了。
在实际的工作中,由于以前项目的积累,已经基本上不会从头建立工程了,通常都是拿现成的工程框架开始做,避免了很多配置啊,依赖啊之类的繁琐的工作。但是今天又感受了一下,用了一天半的时间,从零开始,建立了一个WEB工程,所以才有这篇感慨文:JavaWeb开发真的不容易。
那么,建立一个比较完整的WEB工程,并且跑起来(完成从前台到数据库的完整处理流程,哪怕只是插入一个整数),需要一个什么样的知识集合呢?
1、首先是环境准备。
通常,我们需要开发工具:Eclipse,或者MyEclipse。但我从来没有用过,我选Eclipse。
然后,选择WEB容器,最常用的Tomcat,或者Jetty,JBoss亦可。我选Tomcat。
2、选择数据库。
没有数据库,很难做出有价值的应用,所以,我们需要选择一个数据库,
自己研究,用的最多的是MySql,当然,Oracle,Postgres也很常见,
喜欢SqlServer的也不少,不过我已经N年没有玩过了。
我选MySql。
3、建立工程。
我相信很多人根本没有自己手工创建过WEB工程的目录结构,都是使用工具自动生成,我坚信,了解工具帮助我们干的事情非常必要,而且非常有好处的。这里主要是建立WEB-INF目录,WEB-INF/classes,WEB-INF/lib,创建初始的web.xml。
4、写代码前的准备工作
在真正开始写第一行代码之前,我们还需要做的准备工作有:
>配置日志系统,java领域最常用的Log4J
>选择连接池,我用了C3P0
>选择持久化技术。当然,直接使用JDBC也可以,不过现在多数项目还是用持久化层的,Hibernate和Ibatis,处于简单性考虑,选择Ibatis。
当然,这些准备工作,除了技术选型的决策,还都涉及到寻找相应的jar包、jar包所依赖的jar,以及写编写初始的配置文件,包括:log4j.properties,c3p0.properties和ibatis的一系列配置。据我所知,不了解log4j.properties配置项含义,只会拿来例子就用的绝不在少数,还有很多人,在将web工程发布到tomat以后,无法把log4j.properties配置与实际的日志文件所在的位置对应起来。
5、写代码测试配置,并验证不熟悉的技术(比如ibatis,我第0.2次用,N年前了解过)
这个过程耗时较长,尤其是ibatis,官方的文档并不丰富,使用它做到对数据库表的增、删、改、查,调了一个下午的时间,最后发现,ibatis出到了3.0,但其配套工具ibator(用于自动从数据库生成表对应的javabean和sql映射文件)生成的配置文件语法完全不对,仔细一看,ibator的最后更新时间2008年,faint!
6、开始写工作代码
这时候就更体现了Java大家庭的繁荣,以及程序员的兼容并蓄了。
首先,会Java,Jsp那是肯定的。
而框架方面呢,我一直不待见SSH,因此还是准备只用Struts,这样可以不学强大的有点过于强大的Spring。
还有些技术点,要么是必然用到的,要么是很好用的,包括:
>XML处理,或者JSON二选一,现在JSON大有取代XML的趋势。
>Apachecommons系列的类库,尤其BeanUtils,StringUtils,API多少了解一点还是很有好处的。
>JSTL,我一直很想为这项技术鸣不平,我觉得挺好的东西,但我周围的人都很冷落它。
然后,因为项目需要,我还要使用一些特定的技术:
>WEBService技术,我用Restful模式,在Restlet和Jersey之间选择,最后用了Restlet。
>需要做一些图表,选用JFreeChart
>…其实还有很多,不一一列举了
7、工程打包、发布
日常工作中,工程的集成、打包和发布,通常不是程序员需要关心的问题。但如果是你一个人在战斗,除了会在MyEclipse的帮助下集成Tomcat进行测试,最好掌握一种手段,把工程打包发布到独立的Tomcat下,从而避免繁琐的手工操作。
常见的方式有:
>ant
>maven
原来我用ant,不过现在转投maven了,用熟了以后,感觉maven比ant要好很多,不过,ant的价值在于灵活,有时候用于完成一些非标工作挺实用的,比如:增量拷贝文件等等。
如果再提稍微高一点的需求,那就是最好掌握windows下批处理文件和linux下shell脚本的编写。
8、版本控制
为了协作、分享或者是安全起见,保存代码的历史版本很重要,
因此需要选择版本管理工具,SubVersion和CVS都很好,
不过我用CVS更熟练一些。
---
因此,做一个合格的JAVAWEB开发人员,真的是不大容易。
知识面要宽,学习能力要强,要善于触类旁通。
对了,我还忘了说前台相关的技术,那就是javascript,CSS,ajax,有时候,还得搭上Flash,及JQuery等一系列的框架。
本文涉及的部分技术,每一个要想做到一定程度的熟悉,都需要不少的时间,
我个人觉得,这个时间跨度为1-2年比较合适,
所以,新入行的朋友们,要在工作前两年经常想一想,自己是不是在各方面逐渐深入,还是一直在做重复性的工作呢?