Java-[讨论] JAVA跟PHP对比,开发网站,各种优劣势如何?

Java-[讨论] JAVA跟PHP对比,开发网站,各种优劣势如何?

夜无邪 发布于 2017-06-17 字数 231 浏览 1094 回复 13

这边关于java的问题较少,我想问一下JAVA跟PHP对比,开发网站,各种优劣势如何?我自己最大的感受就是java功能较全面,实现异步处理,多线程等有很大优势,php开发调试简单,与Linux/Mysql/Apache/Nginx等组成天然的黄金组合,请大家各抒己见

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(13

甜柠檬 2017-11-11 13 楼

结合多语言混搭,用合适的语言做擅长的部分。如利用java底层工具构建一些关键的高性能可扩展服务,再用php实现复杂的业务逻辑及表现。

虐人心 2017-11-09 12 楼

找两个典型产品来对比下就知道了
PHP的代表作是DISCUZ UCHOME吧,JAVA的代表作是淘宝

灵芸 2017-10-19 11 楼

一、 语言比较

Php是解释执行的服务器脚本语言,首先php有简单容易上手的特点。语法和c语言比较象,所以学过c语言的程序员可以很快的熟悉php的开发。而java需要先学好java的语法和熟悉一些核心的类库,懂得面向对象的程序设计方法。所以java不如php好学。

Java首先要编译成字节码.class文件,然后在java虚拟机上解释执行。Java的web开发首先最容易想到的就是JSP(现在已经到JSP2.0),原来的java的web开发都是用servlet来实现的,用servlet来开发需要程序员在java的源文件中嵌入大量的html代码。所以后来就出现了JSP,JSP可以方便的嵌入到html文件当中,其实jsp文件在服务器上执行的时候首先会被应用服务器转换成servlet,然后再编译执行。Jsp可以通过servlet和JavaBean的支持产生强大的功能。JavaBean 是一种可复用的、跨平台的软件组件。使用javabean可以方便的实现java代码和html的分离,能够增强系统的功能和软件的复用性。

Java的web开发属于SUN公司定义的J2EE其中的规范。而且在J2EE中包括了java的web开发的所有方面,如:JSP、Servlet、JDBC、JNDI、JAVABEAN、EJB等等。J2EE就特别适合于做大型的企业级的应用。

二、 数据库访问比较

Java通过JDBC来访问数据库,通过不同的数据库厂商提供的数据库驱动方便地访问数据库。访问数据库的接口比较统一。

PHP对于不同的数据库采用不同的数据库访问接口,所以数据库访问代码的通用性不强。例如:用Java开发的web应用从MySQL数据库转到Oracle数据库只需要做很少的修改。而PHP则需要做大量的修改工作。

三、 系统设计架构比较

采用Java的web开发技术,需要使用的是面向对象的系统设计方法,而PHP还是采用面向过程的开发方法。所以用Java进行开发前期需要做大量的系统分析和设计的工作。

四、 跨平台性

Java和PHP都有很好的跨平台的特性。几乎都可以在不作任何修改的情况下运行在Linux或者Windows等不同的操作系统上。

五、 开发成本比较

PHP最经典的组合就是:PHP + MySQL + Apache。非常适合开发中小型的web应用,开发的速度比较快。而且所有的软件都是开源免费的,可以减少投入。

Java的web应用服务器有免费Tomcat、JBoss等,如果需要更好的商业化的服务有:Web Sphere和 Web logic。

六、 分布式多层架构比较

PHP只能实现简单的分布式两层或三层的架构,而JAVA在这方面就比较强大,可以实现多层的网络架构。数据库层(持久化层)、应用(业务)逻辑层、表示逻辑层彼此分开,而且现在不同的层都已经有一些成熟的开发框架的支持。例如Struts就是利用java的web开发技术实现了MVC的设计模式,而在业务逻辑层也有Spring框架,数据库持久化层有Hibernate等框架。这些框架可以方便开发者高效、合理、科学得架构多层的商业应用。

下面简要的说一下Struts,它实质上是在JSP Model2的基础上实现的一个MVC(Model、View、Controler)框架。JSP Model2体系结构是一种联合使用JSP 与Servlet 来提供动态内容的方法。在Struts框架中,模型由实现业务逻辑的JavaBean或EJB组件构成,控制器由Servlet实现的,视图由一组JSP文件组成。采用Struts可以明确角色的定义和开发者与网页设计者的分工。而且项目越复杂,其优势越明显。

七、 源代码安全

PHP开发的程序的源代码都是公开的,他人拿到php开发的程序后都可以进行修改。

Java开发的程序,最后用户拿到的是只是一些编译好的class类,无法看到完整的源代码,安全性高。

八、性能比较

有人做过试验,对这两种种语言分别做回圈性能测试及存取Oracle数据库测试。

在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了20000*20000的回圈。而PHP测试的是2000*2000循环(少一个数量级),却分别用了63秒。

数据库测试中,二者分别对 Oracle 8 进行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒。

php Java

可复用性 低 高

开发速度 快 慢

易维护性 差 优

可移植性 优-Linux、Windows、Unix等

安全性 低 高

开发费用 低 高

多层架构 差 优

数据库访问 接口不统一 接口统一

可扩展性 差 优

面向对象 差 优

综上所述,我个人认为,PHP适合于快速开发,中小型应用系统,开发成本低,能够对变动的需求作出快速的反应。而Java适合于开发大型的应用系统,应用的前景比较广阔,系统易维护、可复用性较好。还有,同样功能的系统用Java开发的系统要比PHP开发的系统的价格要高.

归属感 2017-09-28 10 楼

数据库访问
java通过JDBC访问数据库,通过不同数据库产商提供的驱动访问数据库,接口比较统一。
php对于不同的数据库采用不同的数据库访问接口,这部分代码通用性不强。

跨平台
java和php都具备很好的跨平台特性。

安全性
php的源代码是公开的,可以任意进行修改。
java的程序都已经编译成了class文件,无法看到完整的源代码,安全性较高。

因此,php适合快速开发中小型应用系统,开发成本低,能够对变动的需求作出快速的反应。而java适合于开发大型的应用系统,应用的前景比较广阔,系统易维护、可复用性较好。

清晨说ぺ晚安 2017-09-25 9 楼

我从JSP和PHP的底层运作、框架扩展两个方面来谈谈两者的优劣。

1.底层运作:PHP使用两层、JSP使用三层来处理用户的请求和回显。
PHP的两层:Web服务器软件(Apache、Nginx)->PHP Zend解析器解释脚本并回显。
JSP的三层:Web服务器软件(Apache、Nginx)->容器->Java虚拟机解析Servlet并回显。
"容器"是JSP中的一个重要概念,容器可以控制servlet的生命周期(实例化和回收servlet);支持多线程调用servlet并处理线程销毁;使用XML配置安全性,不用写死在servlet里,不用重新编译;把JSP代码翻译为Java代码。
PHP少了这个中间层,像多线程、安全性自然不如JSP。但PHP可以采用Opcode技术把脚本解析的结果缓到内存(比如使用APC、eAccelerator、XCache),省略了由PHP脚本到Opcode解析过程。这样速度当然比“把JSP代码翻译为Java代码”再由Java虚拟机解释执行快。不过对于动态确定的内容无法使用Opcode缓存技术。

2.框架扩展:
PHP提供扩展,方便与其它语言相互调用(如C),也有成熟的PECL扩展可用。
JSP支持多框架,如1)使用Hibernate做数据持久连接,这也是JSP操作数据库比PHP快好多倍的原因,其次JSP与DB的接口操作也方便。2)使用Spring调用JavaBean处理业务逻辑。且JSP有Java做后盾,可以调用很多J2EE成熟的库(如EJB),而PHP是做不到的。

