这里的标题写的是谈谈PHP和JAVA的区别,其实是委婉的说法,其实别人是想听PHP好还是JAVA好!!! 从而从中找到存在感!!!

  因为由于我是从多年的php开发转到java开发的。所以最,不时的有好几个同事问我,你觉得java好还是php好。我每次的回答都是,各有千秋吧,各有各的好处,这是最实际的答案。

  然后临了,去想想到底都有什么差别。今天我就来仔细总结下,php与java到底有啥差别吧。

    1. php即写即用的。

       也就是说每次只有一改动完成,用户立马看到效果,而java则慢多了,代码改动完成后,要重新编译,然后重启jvm,中间耗费的时间可是不少啊,而且重启jvm过程可是会造成用户响应中断的哦。

    2. php写东西快。

      php可以说是非常敏捷的,一个需求给到,只要不考虑后期的性能和用户量问题,那是相当快速的,甚至你都可以不用框架,直接写也会非常快的,写一个增删改查功能,可能也就30-50行代码就搞定了。而java就慢多了,首先要想一下用什么框架,目前基本上就是spring了,然后就是配置各种数据库,过滤器,servlet,决定是用mybatis还是hibernate,然后考虑代码之间的传递,然后考虑事务。。。 然后不停调试,一改代码可能就是几分钟的等待时间,可想而知。

    3. php的表面思路更清晰。

      什么是表面思路,就是你看到的东西就是真正做出来的东西,比如echo "hello world",就是输出hello world,而java则不同,你可能是写response中,可能是写在modelattribute中,也可能就是return了该字符串,然后不知道怎么的,它就显示到页面上了。

    4. php占用内存少。

      php是进程式处理问题的,占用内存相当少,可以说,你在一台机器部署50个项目没有任何问题,只要访问量不上来,搞得定。而java就不行了,java每启动一个项目,本身就得耗尽许多内存,比如在一台8g内存的机器上,一般跑上2个项目就差不多了。

    5. 说了这php的好处,难道java就没有好处吗?那是不可能的。

    6. java组件多。

      我个人觉得单是这一点就盖过其他所有优点了,因为组件多,意味着用的人多,群众的眼睛是雪亮的。所以,java一定是好的,它已经积淀了太多的东西,不是一门新型语言能够随便替代的。你想要做什么,好好搜索java组件,可能都有你需要的功能,特别对于当下最流行的大数据产业,java更是占据一方。而php在这种场景就有点无能为力了。

    7. java线程池,连接池,异步化方便。

      其实这一点和第一点也很相似,也是因为组件多,所以要使用线程池连接池都很方便,这对于高并发高性能的场景来说,是绝对必要的。因为java的运行原因就是多线程的,所以不用每次都去初始化很多基本的东西,这省去了太多的时间,也因此大家可以忍受jvm启动的缓慢过程,因为只有一次。而php则是多进程的,每次都需要重新加载所有需要的代码,也因此无法将一些常用数据保存在内存,连接池也不大好做,异步操作更是一个大短板。

    8. java是真正意义上的逻辑清晰。

      因为,java中,你可以从一个进入可以借助IDE工具分析到最深层次的逻辑操作,对于每个字段,都可以清晰明了,这其实是接口和完全对象的一个使用优点。而php则做不了或者说很少有人费那劲去做这种事情,php可以说是半面向对象半面向过程开发,所以,在调用过程中插入几个自定义的函数调用是很正常的,那么你再想通过简单的IDE去分析调用链就不那么容易了。比如,对于第三方提供的接口,php就很难清楚的看出接口返回了什么,除非你把它打印出来,但是打印出来也不一定对,因为有些返回值的数据不一定有体现。这对于理解代码来说,增加了一个大大的门坎。

    9. 虽说java编译比较烦,但是可以为你提前发现错误。

      java的编译的确比较耗时,但是如果有明显的错误,编译是不会通过的,这就给你一个重新检查代码的机会。而php则不会,不管你写得多烂,都不会给你提示什么,而许多时候,往往就因为少写了个;分号,导致你排查数小时。

    10. java远程调用方便,rmi,hessian,dubbo。

      不管怎么样,远程和本地调用都很方便的知道相关的信息,而且java的同语言调用不是采用纯粹的http调用,而且维护一定的连接,从而大大提高性能。而php也有远程调用,但是相对来说就弱许多了。

  其实没有问题是没有绝对的好坏的,存在即合理。只是应用场景不一样罢了。

