热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java与php做web开发最大的区别在那为什么好多用java的

java与php做web开发最大的区别在那为什么好多用java的
java与php做web开发 最大的区别在那 为什么好多用java的

回复内容:

java与php做web开发 最大的区别在那 为什么好多用java的

感觉用PHP做web开发的后台的更多,segmentfault应该就是php的后台,Java做web后台性能更好些,每秒支持的request多些,但java开发周期长,迭代慢,但对于中小的website,性能从来不是关键,PV在没达到几千万、上亿的情况下,如何靠一个小的团队迅速迭代产品才最关键。而且做web后台,性能瓶颈往往在DB。Twitter之前是Ruby开发的,后来因为每天数据太大了,才改成Java了(其实应该是Java+Scala+Clojure)。 对于大部分互联网公司来说,能否快速的迭代产品才是企业生存的核心之道, 而且大多数是混合各种语言的后台,没有说单纯的是PHP或是Java.
从技术上来讲,LAMP(Linux+Apache+MySql+PHP)基本上是互联网的标配,基于PHP的framwork明显更多些。
用PHP的公司: N多中小站点,大点的如Baidu, QQ, facebook,当然,这些公司也用Java
用Java的: ebay, 阿里, Twitter

PHP做的Web应用性能就比Java差吗? 就拿查询MySQL获取结果集并在页面上显示数据为例来分析. HTTP请求由C级别的程序比如Apache/Nginx处理(Java的HTTP服务用的是Java开发的Tomcat等), PHP则调用内置在PHP引擎的C开发的数据库驱动mysqlnd(Java用的是Java开发的JDBC驱动)来操作MySQL, 查询的逻辑这个重点都落在了C/C++开发的MySQL身上, 然后就是把返回结果集放到PHP数组, 经过字符串处理后在页面输出, 这些逻辑并不复杂, PHP负荷并不大. 值得注意的是, PHP内置的大量库函数全部使用C实现, 而Java的核心运行时类库rt.jar则是使用Java实现.

在一些CLI下的压力测试中,因为存在大量的循环,很容易就触发Java的JIT热点编译,这时Java的计算性能上升到C的级别,这样的测试结果只能说Java在计算上的性能碾压动态解释型弱类型的PHP,而不是在Web上.对比具有JIT的机制的HHVM和PHP7的性能也能说明这个问题,在bench.php这个计算脚本的压力测试中,HHVM还是要比PHP7快1到2倍,但在WordPress等真实Web应用的测试中,HHVM和PHP7两者的性能相近.

PHP的运行模式要比Java健壮稳定得多,比如PHP-FPM是经典的多进程prefork模式,主进程会维持指定数量的工作进程数,可以设置工作进程在处理多少个请求后自动重启.反观Java多线程的Tomcat,除了内存膨胀,代码稍有不慎,就有可能让Tomcat崩溃退出,抛出一大堆的错误信息.

PHP开启ZendOpcache后,可以把脚本生成的opcode缓存到内存形成opcache供下次请求直接在ZendVM上执行,能带来一定的性能提升.

PHP进程(PHP-FPM,Apache)可以和MySQL/Memcached/Redis建立持久连接,一个PHP进程保持一个MySQL持久连接,省去每次请求都建立连接的开销.但需要注意PHP进程数不要超过MySQL最大连接数这一点,超时或重启MySQL后PHP-FPM在代码mysqli_connect时会自动重连,但会返回"MySQL server has gone away"的Warning信息,可以用@抑制错误输出.

PHP的热部署特性大大方便了开发和运维,这点是Java等其他语言(包括RoR/Python/Node.JS)所不能媲美的.

我是PHPer,也自学过一下JAVA WEB,觉得JAVA很复杂,而PHP实现起来却很简单。我不评价JAVA和PHP谁好,两种都是很好的语言,但PHP在WEB上的确有不少优势。

  1. PHP不需要编译,易于调试
    这是动态语言非常巨大的优点,WEB项目的改动实在太多,编译会浪费很多时间,这使得JAVA难以快速迭代。而现在互联网的发展又非常快,快速迭代的需求是必须的。

  2. PHP有丰富又成熟的框架
    YII, CAKEPHP, Zend Framework, ThinkPHP, CI等都是易于使用又久经磨练的框架。JAVA的WEB框架很成熟,但真正易于使用的很少。这给不少WEB初学者不少门槛,让JAVA程序员的精力更集中于所谓的后台开发,但现在WEB开发人员更偏向全能型,PHPer也由于PHP很简单,他们往往有精力去学习并深化CSS、 JS甚至是LINUX的技术。所以资深点的PHPer可能除了不会做画,什么都能做。

  3. PHP现成开源产品多
    PHP只专注于WEB领域,PHP的产品就是WEB的产品。而PHP又易于使用,所以促进它更易于交流。像主流的BLOG系统workpress,很多做个性BLOG的博主为了可以扩展自己的BLOG也会学一点PHP。我是基于drupal做开发的,对PHP的开源社会情况也有所了解,在大多数情况下,PHP开源项目已经可以满足绝大部分的要求,轮子都有别人做好了,只是学会使用这些开源已经足够你在WEB领域上立足。你甚至有更多时间去泡妹子。

  4. PHP非常易于部署
    PHP无论在LINUX, MAC还是WINDOWS下都很容易部署,LINUX下甚至可能默认有LAMP可以直接使用,这个是其它语言难以超越的。是否易于部署对于初学者很重要,每个初学者都希望可以快速实现自己的Hello World,这会对以后的学习过程增加信心。JAVA初学者总是有比较多的拙败感。

