JAVA和PHP的区别
-
JAVA支持JIT(即时编译)机制,而PHP支持opcache机制(PHP8后也支持JIT机制);
JIT: 当某段代码即将第一次被执行时进行编译,因而叫“即时编译”;详见
opcache:通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能,存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。 -
Java核心运行时类库(jdk/jre/lib/rt.jar,大于60MB)用Java编写,而PHP的库函数用C实现的;
Java应用运行的时候,用户编写的代码以及引用的类库和框架都要在JVM上解释执行。 Java的HotSpot机制,直到有方法被执行10000次才会触发JIT编译,在此之前运行在解释模式下,以避免出现JIT编译花费的时间比方法解释执行消耗的时间还要多的情况。 -
Java Web需要使用JSP容器如Tomcat或第三方模板引擎,而PHP内置模板引擎,自身就是模板语言。
-
Java和PHP都可以运行在多线程模式下;
PHP-FPM进程管理和并发实现不需要PHP开发者关心,但Java多线程编程是需要Java开发者编码参与的。不管是多进程还是多线程的PHP Web运行模式,都不需要PHP开发者关心和控制,也就是说PHP开发者不需要写代码参与进程和线程的管理,这些都由PHP-FPM/HHVM/Apache实现。PHP一个worker进程崩溃,master进程会自动新建一个新的worker进程,并不会导致PHP服务崩溃。而Java多线程编程稍有不慎(比如没有捕获异常)就会导致JVM崩溃退出,对于PHP-FPM和Apache MOD_PHP来说,服务进程常驻内存,但一次请求释放一次资源,这种内存释放非常彻底.。PHP基于引用计数的GC甚至都还没发挥作用程序就已经结束了。