`
chen1984
  • 浏览: 6757 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论
  • edr_: 改变重载方法的返回类型不是相当于自身创建一个新的方法吗?我看教 ...
    重载和重写

技术体系的选择之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笔试题库之选择题篇-总共234道

    最全的Java笔试题库之选择题篇-总共234道 15.下列哪一种叙述是正确的( ) A. abstract修饰符可修饰字段、方法和类 B. 抽象方法的body部分必须用一对大括号{ }包住 C. 声明抽象方法,大括号可有可无 D. 声明...

    java swing 时间日期选择控件

    标题中的“java swing 时间日期选择控件”指的是Swing中用于日期和时间选择的组件。Swing提供了JCalendar和JDatePicker这两个常用的日期选择组件,它们使得用户能够方便地在日历视图中选择日期,或者通过一个文本框...

    (官方)Java语言程序设计(原书第8版)基础篇和进阶篇复习题和编程题答案

    在学习Java这门强大的面向对象编程语言时,官方的《Java语言程序设计》第8版提供了深入的基础篇和进阶篇,帮助读者逐步掌握其核心概念和技术。这本书的复习题和编程题是检验学习成果和提升技能的关键环节。本资料...

    Java OCR 图像智能字符识别技术,可识别中文

    Java OCR(Optical Character Recognition,光学字符识别)技术是一种计算机视觉领域的应用,它能将图像中的文字转换成可编辑的文本格式。这项技术在各种场景下都有广泛应用,比如文档扫描、车牌识别、发票处理等。...

    Java语言程序设计.进阶篇.原书第10版.pdf 电子书下载高清

    Java语言程序设计.进阶篇.原书第10版.pdf java语言程序设计 进阶篇 本书是Java语言的经典教材 Java语言程序设计 进阶篇 原书第10篇版 正版内容下载,超高清,下载的亲们多多好评哦!

    java 选择保存文件的路径

    java 选择文件夹 输入需要保存的文件名称 保存

    java源码包---java 源码 大量 实例

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    Java知识体系图.xmind

    总结的Java知识体系图,包揽了当前Java的技术体系,以便学习时更为直观

    java文件夹选择框和Java文件选择器

    在Java编程环境中,有时我们需要与用户交互,获取他们的文件或文件夹选择,这时就用到了“Java文件夹选择框”(Java Directory Chooser)和“Java文件选择器”(Java File Chooser)。这两个组件是Java Swing库的一...

    java集合体系结构完结篇-Map集合

    java集合体系结构完结篇-Map集合

    Java语言程序设计 (原书第10版) (全本完整版)

    基础篇介绍基础内容,进阶篇介绍高级内容,便于教师按需选择理想的教材。 全面整合了Java 8的特性,对全书的内容进行了修订和更新,以反映Java程序设计的全新技术发展。 对面向对象程序设计进行了深入论述,包含GUI...

    Java语言程序设计-基础篇(原书第8版).pdf

    根据提供的文件信息,“Java语言程序设计-基础篇(原书第8版)”这本书主要面向初学者,旨在通过详细的讲解和示例帮助读者掌握Java编程的基础知识。以下是对该书籍可能涉及的一些关键知识点进行的总结: ### 1. Java...

    Java后端技术体系-按照学习顺序梳理-韩顺平.xmind

    该思维导图是根据B站韩顺平老师的Java后端学习路线的课程整理的。 课程地址:https://www.bilibili.com/video/BV14K4y177Qk

    Java语言程序设计-基础篇(原书第8版)

    《Java语言程序设计:基础篇(原书第8版)》以示例讲解解决问题的技巧,提供大量的程序清单和相应的提示,每章配有大量复习题和编程练习题,帮助读者掌握编程技术,并应用所学的技术解决实际应用程序开发中遇到的问题。...

    Java 面经手册·小傅哥.pdf

    这是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、...

    21天学通Java Web开发.pdf

    第五篇为框架技术篇,介绍了Struts 2、Hibernate、Spring这三个目前非常流行的轻量级Java Web开发框架。第六篇为项目实战篇,通过整合前面的三个框架,开发一套用户管理系统。 《21天学通Java Web开发》适合Java Web...

    30种java技术框架

    Java技术体系是指基于Java语言的一系列开发技术和工具集合。主要包括Java SE(标准版)、Java EE(企业版)和Java ME(微型版)三个版本。每个版本针对不同的应用场景,例如Java SE主要用于桌面应用程序开发;Java ...

    JAVA_API1.6文档(中文)

    javax.accessibility 定义了用户界面组件与提供对这些组件进行访问的辅助技术之间的协定。 javax.crypto 为加密操作提供类和接口。 javax.crypto.interfaces 根据 RSA Laboratories' PKCS #3 的定义,提供 Diffie-...

    java调用activex控件

    然而,由于Java和ActiveX控件分属不同的平台和技术体系,实现两者间的交互需要特别的技术处理。 #### Java与ActiveX的桥梁:JNI Java Native Interface(JNI)是Java平台提供的一种标准机制,用于调用非Java语言...

Global site tag (gtag.js) - Google Analytics