至于题主说用JAVA的多,的确是这样,大学教育也更偏向于JAVA,PHP很少在大学里开课,所以会JAVA比PHP多并不奇怪。 但在WEB领域上PHP的确是很好的解决方案,企业用JAVA实现WEB项目我觉得可能有两个原因:一是JAVA比PHP更好招人,二是他们已经存在一个JAVA成熟的WEB解决方案,就没有理由去重构使用PHP的方案。

我一直做 Java,学 PHP 头一天,教程里头教我写一个访问计数器,结果竟然要把访问次数写文件里头。。。这有必要吗。。。放内存不行吗。。。我就去找,硬是没找到,敢情这俩思维方式完全不一样。。。

在做Web开发的时候,一般都要求要快,快速的上线,快速的迭代。然后慢慢再趋向一个稳定状态去发展,说到快,不得不承认用PHP来开发能节约不少时间,这也是刚开始一些创业公司或者一些初创项目选择PHP的很大一部分原因。
你可能要问的是PHP和JAVA在Web开发上都有哪些优缺点,下面我回答的却不是这些,但却是决定开发语言很重要的一个因素。
在开发之前语言的选择,还常常忽略一个很重要的问题。有时候我们以一个程序员的身份很难考虑到一些客观因素,这需要有经验的技术管理者来决定。在定一个项目用哪种语言开发的时候,必须要考虑到团队成员对这门语言的熟悉程度,还有你所在的城市,以及业务自身等等。
假如你的团队都是一群JAVA大牛,那么你还会要求他们去用PHP来做开发吗?
假如你的团队成员对JAVA和PHP都很了解,那你要考虑在后期人才补充上面。你所处的城市是怎样的环境,要调查这个人才市场中哪门语言的使用者相对较多。(想象一下在小城市用较新一点的语言做开发如Go,那招不来人的样子。)
今年最新的调查结果显示:在北上广深这些城市,JAVA是职位多人多,而PHP是职位多人少。
等等:-)

总的说,java语言本身规范性要优于PHP, 而且java还有一个“容器”的概念,php则不存在。
但是规范性优就意味着相比PHP要死板,
单单从开发角度,java 开发每项功能可能会走 entity->dao->service->action 这一个流程
php 是一种动态语言,最偷懒的时候 一个Model类和一个Dao类可以兼容所有数据表的映射不需要重复去写
所以 单说开发效率上 并不是一个级别的
动态语言有一些特新在快速开发上 是java这类编译语言无法望其项背的

首先,我是动态语言的支持者,当然项目中用什么语言主要还是看老大们熟悉哪个,踩过的坑哪个多,能够快速解决问题。

区别

区别,一个静态语言,一个动态语言,区别就是动态语言的生产效率高于静态语言,静态语言可以在编译期避免一些低级错误。

生产效率高的例子,
动态语言通过反射等黑魔法,可以快速实现一些静态语言只能靠编译器级别的底层修改才能实现的特性(比如AOP、IOC、DI),一个动态语言开发者只要了解那个新特性是做什么的就可以快速的实现它,而不需要进行底层修改,所以动态语言框架特别多,新特性层出不穷,Ruby on Rails就是例子。

静态语言编译期类型检查,
其实这个特点,对动态语言并没有什么吸引,在有了IDE等工具的支援,以及TDD开发方式的流行后,编译期类型检查就很鸡肋了。

为什么好多用java的

现实是PHP比Java用的多,开发和部署都比Java快很多

就个人来看,Java代码比PHP好维护。

解释型语言 编译型语言 的区别

用go好了,无论开发效率还是运行效率都要优于JAVA,并且和php一样好学,即便有坑,也不是出外语言本身

反正大型网站都是用Java的,更看重其性能和可维护性。

其实这个问题很简单,也不需要过多的数据对比啊什么的,只需要去招聘网站搜一下就知道啦,比如拉勾网,其实这两种技术都有很广的应用度。

推荐阅读
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • .htaccess文件 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
author-avatar
2012张小雷_812
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有