java课程分享Java和PHP在Web开发方面的比较

java课程分享Java和PHP在Web开发方面的比较,第1张

比较PHP和JSP这两个Web开发技术,在目前的情况是其实是比较PHP和Java的Web开发。以下是java课程就几个主要方面进行的比较:

一、语言比较

PHP是解释执行的服务器脚本语言,首先php有简单容易上手的特点。语法和c语言比较象,所以学过c语言的程序员可以很快的熟悉php的开发。而java需要先学好java的语法和熟悉一些核心的类库,懂得面向对象的程序设计方法。所以java不如php好学。

Java首先要编译成字节码class文件,然后在java虚拟机上解释执行。Java的Web开发首先最容易想到的就是JSP(现在已经到JSP20),原来的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进行开发前期需要做大量的系统分析和设计的工作。

怎样快速学好PHP技术我想这应该是大多数参加PHP培训学习PHP的同学比较关心和想要知道的问题,本文java课程就给大家简单谈谈怎样快速学好PHP技术,告诉大家一些PHP学习方法。

第一、抱着良好的心态去学习

学习PHP一定要保持一个良好的心态,切忌怀疑自己的学习方向和成果。

还记得你敲出的第一条命令在一个“黑漆漆”的窗口中显示了什么样的神迹吗学习PHP绝非是件易事,但请不要怀疑你自己的方向和成果,你所付出的终将会给丰厚的回报。如果一件事情结束的时候你还能保持像你开始那样心态的话,那么你将立于不败之地。

第二、合适的学习方式和教材

很多初学者比较倾向于找一些视频教程来看,其实这真是极好的,但是你得找一些质量高、口碑好,最好是一些大型培训机构内部的视频。但是请不要一直依赖视频,毕竟视频除了没有互动之外,跟上课一样的,所以看视频的唯一缺点就是学习成本的增加,这个成本包括了取得费用和时间成本,所以在你什么都不懂而且看书看“懵逼”的时候先看看视频吧。当你把PHP基础命令用熟练了,理解简单的服务原理并可以独立配置简单的服务的时候,那么就去看书吧!看书可以大大的节省你的时间、金钱成本。

当然萝卜白菜各有所爱,选择什么样的学习方式和学习教材对每个人来说都是不一样的,就跟谈恋爱一样,没有最好只有最合适。

第三、不要抵触“无聊”的英语

基本上你学习PHP或者使用PHP一段时间以后,你会发现与其说是学习PHP *** 作系统,还不如说是学习如何阅读英文呢。随着知识的深入,你可能会需要经常去搜索一些资料,当度娘不能满足你的时候,你还得去找另一个男人---谷哥。你跟谷哥讲中文当然是可以的,但是有时候谷哥会用中文含蓄的跟你表达“我这里资料还是太少了,你去我哥哥(英文谷哥)那问问”试问此时如果你不会用英文描述你的问题,或者看不懂外国牛人的回答,那时候真的有种想拿豆腐撞死自己的冲动。而且说实话,语言的学习是非常有意思的一件事情。

/

  JCryptjava

 

  Java-based implementation of the unix crypt command

 

  Based upon C source code written by Eric Young, eay@psychuqozau

 

 /

public class JCrypt

{

   private JCrypt() {}

   private static final int ITERATIONS = 16;

   private static final int con_salt[] =

   {

      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 

      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 

      0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 

      0x0A, 0x0B, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 

      0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 

      0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 

      0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 

      0x23, 0x24, 0x25, 0x20, 0x21, 0x22, 0x23, 0x24, 

      0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 

      0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 

      0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 

      0x3D, 0x3E, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 

   };

   private static final int cov_2char[] =

   {

      0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 

      0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 

      0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 

      0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 

      0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 

      0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 

      0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 

      0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A

   };

   private static final int byteToUnsigned(byte b)

   {

      int value = (int)b;

      return(value >= 0  value : value + 256);

   }

   private static int fourBytesToInt(byte b[], int offset)

   {

      int value;

      value  =  byteToUnsigned(b[offset++]);

      value |= (byteToUnsigned(b[offset++]) <<  8);

      value |= (byteToUnsigned(b[offset++]) << 16);

      value |= (byteToUnsigned(b[offset++]) << 24);

      return(value);

   }

   private static final void intToFourBytes(int iValue, byte b[], int offset)

   {

      b[offset++] = (byte)((iValue)        & 0xff);

      b[offset++] = (byte)((iValue >>> 8 ) & 0xff);

      b[offset++] = (byte)((iValue >>> 16) & 0xff);

      b[offset++] = (byte)((iValue >>> 24) & 0xff);

   }

   private static final void PERM_OP(int a, int b, int n, int m, int results[])

   {

      int t;

      t = ((a >>> n) ^ b) & m;

      a ^= t << n;

      b ^= t;

      results[0] = a;

      results[1] = b;

   }

   private static final int HPERM_OP(int a, int n, int m)

   {

      int t;

      t = ((a << (16 - n)) ^ a) & m;

      a = a ^ t ^ (t >>> (16 - n));

      return(a);

   }

