首页 后端开发 PHP问题 0基础学php还是java

0基础学php还是java

Oct 09, 2019 am 11:59 AM
java php

0基础学php还是java

PHP和Java的简单比较

现在市场上的电子商务软件基本上可归结为两大阵营,即PHP阵营和Java阵营。但对接触电子商务不久的用户来说,看到的往往只是它们的表相,只是明显的价格差异,却很难看出它们之间的实际差异。

其实,PHP MySQL高效的开发、品质优良的特性,已经让风靡大学校园的Java变的越来越难堪。而作为PHP MySQL为什么在历史的进程中,后来居上,独领风骚呢?为什么基于Java架构的的电子商务除了高额的开发成本,而变的前途暗淡呢?首先得明白PHP和Java之间的差异才行。

1、 出身

Java本来的设计初衷是为了家用消费电子产品开发一个分布式代码系统;PHP就是为了互联网的应用而生的。

2、系统的技术架构比较

分层是将系统进行有效组织的方式,分而治之的思想是计算机领域中非常重要的思想。在好的分层思想引导下,便能实现“高内聚、低耦合”,也能将具体的问题割裂开来,易于控制、易于延展,更易于分配资源。

从PHP5版本之后,PHP对于系统架构方面也有了质的飞跃。ShopNC采用PHP语言开发,可以完美的实现多层架构分布。运用MVC的设计模式,可使电子商务软件具有更加高效、合理的系统架构。使得系统在可拓展性、需求应变性上与Java编写的电子商务软件系统的毫不逊色。

Gutmans 在前年发表过一篇文章,其中也阐述了多核环境中多线程(JVM)与多进程(LAMP)的比较。其中就提到了多核系统非常适合LAMP架构的多进程方式。随着芯片业现在把主要精力都放在了多核而不是超线程技术上,JVM这样的多线程环境的优点在今天的硬件上将无法充分发挥。而多进程方式将提供更多稳定性和可靠性。这一回合,PHP旗开得胜。

3、数据库访问比较

PHP可编译成具有与许多数据库相连接的函数。 将自己编写外围的函数去间接存取数据库。通过这样的途径当更换使用的数据库时,可以轻松地修改编码以适应这样的变化。同时现在的PHP提供了数据库统一接口PDO,对Oracle,MySQL,SQL2000等不同数据库的访问都可以通过桥来完成,而不用考虑数据库接口方面问题。

同时为了更好支持 MYSQL数据库,PHP还推出了MySQLi的数据库连接,更加高效,安全。而Java是通过JDBC来访问数据库,通过不同的数据库厂商提供的数据库 驱动访问数据库。而没有特别的针对性优化。如果同样是将开发的web应用从MYSQL数据数转到ORACLE数据,PHP通过PDO的接口,几乎不用做程序方面的修改(ShopNC中已经通过自主研发的封装数据库层,已经可以很好的完成对多种数据库的支持,甚至无需通过PDO)。

而Java开发的需要一定的的更改才能实现。数据库访问方式的差异,奠定了PHP开发出的电子商务软件和Java开发出来的电子商务软件是2个时代的差距,Java是传统的一代,PHP却是新科技发展的成果,PHP不仅能够包容万物而且速度上稳步提升,效率比Java强悍的多。这一回合,Java稍逊风骚。

4、安全性对比

开源是安全的最大优势,LIUNX 就是一个非常成功的佐证。PHP的开发程序在别人拿到代码后,可以很容易的进行修改。而Java开发的程序由于无法看到完整的源代码,只能看到一些编译好的类文件.class,所以底层架构的诸多隐患都无法提前预知,一旦发生灾难性的错误,后果必将及其严重。

而PHP如果想要加密代码,也可以使用Zend 公司的权威产品zend guard 进行加密,以保证产品的知识产权。如果非要将PHP和Java在安全性上做个比较的话,只能说伯仲之间,如果出差距,也是由开发程序员的水平来决定的。这一回合,两者依旧平分秋色。

