`
chen1984
  • 浏览: 6850 次
  • 性别: 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语言程序设计.进阶篇.原书第10版.pdf 电子书下载高清

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

    java语言程序设计(基础篇)原书第十版 习题答案(部分)

    java语言程序设计(基础篇)原书第十版 课后习题答案,自己一个行一行写的代码,不是标准答案,但每个答案都测试过。 从第9章到第13章。 包含的题目有: 第九章:9.1-9.5 9.7-9.9 9.13 第十章:10.1 10.4-10.7 第十...

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

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

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

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

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

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

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

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

    Java 面经手册·小傅哥.pdf

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

    java调用activex控件

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

    java外文文献

    Java外文文献 ...Java语言是当今最流行的编程语言之一,它的设计目标是提供一个平台独立、简单易学、可扩展和高度安全的编程语言。Java语言的应用非常广泛,包括Android应用开发、Web开发、桌面应用开发等。

    JAVA程序设计与问题解决基础篇中文完整版.pdf

    本书《JAVA程序设计与问题解决基础篇》是一部针对高等院校计算机专业本科生或研究生设计的Java程序设计经典教材。其内容覆盖了Java基础知识,包括基本类型、字符串、控制流、类和方法的定义、数组、继承等,并引入了...

    [Java语言程序设计-基础篇(原书第8版)].梁勇.扫描版.pdf

    [Java语言程序设计-基础篇(原书第8版)].梁勇.扫描版.pdf

    Java开发技术大全(500个源代码).

    HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 ...

    JAVA学习手册CHM版

    第2篇为核心篇,包括字符串处理、集合类、使用异常处理机制、掌握Java的I/O技术、精通多线程技术、枚举与泛型;第3篇为高级篇,包括Swing基础知识、JDBC技术、Swing高级组件、GUI事件处理机制、网络程序设计;第4篇...

    java连接MSSQL的jar包

    Java连接Microsoft SQL Server(MSSQL)主要依赖于特定的驱动程序,通常称为JDBC驱动。JDBC(Java Database Connectivity)是Java平台中用于与数据库交互的一种标准接口。在这个场景中,我们需要的是一个支持MSSQL的...

    java语言程序设计基础篇课后编程练习答案

    本资源提供的"java语言程序设计基础篇课后编程练习答案"是一个非常宝贵的参考资料,可以帮助学习者检验自己的学习成果,理解并巩固Java编程的基本概念和技术。 在Java编程中,变量是存储数据的容器,分为基本数据...

    Java Web开发实例大全(基础卷) 完整pdf扫描版[179MB]

    Java Web开发实例大全(提高卷)筛选、汇集了Java Web开发从基础知识到高级应用各个层面的大量实例及源代码,共有600个左右,每个实例及源代码按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析...

    Java2Pas Java代码转pas代码

    Java2Pas是一个实用工具,主要用于将Java编程语言编写的源代码转换为Pascal语言的等效代码。这个工具对于那些需要在两种语言之间迁移代码或者理解不同编程语言语法的开发者来说非常有价值。Java和Pascal虽然都是面向...

    java核心技术第八版源代码(全)

    第1章 Java 程序设计概述 1.1 Java 程序设计平台 1.2 Java 白皮书的关键术语 1.2.1 简单性 1.2.2 面向对象 1.2.3 网络技能 1.2.4 健壮性 1.2.5 安全性 1.2.6 体系结构中立 1.2.7可移植性 1.2.8 解释型 1.2.9 高性能 ...

Global site tag (gtag.js) - Google Analytics