Java和PHP的区别(含自己的理解)

考察点:Java特性

第一点:

Java:JIT运行时编译热点代码

PHP:具有opcache机制,能够把脚本对应的opcode缓存在内存,PHP7中还支持配置opcache.file_cache导出opcode到文件

相关名词解析:

JIT:(just-in-time compilation)狭义来说是当某段代码即将第一次被执行时进行编译,因而叫“即时编译”。在运行时优化热点代码  把Java字节码转化成机器码 。

OPCache缓存的机制:将编译好的操作码放入共享内存,提供给其他进程访问

第二点:

PHP的库函数:用C实现

Java核心运行时的类库(jdk/jre/lib/rt.jar,大于60MB):用Java编写(jdk/src.zip),

Java应用运行的时候,用户编写的代码以及引用的类库和框架都要在JVM上解释执行.对于 Java的HotSpot机制,直到有方法被执行10000次才会触发JIT编译, 在此之前运行在解释模式下,以避免出现JIT编译花费的时间比方法解释执行消耗的时间还要多的情况.

第三点:

PHP内置模板引擎,自身就是模板语言.

Java Web需要使用JSP容器如Tomcat或第三方模板引擎.

第四点:

PHP开发者不需要写代码参与进程和线程的管理

Java多线程编程需要Java开发者编码参与.

PHP也可以运行在多线程模式下,比如Apache的event MPM和Facebook的HHVM都是多线程架构.不管是多进程还是多线程的PHP Web运行模式,都不需要PHP开发者关心和控制,也就是说PHP开发者不需要写代码参与进程和线程的管理,这些都由PHP-FPM/HHVM/Apache实现.PHP-FPM进程管理和并发实现并不需要PHP开发者关心,而Java多线程编程需要Java开发者编码参与.

PHP一个worker进程崩溃,master进程会自动新建一个新的worker进程,并不会导致PHP服务崩溃.

而Java多线程编程稍有不慎(比如没有捕获异常)就会导致JVM崩溃退出.

对于PHP-FPM和Apache MOD_PHP来说,服务进程常驻内存,但一次请求释放一次资源,这种内存释放非常彻底. PHP基于引用计数的GC甚至都还没发挥作用程序就已经结束了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章