5、互联网应用方向上的前瞻性和拓展性

从整体来说,PHP适用于互联网应用,而Java语言设计之初,并不是以WEB为中心,而是以通用服务为中心。PHP能够将互联网的应用发挥到淋漓尽致,Java在通过标准的或者非标准的一些框架在迎合WEB应用的需求。

为什么说PHP适合互联网的应用呢?

首先,PHP对于大型系统负载方面,可以采用分布式部署。将数据库、应用逻辑层和表示逻辑层彼此分开,并将同层的根据流量分开。PHP在这个方面做的非常优异。

其次,PHP提供的数据库接口众多且还有统一的接口,要将多个不同的数据库数据统一,不需要花费很大的力气。而Java也可以通过Class和EJB 获得规模支持,通过EJB/CORBA以及众多厂商的ApplicationServer获得结构支持。而与即有老的Java或者.NET 应用程序通讯方面,PHP可以通过即有的API接口进行通讯。至于数据的通讯所使用的数据无非也都是XML,JSON等。

如果将PHP比作互联网中的最佳表现奖,具备独挡一方的能力。那么Java应该获得的是最没有创新奖,就如同欧洲中世纪武士,唯有沉重的框架,笨重的效率。难怪连当年的SUN也在其J2EE方案上支持了JRuby及Jython。而IBM Websphere意识到J2EE在WEB方面的不适应而开启了Project Zero项目。 结果呢? Project Zero 的首席架构师也是很无奈的公开承认“Java现在可以认为只是一种系统语言而不适合构建Web应用”。

其实Java已经在企业级E化和关键业务应用中根深叶茂,但是在Web应用上,Java语言市场份额急剧下降,颓势尽显。所以这一回合,Java输的哑口无言。

6、产品化程度

用Java做开发,几乎没有一个程序员会从底层写起,因为都是即有封装的类。这其实是导致Java很难产品化的一个重要原因。因为几乎所有的程序员可以做的都是比较浅层的应用开发。

而就Java的类而言,放到互联网上,那只有一个沉重可以形容。而唯一让Java一直宣称的跨平台的优越性,其实那也是对于初学程序者的一种宣传,对于资深程序员那就是一个笑话,一条鸡肋。经历了很多大项目的资深开发者都知道,开发伊始,程序需要跑在什么平台上,都是确定的了。 越是大型项目,越是确定的明确,而且轻易不会考虑平台的移植。即便需要在其他平台架设新服务,也是在新平台上进行增项的开发,与即有产品之间也可以通过 Webservice解决。而数据库是无所谓的。我想不会有人用ACCESS来做大型商业程序的开发吧!

随着大多数业务应用程序包括CRM、ERP、报表、文档管理等等也都转向了Web,放眼望去,PHP的产品,琳琅满目,在互联网应用方面,可以负责的说, 涵盖率在99%以上。虽然众多产品的质量也是参差不齐,但是每个方向及领域都是有那么一些代表产品的。能举出范例的有Wordpress, Drupal, mediaWiki, osCommerce, SugarCRM,Discuz, QeePHP,ShopNC等等。

产品化程度是直接佐证了工业化程度的一个重要数据。不能工业化的工具,其实其本身是有着非常大的悲哀的。这一回合,Java输的体无完肤。

7、开发及后续维护成本比较

既然PHP在互联网应用诸多方面都强于Java,那么Java开发出的电子商务产品何以与PHP产品竞争呢?这在于Java阵营普遍走的是政府路线, 而PHP阵营走的是全民路线。Java在互联网方面靠的是大学老师的言传身教,才得以在互联网世界狺狺狂啸,而PHP是靠得是自身品质而得民心,所以才一 路赞歌。

软件价格的高低很大程度上和自身成本和功能相挂钩。PHP的入门门槛较低,但是任何方面成为高手,都是万里挑一。绝大多数学过c的程序员都很容易转型为PHP程序员,这使得PHP程序员如同国球一样普及,同样更是高手如云,高质量的PHP软件产品也层出不穷。

