Java开发经验:8+

PHP开发经验:《3个月。

想做一个网站,因为有多年的Java经验,所以一路头自然是想用 Struts+ibatis,虽说 Java Web 开发设置装备摆设挺繁琐的,但有多年的堆集,自然也不是年夜问题。

在筹备的过程中,逐渐发现,我要做的网站,最好是基于一个成熟的CMS或者WIKI系统做定制,否则赤手起身工作量太年夜,可是,经由对比选型,我发此刻这方面的开源规模,Java阵营毫无抵当的输给了PHP阵营。

疾苦啊,抉择啊,我想选PHP吧,Drupal 或者 Joomla,但又担忧年夜头搞定PHP耗时太长,于是但愿能够混搭使用,也就是着重前台展示的部门,使用PHPDrupal上定制,而着重后台营业逻辑的,使用Java开发,两者之间用 Web Service 互通。

可是,这种混搭风也有问题,那就是开发的复杂度高,年夜情形搭建到测试,都麻烦,而且Java很耗资本,对虚拟主机的要求高,所以,最终在这个项目上抛却了使用Jaa的念头(至少是且则的),完全转向了PHP

PHP写代码的过程中有些感悟,总结如下:

上手复杂度:PHP

我用 Java 做了 2-3 年的 Swing 开发,然后转向WEB,第一个接触的框架是 Struts,那时的感应感染就是要设置装备摆设的工具太多了,前后鼓捣了三个多月,才感受渐入佳境了。

现在PHP年夜首先级头子会到此刻总共三个月摆布的时刻(而且只是业余时刻),其中有一周的时刻在看PHP官网的文档,体味首要的说话特征,后面根基上就是边看边改代码,并照猫画虎的写工具。虽说昔时对软件开发的理解不能和今天相提并论,但客不美观的说,PHP简直简单、易学,而且出格适合做WEB开发。

开发感应感染:各有胜场

PHP最让我不爽的处所:

经常是犯错后屏幕一片空白(White Screen Of Death,都有专有名词了,可见这是PHP犯错默示的一年夜特征),什么信息都没有。

开发工具的auto complete能力远不如java

PHP斗劲爽的处所:

php中,数组和哈希表等价,而且是使用最普遍的数据结构,变长参数+数组做参数,能年夜年夜提高写代码的矫捷性。

根基上不用为NPE担忧。

访谒数据库比JDBC简零丁了,不用什么持久化框架也能很快的写出近似DAO的代码。

良多专为WEB设计的特征,使得年夜页面获守信息,或者向页面输出信息都变得很是轻盈。

谈不上爽或者不爽的特征:

echo 的内容直接到前台页面上了,一路头我觉得echojavaSystem.out一样,会写到日志。

因为不像Java那样对classpath以及class的路径有着严酷的要求,一时之间还不习惯,原本建树一个Java类放在什么处所根基膳缦慊什么可考虑的,但此刻经常要抉择计齐截个文件该放在哪个目录下。

因为可以OOP,也可以不OOP,所以,增添新功能点的时辰,经常很纠结O仍是不O

代码气概啊!太习惯了getData这样的命名,是在不顺应get_data这样的函数,是以,执着着,没有入乡随俗的悔改来,也好,一眼就可以看出,哪些是属于框架的,哪些是属于我的。

平台对比

如不美观拿PHPJAVA比,我感受PHP是瑞士×××,而JAVA则是家庭五金维修工具N件套,N = 100,在解决网站开发这一问题上,PHP简直是小巧、易用,但也有不尽如人意的处所。

好比,我发现J2EE中几乎必不成少的JDBC毗连池,在PHP中约等于无,所以,用户请求过来,如不美观需要访谒数据库,都是现连、现取、现关,究其原因,是架构分歧造成的。

现实上,J2EE中有Web Container的概念,用户请求是由Container分配的线程完成的,线程可以使用历程的内存空间交互数据;而PHP是凭借于Apache的,每次用户请求,Apache都启动一个新的历程来执行PHP剧本,历程执行完,一切资本都收受接管了,所以在默认情形下,一个PHP剧本想要留下点全局的工具并不轻易(我一路头就被 global 这个关头词给骗了);当然,也不是说分歧的请求之间完全没法交流数据,只是这样需要使用共享内存,或者使用文件做持久化。

不外,Apache用历程措置请求应该比线程模式要加倍健壮,因为在J2EE中,因为一个线程的问题导致整个Container挂失踪的情形层见迭出。

OOP

PHP主流版本已经对OOP的撑持很好,但因为历史原因,良多若干好多PHP的开源项目的代码都是不那么OOP的。一路头,我是跟着框架的习惯,用不怎么OOP的体例写代码,在写了十几个零星的函数之后,终于禁不住,又全数重构核对象了。

做了这么多年的JavaOOP的思惟已经很是深切,虽然昔时年夜黉舍出来的时辰,也是年夜结构化轨范设计转向面向对象的,但N年之后,再年夜面向对象转向结构化,这种不习惯的感受加倍强烈。也许是OOP真的是加倍合适自然的思虑习惯吧,此刻看着一长串的零星的函数,很有一种不平安的感受,况且还要挖空心思的为体例起名,以避免冲突,累