另外"PHP开发的人已习惯用由JAVA发扬光大的一些优点",PHP是面向过程的,所以开发快。而JSP有Java提供的诸多类库,是面向对象的,所以功能强,但开发慢。之前公司做大型XXX系统服务器网站,使用的是JSP+ Oracle数据库。淘宝网也使用的也是相同的架构。

想挽留 2017-08-26 8 楼

java常常用来做企业级应用,处理比较复杂的业务逻辑。java平台由三大部分组成J2SE,J2ME,J2EE,其中J2SE用来做桌面小程序,相对其它语言来说,已经没什么优势了;J2ME用来做手机开发,可以实现跨平台的手机程序,J2EE用来做专业级的企业级应用,很多银行的OA系统都是用JAVA开发的;再来说说PHP,没有多少这方面的经验,只知道很多网站都是php的,开发成本低,周期短,但毕竟是一种脚本语言,不适合做复杂的后台逻辑处理,做前台展示还是很给力的。

夜无邪 2017-08-16 7 楼

这样从几个方面来看:
一、运行机制:
Java代码被编译成字节码后,会在虚拟机里由JIT进行二次编译成为本地码,据传言其执行速度可以和C++相媲美,经过我自己测试,用Java实现一个简单的Memcache协议的缓存服务器,在Java 1.6下运行,和memcache本身相比,同样数据量的存取时间比大概是3:2,虽然有差距,但是比想象的要好很多。Java 1.7在JIT方面做了大量的改进,性能比Java 1.6还要好。
PHP是直接对文本代码进行解释执行,即便有opcode缓存技术,仍然有不可逾越的性能鸿沟。PHP的opcode类似于java的class字节码,仍是解释执行。
二、处理并发:
Java在并发处理上采取单进程多线程的方式,web应用会随着web server的启动而启动,而来自web 浏览器的请求将被分配给线程池内的闲置线程处理,也就是说当有请求到达的时候,进程是准备好的,线程是准备好的,Java要做的仅仅是业务逻辑处理了。
PHP在并发处理上时采取多进程的方式,在web server里没有物理的web应用概念,每个请求都相当于一个独立的应用,而进程也随着请求的到达才启动,而随着请求的结束而消亡。在Fast CGI环境下,有类似于线程池的进程池技术,对性能提高有很大的帮助。然而一方面web server和Fast cgi通讯仍需要通过socket,多出了一定的IO损耗,另一方面进程池内的进程间也很难进行通讯,所以在并发处理上仍然无法和Java相比。
三、数据库应用:
Java可以采用数据库连接池技术,节省下数据库连接过程带来的时间损失。
PHP没有这个好处,原因来自上面的第二条。
在数据库接口上java有JDBC,PHP有PDO,这两个很类似。然而Java有非常多的ORM技术框架(如Hibernate)使数据库操作变得异常简单,而PHP的运行方式决定了它是ORM的禁区(当然也可以做ORM,只是做到什么程度是由你对ORM带来的性能损耗的忍受程度决定的)。
四、缓存技术
Java是单进程,很多缓存可以直接在Java的heap中做,而无需借助外在的工具,当然也有很好的缓存框架,比如Ehcache,因为没有网络IO,所以性能非常高。
PHP多进程单线程决定了它只能借助外来的缓存服务器,比如Memcache.
五、热部署
Java的热部署能力很弱,如果希望修个BUG而不停服是很难做到的。
PHP天然热部署。
六、开发成本
一个好Java程序员所需的知识储备更多,开发、调试所需的周期较长,好点的web server也都是收费的。
PHP免费、web server也免费。
七、安全性
这个要看你怎么来定义安全性,如果是代码安全,java class反编译很容易,这点上来说两者差不多。
Java有安全配置机制可保证一些“非法操作”无法执行,这点上来说PHP较弱。
然而Java很容易因为一个BUG导致整个应用宕掉,PHP就安全的多。