服务器成本方面,PHP最经典的组合PHP MySQL Apache,Java也是经常与MySQL Tomcat、JBoss等软件配合。所有软件都是开源免费的,所以服务器端的投入都并不高。

而Java程序员的学习成本却是PHP成本的几倍,原因也很晴朗,本身Java就不是专门给WEB开发用的。所以,Java开发电子商务的成本要远远高于PHP开发出来的同类软件产品。但也正由于Java开发的成本较高,所以往往也是做一个同样的产品,达到同样的效果,Java需要付出比PHP开发多出N倍的时间及经济成本。直接的造成了巨大的时间及成本浪费。最后一回合,Java在WEB之战中,输的干干净净。

通过以上数据也可以让读者非常清楚的意识到,采购了Java类的电子商务商品,你将来后续的维护期带来多么昂贵的经济成本,及付出多少宝贵的时间。商机是稍纵即逝的,如果商业上的运作永远需要在等待漫长的技术实现后才可以施展,那恐怕真的是黄花菜都凉了。
不怕不识货,就怕货比货。PHP开发出来的产品应用普及,口碑良好,但是Java开发出来的产品,很难形成规模,直接导致产品化的少,项目类型的多。正因 为PHP开发的产品整体性能经历了万千使用者的检验与完善。Java与之相比则相去甚远,所以Java只有走政府路线,以价格落差来平衡采购方的心态,也就不足为奇了。

总结:

PHP才是的电子商务软件发展的最有力推动者,也将必然成为大势所趋,是不可逆转的,是不可被质疑的。作为程序员,无论PHP还是Java,高度这个问题上,其实对于我们而言都一样的。在这个高度上的战争其实是各大厂商之间的事情,和我们无关。但是例如WEB方面。我还是要为自己的阵营摇旗呐喊!

推荐教程:PHP视频教程

以上是0基础学php还是java的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

您如何在PHP中解析和处理HTML/XML? 您如何在PHP中解析和处理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

php程序在字符串中计数元音 php程序在字符串中计数元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

解释PHP中的晚期静态绑定(静态::)。 解释PHP中的晚期静态绑定(静态::)。 Apr 03, 2025 am 12:04 AM

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

突破或从Java 8流返回? 突破或从Java 8流返回? Feb 07, 2025 pm 12:09 PM

Java 8引入了Stream API,提供了一种强大且表达力丰富的处理数据集合的方式。然而,使用Stream时,一个常见问题是:如何从forEach操作中中断或返回? 传统循环允许提前中断或返回,但Stream的forEach方法并不直接支持这种方式。本文将解释原因,并探讨在Stream处理系统中实现提前终止的替代方法。 延伸阅读: Java Stream API改进 理解Stream forEach forEach方法是一个终端操作,它对Stream中的每个元素执行一个操作。它的设计意图是处

什么是PHP魔术方法(__ -construct,__destruct,__call,__get,__ set等)并提供用例? 什么是PHP魔术方法(__ -construct,__destruct,__call,__get,__ set等)并提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。

说明匹配表达式(PHP 8)及其与开关的不同。 说明匹配表达式(PHP 8)及其与开关的不同。 Apr 06, 2025 am 12:03 AM

在PHP8 中,match表达式是一种新的控制结构,用于根据表达式的值返回不同的结果。1)它类似于switch语句,但返回值而非执行语句块。2)match表达式使用严格比较(===),提升了安全性。3)它避免了switch语句中可能的break遗漏问题,增强了代码的简洁性和可读性。

什么是跨站点伪造(CSRF),您如何在PHP中实施CSRF保护? 什么是跨站点伪造(CSRF),您如何在PHP中实施CSRF保护? Apr 07, 2025 am 12:02 AM

在PHP中可以通过使用不可预测的令牌来有效防范CSRF攻击。具体方法包括:1.生成并在表单中嵌入CSRF令牌;2.在处理请求时验证令牌的有效性。

See all articles