[java,php分析贴,别说php好了自己看吧]

问题描述

各有利弊转自javaEye比较PHP和JSP这两个web开发技术,在目前的情况是其实是比较PHP和Java的Web开发。以下是我就几个主要方面进行的比较:  一、语言比较  Php是解释执行的服务器脚本语言,首先php有简单容易上手的特点。语法和c语言比较象,所以学过c语言的程序员可以很快的熟悉php的开发。而java需要先学好java的语法和熟悉一些核心的类库,懂得面向对象的程序设计方法。所以java不如php好学。  Java首先要编译成字节码.class文件,然后在java虚拟机上解释执行。Java的web开发首先最容易想到的就是JSP(现在已经到JSP2.0),原来的java的web开发都是用servlet来实现的,用servlet来开发需要程序员在java的源文件中嵌入大量的html代码。所以后来就出现了JSP,JSP可以方便的嵌入到html文件当中,其实jsp文件在服务器上执行的时候首先会被应用服务器转换成servlet,然后再编译执行。Jsp可以通过servlet和JavaBean的支持产生强大的功能。JavaBean是一种可复用的、跨平台的软件组件。使用javabean可以方便的实现java代码和html的分离,能够增强系统的功能和软件的复用性。  Java的web开发属于SUN公司定义的J2EE其中的规范。而且在J2EE中包括了java的web开发的所有方面,如:JSP、Servlet、JDBC、JNDI、JAVABEAN、EJB等等。J2EE就特别适合于做大型的企业级的应用。  二、数据库访问比较  Java通过JDBC来访问数据库,通过不同的数据库厂商提供的数据库驱动方便地访问数据库。访问数据库的接口比较统一。  PHP对于不同的数据库采用不同的数据库访问接口,所以数据库访问代码的通用性不强。例如:用Java开发的web应用从MySQL数据库转到Oracle数据库只需要做很少的修改。而PHP则需要做大量的修改工作。  三、系统设计架构比较  采用Java的web开发技术,需要使用的是面向对象的系统设计方法,而PHP还是采用面向过程的开发方法。所以用Java进行开发前期需要做大量的系统分析和设计的工作。  四、跨平台性  Java和PHP都有很好的跨平台的特性。几乎都可以在不作任何修改的情况下运行在Linux或者Windows等不同的操作系统上。  五、开发成本比较  PHP最经典的组合就是:PHP+MySQL+Apache。非常适合开发中小型的web应用,开发的速度比较快。而且所有的软件都是开源免费的,可以减少投入。  Java的web应用服务器有免费Tomcat、JBoss等,如果需要更好的商业化的服务有:WebSphere和Weblogic。  六、分布式多层架构比较  PHP只能实现简单的分布式两层或三层的架构,而JAVA在这方面就比较强大,可以实现多层的网络架构。数据库层(持久化层)、应用(业务)逻辑层、表示逻辑层彼此分开,而且现在不同的层都已经有一些成熟的开发框架的支持。例如Struts就是利用java的web开发技术实现了MVC的设计模式,而在业务逻辑层也有Spring框架,数据库持久化层有Hibernate等框架。这些框架可以方便开发者高效、合理、科学得架构多层的商业应用。  下面简要的说一下Struts,它实质上是在JSPModel2的基础上实现的一个MVC(Model、View、Controler)框架。JSPModel2体系结构是一种联合使用JSP与Servlet来提供动态内容的方法。在Struts框架中,模型由实现业务逻辑的JavaBean或EJB组件构成,控制器由Servlet实现的,视图由一组JSP文件组成。采用Struts可以明确角色的定义和开发者与网页设计者的分工。而且项目越复杂,其优势越明显。  七、源代码安全  PHP开发的程序的源代码都是公开的,他人拿到php开发的程序后都可以进行修改。  Java开发的程序,最后用户拿到的是只是一些编译好的class类,无法看到完整的源代码,安全性高。  八、性能比较  有人做过试验,对这两种种语言分别做回圈性能测试及存取Oracle数据库测试。  在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了20000*20000的回圈。而PHP测试的是2000*2000循环(少一个数量级),却分别用了63秒。  数据库测试中,二者分别对Oracle8进行1000次Insert,Update,Select和Delete:JSP需要13秒,PHP需要69秒。   表格1PHP与Java的比较  PHPJAVA  可复用性低高  开发速度快慢  易维护性差优  可移植性优-Linux、Windows、Unix等  安全性低高  开发费用低高  多层架构差优  数据库访问接口不统一接口统一  可扩展性差优  面向对象差优    综上所述,我个人认为,PHP适合于快速开发,中小型应用系统,开发成本低,能够对变动的需求作出快速的反应。而Java适合于开发大型的应用系统,应用的前景比较广阔,系统易维护、可复用性较好。还有,同样功能的系统用Java开发的系统要比PHP开发的系统的价格要高.互联网网站的反爬虫策略浅析(收藏)|在eclipse+MyEclipse下配置建立J2EE工程...