   private static int [] des_set_key(byte key[])

   {

      int schedule[] = new int[ITERATIONS  2];

      int c = fourBytesToInt(key, 0);

      int d = fourBytesToInt(key, 4);

      int results[] = new int[2];

      PERM_OP(d, c, 4, 0x0f0f0f0f, results);

      d = results[0]; c = results[1];

      c = HPERM_OP(c, -2, 0xcccc0000);

      d = HPERM_OP(d, -2, 0xcccc0000);

      PERM_OP(d, c, 1, 0x55555555, results);

      d = results[0]; c = results[1];

      PERM_OP(c, d, 8, 0x00ff00ff, results);

      c = results[0]; d = results[1];

      PERM_OP(d, c, 1, 0x55555555, results);

      d = results[0]; c = results[1];

      d = (((d & 0x000000ff) <<  16) |  (d & 0x0000ff00)     |

           ((d & 0x00ff0000) >>> 16) | ((c & 0xf0000000) >>> 4));

      c &= 0x0fffffff;

      int s, t;

      int j = 0;

      for(int i = 0; i < ITERATIONS; i ++)

      {

         if(shifts2[i])

         {

            c = (c >>> 2) | (c << 26);

            d = (d >>> 2) | (d << 26);

         }

         else

         {

            c = (c >>> 1) | (c << 27);

            d = (d >>> 1) | (d << 27);

         }

         c &= 0x0fffffff;

         d &= 0x0fffffff;

         s = skb[0][ (c       ) & 0x3f                       ]|

             skb[1][((c >>>  6) & 0x03) | ((c >>>  7) & 0x3c)]|

             skb[2][((c >>> 13) & 0x0f) | ((c >>> 14) & 0x30)]|

             skb[3][((c >>> 20) & 0x01) | ((c >>> 21) & 0x06) |

                                          ((c >>> 22) & 0x38)];

         t = skb[4][ (d     )  & 0x3f                       ]|

             skb[5][((d >>> 7) & 0x03) | ((d >>>  8) & 0x3c)]|

             skb[6][ (d >>>15) & 0x3f                       ]|

             skb[7][((d >>>21) & 0x0f) | ((d >>> 22) & 0x30)];

         schedule[j++] = ((t <<  16) | (s & 0x0000ffff)) & 0xffffffff;

         s             = ((s >>> 16) | (t & 0xffff0000));

         s             = (s << 4) | (s >>> 28);

         schedule[j++] = s & 0xffffffff;

      }

      return(schedule);

   }

   private static final int D_ENCRYPT

   (

      int L, int R, int S, int E0, int E1, int s[]

   )

   {

      int t, u, v;

      v = R ^ (R >>> 16);

      u = v & E0;

      v = v & E1;

      u = (u ^ (u << 16)) ^ R ^ s[S];

      t = (v ^ (v << 16)) ^ R ^ s[S + 1];

      t = (t >>> 4) | (t << 28);

      L ^= SPtrans[1][(t       ) & 0x3f] |

           SPtrans[3][(t >>>  8) & 0x3f] |

           SPtrans[5][(t >>> 16) & 0x3f] |

           SPtrans[7][(t >>> 24) & 0x3f] |

           SPtrans[0][(u       ) & 0x3f] |

           SPtrans[2][(u >>>  8) & 0x3f] |

           SPtrans[4][(u >>> 16) & 0x3f] |

           SPtrans[6][(u >>> 24) & 0x3f];

      return(L);

   }

   private static final int [] body(int schedule[], int Eswap0, int Eswap1)

   {

      int left = 0;

      int right = 0;

      int t     = 0;

      for(int j = 0; j < 25; j ++)

      {

         for(int i = 0; i < ITERATIONS  2; i += 4)

         {

            left  = D_ENCRYPT(left,  right, i,     Eswap0, Eswap1, schedule);

            right = D_ENCRYPT(right, left,  i + 2, Eswap0, Eswap1, schedule);

         }

         t     = left; 

         left  = right; 

         right = t;

      }

      t = right;

      right = (left >>> 1) | (left << 31);

      left  = (t    >>> 1) | (t    << 31);

      left  &= 0xffffffff;

      right &= 0xffffffff;

      int results[] = new int[2];

      PERM_OP(right, left, 1, 0x55555555, results); 

      right = results[0]; left = results[1];

      PERM_OP(left, right, 8, 0x00ff00ff, results); 

      left = results[0]; right = results[1];

      PERM_OP(right, left, 2, 0x33333333, results); 

      right = results[0]; left = results[1];

      PERM_OP(left, right, 16, 0x0000ffff, results);

      left = results[0]; right = results[1];

      PERM_OP(right, left, 4, 0x0f0f0f0f, results);

      right = results[0]; left = results[1];

      int out[] = new int[2];

      out[0] = left; out[1] = right;

      return(out);

   }

   public static final String crypt(String salt, String original)

