身边总是听到很多人在跟我说 Java 比 PHP 更好,也确实有很多大公司在使用 Java,例如淘宝、京东,而百度、360在使用 PHP,那么当我反问他们原因是什么的时候,他们总是含含糊糊,说不清楚,或者一言以蔽之,生态好。我想研究学问不能人云亦云,要自己搞清楚才好,所以查一查资料,总结一下

1. 框架。

PHP有各种框架:CakePHP、Yii、CI、……,但其实每种框架都还没有居于统治地位。

Java,据我现在的了解,只有两套框架,J2EE 重量级企业架构(EJB模式,有专门的应用服务器)和 J2EE 轻量级(原本是 SSH,现在演变为 SpringMVC,应用服务器有 Tomcat 等,但是功能较弱,还有 Goldfish 等,现在也有很多替代 Tomcat 的轻量级服务器)。

专业级的中间件有 WebSphere 由 IBM 推出、WebLogic 由 BEA 推出,都是很稳定,经过验证的大型企业级中间件,这好像都是收费版,对应的,有免费版的(需要考虑版权使用方式)对应物,能力弱一些。

2. 包管理。

Java 有官方认可的包管理。

PHP 有 PECL 和 PEAR。

这点算是基本打平。

3. 对于 J2EE 的了解。

参考:What is Java Platform, Enterprise Edition (Java EE)? - Definition from WhatIs.com。

J2EE (Java 2 Platform, Enterprise Edition) is a Java platform designed for the mainframe-scale computing typical of large enterprises. Sun Microsystems (together with industry partners such as IBM) designed J2EE to simplify application development in a thin clienttiered environment. J2EE simplifies application development and decreases the need for programming and programmer training by creating standardized, reusable modular components and by enabling the tier to handle many aspects of programming automatically.

也可以参考

https://zh.wikipedia.org/wiki/Java_EE,或者https://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition,但是明显,英文版的讲解的更加完整和细致(维基百科的中文版是中国人自己翻译的,为了应付中国人?)。

这样看来,正如之前所理解的,Java 后面有 Sun、IBM、BEA 这样的大公司在推进,有一套完善的生态环境,所以还是要比 PHP 背景深厚。

4. PHP 与 Java 的安全性讨论

参考:https://www.youtube.com/watch?v=B4klp5EKakk。

PHP 全局变量会引入漏洞。

PHP 编码不统一,函数参数顺序不统一等等。

PHP 对于跨站攻击和 SQL 注入的防范较弱。

PHP 是为了 Web Server 来设计的,更加开放和个性化一些;而 Java 是为了企业级应用设计的,更加安全,规矩更多。

PHP 是弱类型的,而 Java 是强类型的。

PHP 的类能力相对较弱,而 Java 从出生就是面向对象的。

PHP 的单元自测的实现不如 Java。

Java 有太多工具包来帮助开发。

PHP 成名框架的企业级设计范式都是参考 Java 的规范,例如过滤器、拦截器,在 CakePHP 上才有了体现,ORM 现在在 PHP 框架中才有了体现。

Java 的规范多,需要遵守的规矩多,但这也带来了足够的安全性。

这里总体感觉,Java 确实要比 PHP 更加安全,更规范的东西往往会更加安全。

5. 收费与开源

PHP 是开源的,PHP 下的各种框架也都是开源的。

JavaEE 有不开源的,也有开源的。

至于收不收费,其实是要看版权规则的,其实用作商业化,大多数是要交钱的。

6. 学习和开发成本

因为 Java 从出生就是针对企业级应用而来,又发展了这么多年,所以在这块逐步形成了很多的规则要去遵守,这势必会造成很大的学习成本,不过,一旦掌握了这些规则,开发效率是会很高的,很多功能,不需要自己再去发明制造轮子了。

