回复讨论(解决方案) 没有什么不同
没有什么不同
为什么有的企业偏偏选择java作网站后台呢?
各人喜好,再说 java 可以不给源码
各人喜好,再说 java 可以不给源码
java像c语言一样,非脚本语言?
除了这个,还有什么区别啊?
安全....
安全....
知道一个可执行文件的源代码,并不是很难的事啊?
安全....
你所说的安全是指哪方面的安全?
没有用java写过后台 mark
java做得事情会多一点(成本高),php相对少一点(成本低)。
如果你的网站后台要求不高可以使用php
安全....
你所说的安全是指哪方面的安全?
直接 复制粘贴 好了
这样从几个方面来看:
一、运行机制:
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.
直接 复制粘贴 好了
这样从几个方面来看:
一、运行机制:
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.
学习了!
怪不得说淘宝都用java写的后台