其实要说起来Java的好处多多,然而仅仅最后三条就可以让决策者取PHP而弃Java.

晚风撩人 2017-08-13 6 楼

我的感觉是用PHP开发的人已习惯用由JAVA发扬光大的一些优点,例如:
1.面向对象
2.MVC
3.设计模式
4.WEB SERVICE(SOAP)
5.等

如果说仅仅是网站开发方面,现在PHP比JSP/SERVLET开发高效多了。

瑾兮 2017-08-06 5 楼

这两种语言使用的场景不是很一样,php一般用来做内容管理系统、论坛(以上两项代表是康盛的产品)、博客(facebook)、社交(微博)。
java一般用做企业级的开发,这种开发的重点适应业务需求的变动性,而且业务的复杂度也比较高。如果性能要求高的,也是要首选java。
facebook、百度、新浪的访问量也很大,但是他们仅仅将php作为页面展示层。facebook使用了多种语言(php,c/c++,java,erlang等),他们的php直接编译成c++运行,php和各个语言之间使用shift框架进行通信。同时facebook使用大量的nosql。
新浪微博的php,估计也是使用他们自己的引擎,新浪有ACE,估计底层有一些C的扩展。同时他们还有自己的KVDB,来处理大数据。
百度底层的搜索算法层应该是C写的,牵扯到数据库处理层,估计是java或者c写的。
所以说如果使用php处理大数据的话,一般是大公司用,这时候php就退化为一个界面展示层。
java处理大数据,依靠他先天的优势,可以方便的使用连接池等技术,又有soa等成熟技术处理分布式的业务需求。这方便国内的代表肯定是淘宝、阿里巴巴。

