zoukankan      html  css  js  c++  java
  • 技术体系的选择之Java篇

        经常有朋友对几种开发语言进行争论,有的说Java好,有的说.Net好,还有的说Php好,最后往往是变成了互相攻击,不欢而散。关于开发语言之争本质上是技术体系之争,开发语言也不过是某种技术体系里构建应用的工具。实际上,对于一个问题往往有多种多样的解决方案,可能每一种技术体系都能最终实现,但“能不能”跟“好不好”是两回事,这里面有个性价比的问题。就象我们打蚊子一样,我们可以用苍蝇拍去拍,也可以用大炮去轰,最后都能把蚊子给打死。大炮威力无比,无所不能,杀伤力极大,但对于打蚊子而言,还真不如苍蝇拍好用。采用重量级的的Java技术去做Web2.0的网站,就跟大炮轰蚊子的效果差不多。当然,反过来,也有的时候会出现“小马拉大车,瘦驴拉硬屎”的情况,比如用Php去开发一个银行结算系统,肯定也能做出来,速度倒是刷刷的,但一种弱类型的语言可能在运行时充满了变数,又有哪家银行敢冒这样的风险,他们宁可选用比较成熟的Java技术解决方案,速度虽慢,但用着心里踏实。每一种技术体系都有自己擅长的应用领域,一种技术体系想要通吃全盘的结果往往是“样样通,样样松”。

        那么我们到底应该选择什么样的技术体系呢?技术体系的选择,对于一个IT公司而言,主要取决于它的商业目标,反过来说,商业目标需要一个合适的技术体系去推动。比如,公司是做电信项目系统集成的,那就基本确定以J2EE平台技术为主了;如果公司准备运营Web2.0网站,那么LAMP就是最好的选择,以后开发的语言就是3P(Php/Perl/Python)了。一个IT公司只有选择了合适的技术体系,才能更好更快地实现公司的商业目标。对于个人而言,技术体系的选择,可能会在很长时间内,决定了你的职业发展目标,比如以后你是做网站还是企业应用,你是做产品还是做项目。
        技术体系的选择和确定一般是由CTO或者首架依照公司的商业目标确定,也有时候取决于客户或者行业的要求。当然,如果只以系统实现作为目的的话,架构师就可以参与实现技术的确定了,一旦选定了某种技术体系的话,所有的开发活动都被限定这种技术范围之内。作为架构师而言,必须具备较为宽广的知识体系,技术体系的基本知识便是其中之一。
        以下,我将对Java技术体系、.Net技术体系和LAMP技术体系逐一剖析,重点分析这几种技术体系的技术特点和适应领域,技术特点是决定适应领域的重要因素。

    1. Sun ONE体系架构
        Sun ONE(Sun Open Net Environment)是Sun公司为了对抗微软的.NET体系架构而推出的,以Java语言为核心,并基于一系列开放和流行的标准、技术及协议的体系架构,Sun ONE包含了J2SE、J2EE和J2ME 3个平台,基本覆盖了应用开发的全部领域。
     J2SE(Java 2 Platform, Standard Edition)
        Java 2平台标准版,适用于桌面系统应用程序的开发。
     J2EE(Java 2 Platform, Enterprise Edition)
        Java 2平台企业版。利用J2EE平台可以简化企业解决方案的开发、部署和管理。J2EE主要用于构建企业级的服务器应用和分布式的网络程序的开发。
     J2ME(Java 2 Platform, Micro Edition)
        Java 2平台微型版。Sun公司将J2ME定义为“一种以广泛的消费性产品为目标、高度优化的Java运行环境”。J2ME平台广泛用于嵌入式的消费型产品中,如手机,掌上电脑,智能卡,机顶盒,汽车导航系统或其他无线设备。
        我们中的多数人从事的是基于J2EE平台上企业应用的开发,以下重点讲述的就是J2EE开发平台和开发技术。


    2. Java技术特点
    2.1 安全性
        Java平台从诞生时就充分考虑了安全性的问题。Java平台提供了基于原始安全模式的沙箱模型。沙箱模型的实质在于信任本地代码,使其可以完全访问重要的系统资源,而对于下载的远程代码则不被信任,因此只能访问沙箱内提供的有限资源。对于从开放网络中得到的不被信任的代码,该模型提供了一个非常严格的使用环境。Java引入了认证器组件,它在.class文件运行前完成该文件的安全检查,确保Java字节码符合Java虚拟机规范。Java平台通过使用认证器查看类文件的句法和词法的正确性,检查版本及API符合性等,以保证不突破Java语言的任何限制,可以被安全执行。这一特点.Net技术体系也都具备,LAMP虽然不具备这么完善的安全机制,但目前也未发现重大的安全漏洞。
    2.2 健壮性
        Java语言是一种强类型的静态语言,运行前必须进行编译。它要求变量和对象的类型在使用前必须声明,保证语法没有二义性,所以生产出来的代码的在可读性、可靠性和可预测性方面比较好,尽量地在运行前摒除系统中潜在的不稳定因素,极大地防止了运行期间出现错误。另外,在运行期间的容错机制,也保证了系统运行期间,不会因为局部问题引发整体的坍塌。象LAMP技术体系中的Php这种弱类型的动态语言,比较缺乏企业级应用的所看重的要素,导致最终不能走上企业级大型系统开发的原因之一。这一特点.Net技术体系的开发语言也都具备。
    2.3 跨平台性
        Java应用具有平台可移植的特性,既可以运行在Unix/Linux平台上,又可以运行在Windows平台上。操作系统是任何应用的最基础的支撑环境,Java应用能够运行在Unix/Linux平台上这一点非常重要,几乎决定了它的应用领域。可以这么说,大多数的系统安全问题都基本上取决于操作系统的安全性。Unix一直被认为是最安全的操作系统,主要是因为它坚持开放的策略,可以接受更多技术人员的审查和测试,而且具有非常悠久的历史。同时,Unix被认为是稳定高效的操作系统,在安全性、稳定性、高效性等几个方面要明显高于Windows Server的。Java应用可以运行在Unix平台上,直接继承了这些优势。这一点对于只能运行在Windows平台上的.Net要逊色不少,至于像开源的Mono能够实现.Net在Unix/Linux上的跨平台运行,只能具有象征意义,并没有经过大规模的实践。
    2.4 面向对象
        JAVA语言是彻底的面向对象的语言,软件工程的一些最新的思想和理论,大多数都是在Java平台和开发过程中最先实践的,这对于解决大型系统的分析、设计和编程提供了很好的语言级别的支撑。
    2.5 其它特性
        Java语言具有平台无关性,它对每种计算机都一样。比如,简单的类型都是不变的:整数总是32位,长整数总是64位。令人奇怪的是,诸如C及C++等时髦的编程语言却不是这样。由于这些语言定义如此自由,每种编译器及开发环境便各有不同了,这使程序的移植成为讨厌的问题。Java程序的移植却很容易,而且不需要进行重新编译。Java语言相对于传统语言作了一些简化,去除了诸如预处理、指针运算、结构、联合以及运算符过载等语法,还去掉了容易面向对象中的造成混淆的多重继承等等。当然,这些特性与.Net开发语言C#以及LAMP中的PHP相比没有特别明显的优势。


    3. Java技术适合的领域
        基于J2EE平台的开发,是比较适合于工业级别的应用开发,象金融、保险、电信、ERP以及电子商务等领域,而且大多属于基本上属于大中型级别的业务系统。
    为什么Java技术适合于这样的领域,而不是.Net或者LAMP呢?我总结了以下几个方面的因素:
     1)厂商支持
        Java技术适应领域的业务系统的特点:业务逻辑比较复杂,要求系统具有高可靠性、安全性和容错性来保证交易事务的成功。对于这类行业来讲,选择技术路线的时候一般采用较为保守的策略,更倾向于选择成熟的方案、产品和技术提供商,而不仅仅是选择某种语言、某种技术、或者是某种应用服务器的这样很局部的问题,他们往往需要的是一整套的解决方案。大型软件服务提供商,象IBM、SAP、ORACLE等等,他们售卖的正是这样整套的解决方案,从行业咨询到流程优化,从数据库到应用服务器,从开发环境到系统部署,从售前咨询到售后服务等各个环节都非常成熟,而且有很多成功的本行业的实施案例。这些软件服务提供商的主流产品和对外提供的平台多数是基于J2EE平台的,几乎没有基于.Net技术体系的产品,LAMP就更不用提了。
     2)操作系统
        从操作系统的角度来讲,Unix的诞生要远早于Windows操作系统,Windows Server更晚,上述业务领域的多数应用,此前就一直运行在Unix操作系统上。因此,他们基于运营连续性考虑,选择Unix/Linux操作系统肯定是一种比较稳妥的方案。又有哪个这类企业把以前的系统推翻,全部采用Windows平台,其中包含的成本和风险,恐怕没有哪个企业敢去承担,而且也确实没有理由去进行更换。Java应用不仅可以在Unix/Linux上运行,而且在Unix/Linux的表现的确不错。另外,我们上面也提到了Unix/Linux操作系统的安全性、稳定性和高效性明显高于Windows,使得能够运行在Unix/Linux上的Java应用成为了最好的选择。
     3)技术特点
        Java平台的安全性、健壮性、稳定性以及容错性是企业级应用开发必不可少的前提。Java语言的的面向对象特性有助于实现系统的可维护性和可复用性设计,它的简单性又能保证开发的效率和系统的健壮性,这些是C,C++等语言无法比拟的。
     4)开源产品支持
        软件工程的一些最新的思想和理论,大多数都是在Java平台和开发过程中最先实践的。基于JAVA的成熟的开源框架也极好地支持了大型系统的开发,比如常用的MVC框架Struts、ORM框架Hibernate、IOC框架Spring。从系统分析、设计、编码、测试各个环节都有非常成熟的开源框架和工具,而且已经被成功地应用于系统开发实践中。类似这些产品和工具在.Net技术体系和LAMP技术体系中尚未形成大规模的实践。


    4. 基于Java技术的Web开发

    本文时候用的开发工具为:Java 来自 嗖嗖下载

  • 相关阅读:
    第三天 moyax
    mkfs.ext3 option
    write file to stroage trigger kernel warning
    download fomat install rootfs script
    custom usb-seriel udev relus for compatible usb-seriel devices using kermit
    Wifi Troughput Test using iperf
    learning uboot switch to standby system using button
    learning uboot support web http function in qca4531 cpu
    learngin uboot design parameter recovery mechanism
    learning uboot auto switch to stanbdy system in qca4531 cpu
  • 原文地址:https://www.cnblogs.com/wanghao72214/p/1417440.html
Copyright © 2011-2022 走看看