IBM JDK和SUN JDK的差异处理一例

  source:  http://blog.csdn.net/xiongzk/article/details/8102946


 最近在一个加密应用中有如下一行代码:

       Security.addProvider(new com.sun.crypto.provider.SunJCE()); 

       一看就知道,这用的是SUN JDK 的类。很明显的问题是,如果移植都IBM的JDK上,是编译不过的。当然我们也可以针对IBM的JDK做一个版本,把上面的代码改成如下:

       Security.addProvider(new com.ibm.crypto.provider.IBMJCE()); 

       这样确实可以解决移植的问题,但是只为一行代码的差异就做一个新的版本,有点小题大做了。而且这样做的代价是在你以后的开发维护中要同时对两个版本做修改,工作量相当于是增加了一倍。其实我们可以把上面的代码合成如下:

        String jdkvs=System.getProperty( "java.vm.vendor");//

        if(null!=jdkvs && jdkvs.startsWith("IBM")){
              try {
                   Security.addProvider((Provider)Class.forName("com.ibm.crypto.provider.IBMJCE").newInstance());
              } catch (IllegalAccessException e) {
                   / / TODO Auto-generated catch block
                    e.printStackTrace();
              } catch (InstantiationException e) {
                     // TODO Auto-generated catch block
                     e.printStackTrace();
              } catch (ClassNotFoundException e) {
                     // TODO Auto-generated catch block
                    e.printStackTrace();
             }
       }else{
              try {
                     Security.addProvider((Provider)Class.forName("com.sun.crypto.provider.SunJCE").newInstance());
               } catch (IllegalAccessException e) {
                     // TODO Auto-generated catch block
                      e.printStackTrace();
               } catch (InstantiationException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
               } catch (ClassNotFoundException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                }
      }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值