我来谈谈PHP和JAVA的区别的更多相关文章

  1. 我来谈谈PHP和JAVA在web开发上的的区别

    这里的标题写的是谈谈PHP和JAVA的区别,其实是委婉的说法,其实别人是想听PHP好还是JAVA好!!! 从而从中找到存在感!!! 因为由于我是从多年的php开发转到java开发的.所以最,不时的有好 ...

  2. java版本区别

    java版本区别 点我,点我,Eclipse几个版本号的区别(part1) 点我,点我,Eclipse几个版本号的区别(part2) 点我,点我,Eclipse几个版本号的区别(part3)

  3. JavaScript与Java的区别

    关于java和javascript的关系,我曾在一个论坛上看过这样一句话,java和javascript的关系,就好比雷锋和雷峰塔的关系,实在是经典! 因为名字的关系,总是有人误以为Javascrip ...

  4. 谈谈我对Java中CallBack的理解

    谈谈我对Java中CallBack的理解 http://www.cnblogs.com/codingmyworld/archive/2011/07/22/2113514.html CallBack是回 ...

  5. 谈谈你对 Java 平台的理解

    声明 本篇所涉及的提问,正文的知识点,全都来自于杨晓峰的<Java核心技术36讲>,当然,我并不会全文照搬过来,毕竟这是付费的课程,应该会涉及到侵权之类的问题. 所以,本篇正文中的知识点, ...

  6. [转载][Groovy] Groovy与Java的区别(一)

    原文地址:[Groovy] Groovy与Java的区别(一)作者:langyizhao 因为Groovy可以用Java的所有功能(虽然JVM不同的时候可能会比较麻烦,比如在Android上),所以G ...

  7. php和java的区别

    php和java的区别 前几天有个大学的同学给我来电话,他是在培训java的,然后我们就讨论了一下关于php和java的优劣区别(我们的是初学者,所以下面发表的内容可能不会很精准到位,望体谅): 我们 ...

  8. java面试题(杨晓峰)---第一讲谈谈你对java平台的理解

    本人总结: 面向对象(封装,继承,多态) 平台无关性(jvm运行,class文件) 语言(泛型,lambda) 类库(集合,并发,网络,io/nio) jre(java运行环境,JVM,类库) JDK ...

  9. 谈谈你对java平台的理解?

    问题:谈谈你对java平台的理解?java是解释执行,这句话对吗? 典型回答:java本身是一种面向对象的语言,具有很好的跨平台的能力,能够做到“write once ,run anywhere”.另 ...

随机推荐

  1. iOS 滑动页面标题切换颜色渐变效果

    话不多说,直接上图,要实现类似如下效果. 这个效果非常常见,这里着重讲讲核心功能 封装顶部的PageTitleView 封装构造函数 封装构造函数,让别人在创建对象时,就传入其实需要显示的内容 fra ...

  2. Activity栈与任务管理探究1——栈与任务的概述

    Activity栈与任务管理探究1--栈与任务的概述 内容概览 1. 前言 2. Activity中的Stack 3. Activity中的Task 4. Activity栈与任务管理基本原则 1. ...

  3. JavaScript高级内容:原型链、继承、执行上下文、作用域链、闭包

    了解这些问题,我先一步步来看,先从基础说起,然后引出这些概念. 本文只用实例验证结果,并做简要说明,给大家增加些印象,因为单独一项拿出来都需要大篇幅讲解. 1.值类型 & 引用类型 funct ...

  4. ios 获取当前设备信息、内存

    //在[UIDevice currentDevice]中的属性 @property(nonatomic,readonly,strong) NSString *name; // e.g. "M ...

  5. Spring+SpringMVC+MyBatis+easyUI整合优化篇(十)数据层优化-整合druid

    druid介绍 这是druid对自己的介绍: Druid是阿里开源的一个数据库连接池技术,号称自己是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.B ...

  6. [JavaWeb]SpringSecurity-OAuth2.0 统一认证、资源分离的配置,用于分布式架构、模块化开发的认证体系

    前言 关于 OAuth2.0的认证体系,翻阅了好多资料,RCF 文档太多,看了一半就看不下去了,毕竟全英文的文档看起来,是有一点让我烦躁,但也对 OAuth2.0的认证流程有了一个基本的概念,之前用 ...

  7. C#网络程序设计(1)网络编程常识与C#常用特性

        网络程序设计能够帮我们了解联网应用的底层通信原理!     (1)网络编程常识: 1)什么是网络编程 只有主要实现进程(线程)相互通信和基本的网络应用原理性(协议)功能的程序,才能算是真正的网 ...

  8. 篇4 安卓app自动化测试-Appium API进阶

    篇4                 安卓app自动化测试-Appium API进阶 --lamecho辣么丑 1.1概要 大家好! 我是lamecho(辣么丑),今天是<安卓app自动化测试& ...

  9. 1. Skippr

    Skippr 是一个超级简单的 jQuery 幻灯片插件.只是包括你的网页中引入 jquery.skippr.css 和 jquery.skippr.js 文件就能使用了.Skippr 能够自适应窗口 ...

  10. SSH框架搭建 详细图文教程

    转载请标明原文地址 一.什么是SSH? SSH是JavaEE中三种框架(Struts+Spring+Hibernate)的集成框架,是目前比较流行的一种Java Web开源框架. SSH主要用于Jav ...