   {

      while(saltlength() < 2)

         salt += "A";

      StringBuffer buffer = new StringBuffer("             ");

      char charZero = saltcharAt(0);

      char charOne  = saltcharAt(1);

      buffersetCharAt(0, charZero);

      buffersetCharAt(1, charOne);

      int Eswap0 = con_salt[(int)charZero];

      int Eswap1 = con_salt[(int)charOne] << 4;

 

      byte key[] = new byte[8];

      for(int i = 0; i < keylength; i ++)

         key[i] = (byte)0;

      for(int i = 0; i < keylength && i < originallength(); i ++)

      {

         int iChar = (int)originalcharAt(i);

         key[i] = (byte)(iChar << 1);

      }

      int schedule[] = des_set_key(key);

      int out[]      = body(schedule, Eswap0, Eswap1);

      byte b[] = new byte[9];

      intToFourBytes(out[0], b, 0);

      intToFourBytes(out[1], b, 4);

      b[8] = 0;

      for(int i = 2, y = 0, u = 0x80; i < 13; i ++)

      {

         for(int j = 0, c = 0; j < 6; j ++)

         {

            c <<= 1;

            if(((int)b[y] & u) != 0)

               c |= 1;

            u >>>= 1;

            if(u == 0)

            {

               y++;

               u = 0x80;

            }

            buffersetCharAt(i, (char)cov_2char[c]);

         }

      }

      return(buffertoString());

   }

   public static void main(String args[])

   {

      if(argslength >= 2)

      {

         Systemoutprintln

         (

            "[" + args[0] + "] [" + args[1] + "] => [" +

            JCryptcrypt(args[0], args[1]) + "]"

         );

      }

   }

}

$>

忘了当时为什么第一个参数要传空,参数名不是那边给的参数名,要用string1,string2这样的代表第1个,第2个参数, $fun是他那边的方法名

一、 语言比较 Php是解释执行的服务器脚本语言,首先php有简单容易上手的特点。语法和c语言比较象,所以学过c语言的程序员可以很快的熟悉php的开发。而java需要先学好java的语法和熟悉一些核心的类库,懂得面向对象的程序设计方法。所以java不如php好学。 Java首先要编译成字节码class文件,然后在java虚拟机上解释执行。Java的web开发首先最容易想到的就是JSP(现在已经到JSP20),原来的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等,如果需要更好的商业化的服务有:Web Sphere和 Web logic。 六、 分布式多层架构比较 PHP只能实现简单的分布式两层或三层的架构,而JAVA在这方面就比较强大,可以实现多层的网络架构。数据库层(持久化层)、应用(业务)逻辑层、表示逻辑层彼此分开,而且现在不同的层都已经有一些成熟的开发框架的支持。例如Struts就是利用java的web开发技术实现了MVC的设计模式,而在业务逻辑层也有Spring框架,数据库持久化层有Hibernate等框架。这些框架可以方便开发者高效、合理、科学得架构多层的商业应用。 下面简要的说一下Struts,它实质上是在JSP Model2的基础上实现的一个MVC(Model、View、Controler)框架。JSP Model2体系结构是一种联合使用JSP 与Servlet 来提供动态内容的方法。在Struts框架中,模型由实现业务逻辑的JavaBean或EJB组件构成,控制器由Servlet实现的,视图由一组JSP文件组成。采用Struts可以明确角色的定义和开发者与网页设计者的分工。而且项目越复杂,其优势越明显。 七、 源代码安全 PHP开发的程序的源代码都是公开的,他人拿到php开发的程序后都可以进行修改。 Java开发的程序,最后用户拿到的是只是一些编译好的class类,无法看到完整的源代码,安全性高。 八、性能比较 有人做过试验,对这两种种语言分别做回圈性能测试及存取Oracle数据库测试。 在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了20000*20000的回圈。而PHP测试的是2000*2000循环(少一个数量级),却分别用了63秒。 数据库测试中,二者分别对 Oracle 8 进行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒。 表格 1 PHP 与Java的比较 PHP JAVA 可复用性 低 高 开发速度 快 慢 易维护性 差 优 可移植性 优-Linux、Windows、Unix等 安全性 低 高 开发费用 低 高 多层架构 差 优 数据库访问 接口不统一 接口统一 可扩展性 差 优 面向对象 差 优 综上所述,我个人认为,PHP适合于快速开发,中小型应用系统,开发成本低,能够对变动的需求作出快速的反应。而Java适合于开发大型的应用系统,应用的前景比较广阔,系统易维护、可复用性较好。还有,同样功能的系统用Java开发的系统要比PHP开发的系统的价格要高

Java和PHP都有各自的优势。

在开发速度上Php远超Java,而且在简单逻辑上,可能PHP运行更加快一点。

但是,Java在处理大数据以及复杂的业务逻辑,多线程等等都远远优于PHP。

以上就是关于java课程分享Java和PHP在Web开发方面的比较全部的内容,包括:java课程分享Java和PHP在Web开发方面的比较、java课程分享怎样快速学好PHP技术、java怎么实现php 的crypt等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9470860.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存