浮生未歇 2017-07-14 4 楼

PHP的主要语言开发者之一、Zend公司的创始人之一Andi Gutmans在blog中直言不讳地批评了Java语言。他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java已经输掉了Web开发语言的战争,PHP是事实上的标准和胜利者。
PHP是一种解释执行的脚本语言,语法和C语言类似,易学易用,不懂电脑的非专业人员稍经学习也能使用 PHP.而Java要先编译成Class文件,然后在Java虚拟机上执行,Java开发需要熟悉Java语法以及一些核心的架构,从而实现一种可复用的、跨平台的软件,Java比PHP要难学的多。
在国际上LAMP(Linux+Apache+Mysql+Php)架构已经占领了统治地位,而且php做的cms有很多风行的产品。
如果做网站的话,建议使用php吧

瑾兮 2017-06-25 3 楼

从安全角度来讲个人觉得PHP要比JAVA逊色不少。
PHP作为一门弱类语言,对于能熟练操纵它的人来说那可能是一把宝剑,但是对于很多不精通它的人而言那就是一个悲剧,其实PHP程序所存在的重大弱点并不是PHP语言本身的问题,而是编程者本身对PHP掌握部熟练或者安全意识不高而导致的,简单的像用户输入表单问题,复杂点的PHP文件权限问题,稍不留神就会吃大亏,PHP的弱类型给编程者的忠告应该是“你必须明白你做了什么”,不要看两句话只有一个“了”字之差,但他关注点却变了180°。
而JAVA尽管也有诸多不良,例如运行速度慢,众所周知,Java程序的运行依赖于Java虚拟机等,但从安全角度来说JAVA作为强类语言本身安全系数就比较高,像JAVA编译器,它会对代码进行检查,以确定每一次赋值,每一次方法的调用是符合类型的。如果有任何不相符合的情况,JAVA编译器就会给出错误。

清晨说ぺ晚安 2017-06-21 2 楼

无语了 啥都不懂的别在这说这些

晚风撩人 2017-06-21 1 楼

看到大家说了怎么多,
都是技术方面的
个人认为技术方面的相互之间缺陷都可以通过很多机制去弥补
语言的使用流行度和网站的开发成本有很大的关系

我们没有选择去用java开发一个博客系统
也没有选用php去开发一个银行的出纳系统

根本决定因素就是有钱的要安全性搞的用java,
没钱的要求快速的那就用php
大致趋势吧!