Java和php的比较(Java程序员角度)

挺通俗易懂的文章,发现蛮有意思,转来分享。作者不详。

想做一个网站,因为有多年的Java经验,所以一开始自然是想用 Struts+ibatis,虽说 Java Web 开发配置挺繁琐的,但有多年的积累,自然也不是大问题。

 
在筹备的过程中,逐渐发现,我要做的网站,最好是基于一个成熟的CMS或者WIKI系统做定制,否则白手起家工作量太大,可是,经过对比选型,我发现在这方面的开源领域,Java阵营毫无抵抗的输给了PHP阵营。
 
痛苦啊,抉择啊,我想选PHP吧,Drupal 或者 Droomla,但又担心从头搞定PHP耗时太长,于是希望能够混搭使用,也就是偏重前台展示的部分,使用PHP在Drupal上定制,而偏重后台业务逻辑的,使用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 的内容直接到前台页面上了,一开始我以为echo和java的System.out一样,会写到日志。 
    由于不像Java那样对classpath以及class的路径有着严格的要求,一时之间还不习惯,原来创建一个Java类放在什么地方基本上没什么可考虑的,但现在经常要决策一个文件该放在哪个目录下。 
    因为可以OOP,也可以不OOP,所以,增加新功能点的时候,经常很纠结O还是不O。 
    代码风格啊!太习惯了getData这样的命名,是在不适应get_data这样的函数,因此,执着着,没有入乡随俗的改过来,也好,一眼就可以看出,哪些是属于框架的,哪些是属于我的。
 
平台对比 
如果拿PHP和JAVA比,我觉得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的方式写代码,在写了十几个零散的函数之后,终于忍不住,又全部重构成对象了。
 
做了这么多年的Java,OOP的思想已经非常深入,虽然当年从学校出来的时候,也是从结构化程序设计转向面向对象的,但N年之后,再从面向对象转向结构化,这种不习惯的感觉更加强烈。也许是OOP真的是更加符合自然的思考习惯吧,现在看着一长串的零散的函数,很有一种不安全的感觉,况且还要挖空心思的为方法起名,以避免冲突,累!
 
总结 
1、应该把PHP纳入自己的开发工具箱 
2、PHP不够完美,但可圈可点之处甚多。 
3、面向对象为PHP增色不少 
4、在开源领域,PHP方面比较发达的是最终应用,所以才有那么多人使用wordpress建独立博客,哪怕没有开发经验;而JAVA方面比较发达的是开发框架和类库,给程序员们使用的。从这个角度来讲,Java是个小众的语言。

评论

csyr 的头像

很专业,也很精辟,我做了大约四年的PHP,现在因为ANDR

很专业,也很精辟,我做了大约四年的PHP,现在因为ANDROID项目的原因开始接触JAVA,相比之下PHP的确有很多可以改进的地方,就比如你说的应该支持多线程处理~~ 呵呵,希望以后多多指教。
Dr Dre Beats steelers 的头像

2012 the most stylish

2012 the most stylish headphones , Dr. DRE beats reach the iSonitalk of an integrated response button , and the MIC , and hearing the audio can be easily solutions for mobile phones . Routine use of a miracle seems to four winding four-terminal to collect the patented technology of the heating cable , it seems that the hull layout to reduce losses in order to achieve the largest high- quality headphones to arrive seems balance, clarity and resolution , but the addition of more customers necessities upgrade to additional alternative line . And foldable headphone design , the use of covered storage space , Dr.Dre , stylish and comfortable , particularly evident in the voice user-friendly portable.Beats beats ,cheap dr dre beats,dre beats,zebra beats by dre ,bmw beats by dre ,beats monster ,beats solo hd,beats pro ,beats outlet ,beats by dr dre ,dr dre beats outlet,Dr Dre Beats outlet, Cheap Beats by dre, Monster Beats outlet, Cheap Dr Dre Beats, Beats by Dr Dre Outlet, Monster Beats Outlet, Cheap Beats By Dr Dre, Monster Headphones, Monster Beats Stores, Cheap Monster Beats, Hot Monster Beats, Discount Classic Monster Beats Store, Cheap Monster Headphones, New Monster Beats, Monster Beats by Dr. Dre Studio Headphones transformers Gradient Monster Beats Studio, Beats By Dr Dre Tour, Lady Gaga HeartBeats, Monster Beats Diamond, Monster Beats Diddy, Monster Beats Ferrari, Monster Beats Graffiti, Monster Beats JustBeats, Monster Beats Kobe Bryant, Monster Beats Lamborghini, Monster Beats Lebron James, Monster Beats Michael Jackson, Monster Beats Pro, Monster Beats Red Sox, Monster Beats Solo HD, Monster Beats Solo, Monster Beats Turbine, V-MODA Crossfade LP, Beats By Dr Dre Power.
Monster Beats 的头像