Java与PHP之争相关推荐

  1. 讨论JAVA和QT之争

    这是两种以跨平台为特色的开发方式.Qt更多被认为是一种框架,但是Qt中有新增一些C++所没有的语法,所以也可以认为是一种编程语言.Java被认为是一种编程语言,但是很多人并不知道JAVA的编程语言其实 ...

  2. php与java安全之争

    很多人说java比php安全,其实这个说法很多人误解,其实安全在于程序的逻辑,代码的严谨,另外就是服务器设置的安全,关于java比php的安全一说,我不同意,java编译的话,现在可以反编译,另外开源 ...

  3. 鏖战九载,Google 是否会因 Oracle 而弃用 Java?

    倘若 Oracle 在 Java 侵权案中胜诉,那么软件开发将变天? 来源:nordicapis.com 在过往的九年间,Google 因旗下全球第一大操作系统 Android 中是否合理使用 Jav ...

  4. 深入理解OSGI:Java模块化之路

    Java可能是近20年来最成功的开发技术,因其具备通用性.高效性.平台移植性和安全性而成为不同硬件平台理想的开发工具.从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java技术 ...

  5. 与其争论java和.net的差别,还不如多想点用编程技术挣钱的方式

    最近,我发现在博客园和其它地方,有不少争论java和.net哪个好的文章,其实这是种好现象.虽然到了架构层面,技术是通用的,但兼听则明,而且技多不压身,多种挣钱的方式总不会错. 本人最近主攻Java, ...

  6. 我为什么反对语言之争?我的语言历险

      因为上一篇文章<误导程序员的喧嚣:评CSDN引导Java和Ruby之争>,引起了一些争论,我回了一些质疑,不过始终觉得没把问题讲清楚,因此再写一篇.   十几年前,我是从C++开始计算 ...

  7. [深入理解Java虚拟机]第一章 走进Java

    第一章 概述 世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的程. 1.1 概述 Java不仅仅是一门编程语言,还是一个由一系列计算机软件和规范形成的技术体系,这 个 ...

  8. 深入理解java虚拟机:JVM高级特性与最佳实践第一部分走近Java第1章走近Java

    世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程. 1.1 概述 Java不仅仅是一门编程语言,还是一个由一系列计算机软件和规范形成的技术体系,这个技术体系提供了 ...

  9. 操作系统的起源|开源运动的兴起

    周末的时间主要是看了两部片子,然后停下来进行了一些思考: 操作系统革命 https://www.bilibili.com/video/av9512574/ 书呆子的胜利1 https://www.bi ...

最新文章

  1. ABAP-AVL-OO方法中的ALV的如何自己添加按钮及其响应
  2. HTC G7 金卡 制作
  3. 51nod1347(简单逻辑)
  4. java多线程原子操作_Java 多线程 - 原子操作CAS
  5. linux为什么要禁止内核抢占,为什么linux在内核代码持有自旋锁后禁用内核抢占?...
  6. 用GDB调试程序(11)──查看运行时数据(2)-转
  7. 在运行 Red Hat 或 Cent OS 的虚拟机中扩展逻辑卷
  8. SSIS包的组建之连接管理器
  9. Linux 2.4.x 网络协议栈QoS模块(TC)的设计与实现
  10. php生成照片流图片,phpcmsv9设计照片流瀑布流等页面按比例等宽完美缩略图方案...
  11. redis下载配置并简单测试(免安装版)
  12. 利用函数wavread对语音信号进行采样_信号时间采样
  13. VS2019报本次安装Visual Studio 所用的安装程序不完整错误
  14. 仿知乎日报图文小程序模板
  15. 伊利诺伊香槟分校计算机科学,UIUC的CS「伊利诺伊大学香槟分校计算机科学系」...
  16. 本杰·格拉汉姆选股策略
  17. websocket ws + wss 通信
  18. python 去水印复杂问题
  19. 巧用 CSS3 filter(滤镜) 属性
  20. 离心机 TFN A17CH 微量高速冷冻离心机 17800r/min 触摸屏 轻型便捷微量高速

热门文章

  1. 6-8 使用函数求最大公约数 (10 分)
  2. 学Java可以不学算法吗-学java有必要学算法吗?
  3. 产品经理1.1_如何高效的开展产品需求评审会
  4. 广告投放平台DSP搭建:你需要了解的产品核心模块
  5. Qt Mtd调用方式
  6. 利用计算机 算法写文章,计算机算法论文
  7. database/sql
  8. kali_上传_腾讯云_搭建kali
  9. Android 10 添加 lunch
  10. 将正常表格数据转换为横版数据(js实现)