解决方案

解决方案二:
mark
解决方案三:
给那个说用java开发网站等于自虐的作者看看。

时间: 2024-11-01 05:51:10

[java,php分析贴,别说php好了自己看吧]的相关文章

java内存分析,在线等!

问题描述 java内存分析,在线等! 请问,在java内存中永久区属于堆区吗?如果不属于能解释一下吗? 解决方案 堆区(Heap):堆区是理解Java GC机制最重要的区域,没有之一.在JVM所管理的内存中,堆区是最大的一块,堆区也是Java GC机制所管理的主要内存区域,堆区由所有线程共享,在虚拟机启动时创建.堆区的存在是为了存储对象实例,原则上讲,所有的对象都在堆区上分配内存(不过现代技术里,也不是这么绝对的,也有栈上直接分配的). 方法区(Method Area):在Java虚拟机规范中,

indows+蓝屏-Windows系统蓝屏,下面是bluescreanView和Windbg分析的结果,求高手帮忙看下~~谢谢

问题描述 Windows系统蓝屏,下面是bluescreanView和Windbg分析的结果,求高手帮忙看下~~谢谢 BlueScream分析结果: ==================================================** Dump File : 121814-18735-01.dmp Crash Time : 2014/12/18 7:19:00 Bug Check String : CRITICAL_OBJECT_TERMINATION Bug Check C

代码-Java中的GC问题,GC是只看对对象引用的数量吗

问题描述 Java中的GC问题,GC是只看对对象引用的数量吗 今天突然想到一个问题,如果我写了这样的代码 LinkedList<String> list = new LinkedList<>(); list.add(...); list.add(...); list = new LinkedList<>(); list.add(...); list.add(...); 那么原来的的链表会被Garbage collected吗?每个节点还是会被其他节点引用? 解决方案 当

net-多级缓冲区分析源码,求大神看过来

问题描述 多级缓冲区分析源码,求大神看过来 用(.NET)C# AE做系统,需要用到多级缓冲区分析,希望有人给出源码,跪谢! 解决方案 http://download.csdn.net/detail/jshj1982/5276239

Java枚举的七种常见用法总结(必看)_java

用法一:常量 在JDK1.5之前,我们定义常量都是:publicstaticfianl.....现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. Java代码 public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强. Java代码 enum Signal { GREEN, YELLOW,

利用Memory Dump Diagnostic for Java (MDD4J)分析内存管理问题

简介 这一部分是 Java 内存转储诊断 (MDD4J) 故障排除工具的简介,这种工具可帮助您分析 Java 堆,从而诊断内存占用问题.MDD4J 的分析结果在报告中提供,此报告汇总了应用程序使用 Java 堆的情况. 共有三种适合使用 MDD4J 提供帮助的场景: 内存泄漏:如果应用程序出现 java.lang.OutOfMemoryError 异常,或者详细的垃圾收集数据显示内存消耗逐渐增加,那么 MDD4J 可以指出造成此类增加的数据结构以及这些数据结构内的组件. 过度的内存消耗:如果一个

java问题分析-分析如下Java代码,如果想在控制台上输出“B类的test()方法”,则在主函数应填入( )

问题描述 分析如下Java代码,如果想在控制台上输出"B类的test()方法",则在主函数应填入( ) 分析如下Java代码,如果想在控制台上输出"B类的test()方法",则在主函数应填入( )class A {public void test() { System.out.println(""A类的test()方法"");}}class B extends A {public void test() { System.ou

jvm系列(五):Java GC 分析

Java GC就是JVM记录仪,书画了JVM各个分区的表演. 什么是 Java GC Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢.这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制.概括地说,该机制对JVM(Java Virtual Machine)中的内存进行标记,并确定哪些内存需要回收,根据一定

使用MAT对java内存分析

Heap dump是java进程在特定时间的一个内存快照.通常在触发heap dump之前会进行一次full gc,这样dump出来的内容就包含的是被gc后的对象. dump文件包含的内容: 1,全部的对象:类,域,原生值和引用: 2,全部的类:classloader,类名,超类,静态域: 3,GC root:被JVM定义的可触达的对象: 4,线程栈和本地变量:线程的call stack,本地对象每帧的信息. dump文件不包含内存的分配信息,因此无法查询谁创建了哪个对象这样的信息. Shall

Java内存分析利器MAT使用详解

这是一篇阅读MAT helper的笔记.Heap dump是java进程在特定时间的一个内存快照.通常在触发heap dump之前会进行一次full gc,这样dump出来的内容就包含的是被gc后的对象. dump文件包含的内容: 1,全部的对象:类,域,原生值和引用: 2,全部的类:classloader,类名,超类,静态域: 3,GC root:被JVM定义的可触达的对象: 4,线程栈和本地变量:线程的call stack,本地对象每帧的信息. dump文件不包含内存的分配信息,因此无法查询