Cheap Monster Beats by dre

Cheap Monster Beats by dre studio headphones yellowish available headset carries numerous trendy color options, its shell appropriate after grinding processing, comprehensive seems instead contracted. cheap monster beats by dre studio ebony headphones available regarding the headset with engineering plastic, the lbs is light, accord with human being system engineering routine seems streamline feels dye-in-the-wood, put on also stable and comfortable. cheap Monster Diddy Beats by dre Ln Ear Headphones Pink headphones using the ears regarding the include segment of make use of the soft sponge materials is made, the routine regarding the ear can effectively reduce the kind using the ears of pressure, sporting a instead comfortable, ideal for prolonged time use beats, cheap dr dre beats, dre beats, zebra beats by dre, bmw beats by dre, beats monster, beats solo hd, beats pro , beats outlet , monster beats outlet, beats by dr dre, , Monster Beats, Dr Dre Beats For Sale, Dr Dre Beats Outlet, Cheap Beats by Dre, Monster Beats Outlet, Cheap Monster Beats, Cheap Dr Dre Beats, Dr Dre Beats Sale, Monster Beats by Dr Dre, Beats by Dre Outlet, Monster Monsters, Monster sign in, Monster log in, Monster high, Beats By Dr Dre Michael Jackson With Box, Beats by Dr Dre solo for christmas, Beats by Dre Tour Cheap, Beats pro for Cheap, Beats spider doctor Dray, Cheap Beats by Dr, Cheap Dr. Dre Beats graffiti headphones, Cheap lady gaga heartBeats, Dr Dre Beats steelers, Cheap-Beats spiderman Beats, Dre Beats Pro black, Electroplating Beats by Dre wholesale Cheap, Beats by Dr Dre, Dr Dre Beats Cheap, Cheap Monster 2011, Cheap Monster 2012 Beats, Dre Beats Monster 2011, Beats By Monster, Dr Dre Beats, Dr Dre Monster, Cuffie Monster Beats, Auriculares Monster Beats, Monster Power Beats, Monster iBeats, in ear earphones reviews, cheap-Monster Beatsbydrdre coupon, new Beats by dre black and yellow,Dr.Dre New York Yankees Headphones for sale, Cheap Authentic Beats By Dre, Doctor Dre Outlet, Discounted Monster Beats dr dre Headphone, Cheap Graffiti Monster Beats by dr dre, Beats By Dr Dre Studio High Definition Headphones Rose Red Monster Beats Studio, Beats By Dr Dre Power, Beats By Dr Dre Tour, Lady Gaga Heartbeats, Monster Beats Diddy, Monster Beats Turbine, Monster Beats Pro, Monster Beats Solo, Monster Beats Solo HD, Monster Beats Ferrari, Monster Beats Graffiti, Monster Beats Red Sox, Monster Beats Diamond, Monster Beats Justin Bieber, Monster Beats Kobe Bryant, Monster Beats Lamborghini, Monster Beats Lebron James, Monster Beats Michael Jackson, V-MODA Crossfade LP, Spiderman Beats, Monster Beat spiderman edition, Monster Beats by dr. dre spiderman, Dr Dre Beats Solo HD Black And Yellow, Dr Dre Beats Michael Jackson Cheap, Monster Beats by dr dre pro, Beats By Dre Studio NY, Spiderman Man Beats by dre, Black and Yellow dr dre solo hd, Studio Dr Dre Pittsburg Edition, Beats Studio Limited Edition, Dr Dre Solo Graffiti Headphoned

发表新评论

此内容将保密,不会被其他人看见。 If you have a Gravatar account associated with the e-mail address you provide, it will be used to display your avatar.
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
  • 允许HTML标签:<a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><img>
  • You can use the <go> tags just like the <a> for nicer urls.

更多关于格式化选项的信息

验证码
这是为了测试你是否是一个人类(相对机器来说)的游客,为防止自动的垃圾提交。
Image CAPTCHA
请把你看到的字符填在上面。