Java语言与PHP语言因为都可以做web应用开发,所以总有入门学习这2种语言的入门者会问Java和PHP哪一个好。讨论语言的好坏是一件不太明智的事情,我认为只能去说那一种编程语言更加适合干什么,人与动物最大的区别就是人会使用工具,而用适合的工具去干适合的事就会事半功倍,相反的就会事倍功半,就像杀鸡用牛刀,大炮打蚊子,听上去用的工具很牛逼,实际上在杀鸡和打蚊子这两件事情上牛刀、大炮真的还不如菜刀和电蚊拍好使。

应用面不同:

Java虽然目前被主要用作企业级应用编程,且多采用BS(浏览器对服务器)架构,但其可以说比较全能,桌面应用,嵌入式,移动端,服务器都可以用Java语言进行编程。

PHP是专注于动态网页技术。

语言类型不同:

Java是强类型编译语言,而强类型语言最显著的特征就是变量在使用前必须进行数据类型声明和赋值,而未经声明的变量是无法进行使用的。编译型语言因为经过编译器编译所以在执行效率上出色。

PHP是弱类型解释语言,其变量不用声明数据类型,且未经赋值可以直接使用。解释语言无需进行编译,因此在执行效率上要比编译语言差。

语法运算符有不同:

PHP中有“===”符号,表示的意思是检查左右两边类型及值是否相等,而Java中没有这个符号,和其作用相同的是equals方法,此方法是Java中的所有类的顶级父类object中的方法,要使用这个方法必须在使用这个方法的子类中对其进行覆盖重写,否则其作用于“==”符号相同。

在循环语句中PHP有foreach语句专门来进行数组的遍历,而Java中没有此语句,但有增强for,其作用与foreach基本相同。

面向对象支持不同:

Java是完全面向对象的语言,在编程上要求程序员必须面向对象进行编程。

PHP虽然也支持面向对象,但并不强制要求使用面向对象进行网页构架,使得PHP在网页编程中更加自由。

输出方式不同:

Java在输出上只有2种方式,一种是System.out.print()和System.out.println()语句,将信息打印到控制台上,前者是打印不换行,后者是打印并换行。另一种是通过API获得输出流将信息输出到文件、另一台电脑、或者是网页上。

PHP输出的信息都将输出在网页上,而且有多种输出语句。如echo、vardump、print等。

都有较好的跨平台性:

Java语言虽然是编译语言,但并不将源代码编译成特定平台上的机器码,而是编译为Java字节码文件,再由特定平台上的JVM(java虚拟机)运行,虽然比直接编译为机器码执行效率有所下降,但这种方案成功的实现了跨平台性与执行效率之间的平衡,而且随着目前硬件水平的不断提高,这种差距几乎可以忽略不计。

PHP是解释语言,它的运行是靠解释引擎来解释运行,解释引擎可以跨平台使用。但因为没有经过编译,因此每执行一次就需要解释一次,所有执行效率要比Java差。

总结:

这两种语言在制作动态网页方面各有所长,PHP制作网页成本较低,多适合资讯类网站及个人动态网站的搭建。

Java因其安全性,多线程,同步机制,跨平台执行效率多适合涉及数据安全及资金流转等方面的网站搭建,因此使用Java的多是一些大中型公司的企业级开发。

JAVA 与 PHP 的不同和相同的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

  10. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

随机推荐

  1. 【codeforces 604D】Moodular Arithmetic

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  2. TimeUnit用法

    TimeUnit是java.util.concurrent包下面的一个类,表示给定单元粒度的时间段 1.主要作用 时间颗粒度转换 延时 2.常用的颗粒度 TimeUnit.DAYS //天 TimeU ...

  3. ets学习

    http://diaocow.iteye.com/blog/1768647 http://www.cnblogs.com/me-sa/archive/2011/08/11/erlang0007.htm ...

  4. Wpf的布局舍入属性(可以解决软件字体模糊的问题)

    原文:Wpf的布局舍入属性(可以解决软件字体模糊的问题) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/HK_JY/article/details/ ...

  5. Oracle数据库表空间 数据文件 用户 以及表创建的SQL代码

    --create the tablespace CREATE SMALLFILE TABLESPACE "TABLE_CONTAINER" --创建表空间 DATAFILE 'E: ...

  6. 高性能分布式应用开发中间件ICE介绍

    作为一个技术人员,你是否在为不断增长的数据量和日益复杂的业务逻辑而头疼不已,杂乱堆砌在一起的庞大业务让系统越来越脆弱,于是你想到了网格,想到了利用分布式来重组一个健壮的系统架构. 随后,RMI,EJB ...

  7. linux 时间同步ntp

    配置前准备:关闭防火墙,配置好hosts,ssh免密登录 1.选定同步的标准,我是以hadoop002(设置为当前时间)作为同步标准,hadoop003(时间是2018年3月21,使用date -s进 ...

  8. 轻松掌握XMLHttpRequest对象

    XmlHttp是什么? 最通用的定义为:XmlHttp是一套可以在Javascript.VbScript.Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API.XmlHt ...

  9. LeetCode: Generate Parentheses [021]

    [称号] Given n pairs of parentheses, write a function to generate all combinations of well-formed pare ...

  10. windown下linux子系统的安装和卸载

    原文:windown下linux子系统的安装和卸载 安装 第一步  打开开发人员模式 第二步  勾选适用linux的window子系统 第三步  打开powershell 第四步  在PowerShe ...