侧边栏壁纸
博主头像
WinJay博主等级

博观而约取 厚积而薄发

  • 累计撰写 317 篇文章
  • 累计创建 169 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Java与.NET技术体系对比

WinJay
2016-04-09 / 0 评论 / 0 点赞 / 74 阅读 / 3,901 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-01-20,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Java与.NET技术体系对比

目录

1. 背景 2

2. 目标 2

3. 生态环境对比 2

4. 人员发展前景对比 4

5. 企业技术投入对比 4

6. 企业成功案例对比 6

6.1. Java成功案例 6

6.2. .NET成功案例 6

7. 数据调查:安全漏洞对比 7

7.1. 服务器操作系统漏洞数据分析 7

7.2. 主流数据库漏洞数据分析 7

7.3. 技术平台漏洞数据分析 9

7.3.1. Java 平台漏洞数据分析 9

7.3.2. .NET 平台漏洞数据分析 9

背景

本次在与沈阳电大现场沟通系统需求时,游校长私下对.Net体系(含Windows平台与SQLServer数据库)提出了安全、性能、维护方面的质疑,并提出建议更换Oracle数据库。结合沈阳方面更早前曾有提及更换开发语言的想法,抛开我方系统原因,像这样基于自身对.NET一知半解或误解,对.Net体系有一定抵触心理的客户及潜在客户大有人在。

结合当前国内大环境,无论是技术人员还是使用者对.NET与Java体系的态度,.NET真正的劣势是市场认可度越来越低。从而导致国内技术领域内,.NET平台应用规模越来越小,应用范围越来越窄。

对于我们而言,或者直接更换技术体系,以取信客户,或者通过二者对比,找出.NET相比Java的不足,从而在与客户沟通时进行良好引导,成为一件重要的事。

目标

找出.Net对比Java体系,在各方面方面的优势与不足,以便在与用户沟通时能更有效地引导用户。同时正视.Net体系存在的不足,为技术体系是否调整提供一个判断参照。

生态环境对比

从语言特性上,C#.NET领先于风格近似的Java,.NET开发工具更是号称宇宙最强工具,.NET
Core也已经成功实现跨平台应用(虽然当前没有Java成熟稳定,但正走在快速发展与完善的路上)。

然而,无论怎么强调.NET的先进性,有一点是毋庸置疑的,那就是在企业技术管理者与开发人员最为关注的生态环境上(技术沉淀与发展),Java比.NET领先太多。

Java历经几十年发展,各种社区技术蓬勃发展,好框架、好思想几乎全部来源于开源社区,优秀的Java开源项目与成熟案例数不胜数,以技术沉淀形成的马太效应导致Java越来越丰富,引来的关注越来越多,吸引的企业与开发者越来越多。

而.NET开源生态远不如Java,主要还是微软支撑。虽然.NET在努力追赶,如服务端技术开源、.NET
Core跨平台、SQL
Server逐步支持Linux等,各种.NET社区技术也在快速发展中,吸引了大量高端人士参与,但在很多方面还是存在差距。例如成熟方案和选择性相对少,很多框架和组件,是先在Java平台上出现,后来移植到.NET,而它们功能部分不键全,甚至更新维护都成问题。很多优秀的中间件、平台,在开发API的时候,都是优先支持Java、python这些,后支持C#.NET,而有的甚至不支持C#.NET。

另外,国内存在很多看低.NET的人,他们其实对. NET并不了解或是对.
NET的进步一知半解,总是带着有色眼睛或拿着多年前.NET的缺点来说事,也影响了国内.NET环境的正常发展。

(无论如何,Windows闭源的安全性问题是一个绕不开的坎,但普遍没有意识到并探讨Linux商业版是否存在同样问题,仅单纯认为开源就不会存在后门,这是一个错误的认识。)

人才发展对比

在当前国内环境下,.NET开发人员职业前景弱于Java,这一状态对二者生存环境以及企业技术决策上间接带来不同的影响,继而又循环影响了二者从业人员的职业前景:

  • 国内具有领导效应的诸多大公司技术转型,带动大量.NET中高端开发人员转型。同时,也影响甚至带动了大量中小型企业的技术选型,大大影响了.NET开发人员的生存环境;

  • 国内Java与.NET的职位比率在5:1左右,对于.NET求职者而言,面临更加狭窄的企业选择空间。而Java就业范围比.NET广更,同等职位下,国内的待遇Java比.Net更高,这些也恶化了.NET开发人员的生存环境;

  • 技术根风,人云亦云(一知半解或病急乱投医或无主见),导致.NET生存环境恶化,学习.NET的开发人员更为变少。

  • 受上述不良风气和环境影响,.NET高端开发人员越来越少,招聘难度越来越大,进而影响公司技术决策,反过来又导致.NET开发人员生存环境更为恶化。

    以上长期存在,导致.NET高端人员和低端人员双双流失,继而对.NET技术发展与人才积累造成严重打击,动摇.NET发展的根本。

企业技术投入对比

因企业应用规模不同,技术投入也各有不同:

  1. 软件投入
  • 小型应用下,.NET构建的系统需要采购Windows与SQL
    Server软件进行支撑,而Java构建的系统可以采用完全开源的Linux与MariaDB;

  • 大中型应用下,出于安全、稳定与性能考量,Java构建的系统很多会采购Linux商业版与Oracle企业版。相比较.NET系统采购Windows
    + SQL
    Server费用而言,前者与后者的费用以倍数区分。(Linux商业版费用低于Windows的1/2,但Oracle
    Database SQL Server费用远高于SQL Server(费用远高于每一核心的授权费用,是
    SQL Server 的 4
    倍以上;关键功能是额外付费;要获得技术咨询、程序更新补丁及安全更新,需在第一年支付
    22% 的维护费用(年间递增2%))。

  1. 开发投入

对.Net体系或Java体系专业人员而言,在系统需求既定的情况下,二者在开发周期和人力资源要求上并无差异。但在开发人员薪资成本上,由于Java体系的学习门槛相对较高,以业内中级开发人员为例估算,Java体系开发人员的薪资普遍较.Net体系开发人员高2000~3000左右,高端开发人员最大可高1~2万左右。

  1. 运维投入

无论.Net体系平台还是Java体系,在系统上线后,系统的日常运行维护都需要以下三类人员:

  • 中级软件开发工程师(至少1名)

  • DBA(1名)

  • 系统与网络工程师(1名)

上述三类人员中,由于DBA、系统与网络工程师更偏向技术领域,其配置人员可以是部门级运行维护人员,工作时间可为非全职。而软件开发工程师除了技术外,更多涉及到业务领域,所以需要专人进行全职维护。

以下是针对上述三类后期运维人员总体运维成本的分项评估:

image.png

企业成功案例对比

通过案例说明,Java与.Net技术体系均可应用于大型企业级应用,均能满足其技术要求,都能满足系统的高可用性/可靠性、高扩展性、高安全性、高可维护性等要求。选择Java还是.Net技术体系并非纯粹技术问题。

Java成功案例

Java平台的大型系统成功案例太多,天猫、京东作为国内Web应用的代表,其主要开发语言都是Java,在此不再详述。

.NET成功案例

Myspace,曾经全球第二大的社交网站,拥有2亿用户,每月的访问量达500亿。它是基于.NET技术体系构建的系统(Windows2003 + ASP.NET + IIS +
SQLSERVER)。它在高峰时维护着网站数千台服务器。

StackOverflow,一个 IT 技术问答网站,用户可以在网站上提交和回答问题。2014年StackOverflow 已拥有 400 万个用户,4000 万个回答,月 PV5.6亿,并且每年以100%增长率增长。支撑StackOverflow的全部服务器只有 25台,并且都保持着非常低的资源使用率。Stack Overflow基于.NET平台,并且重度使用着微软的产品。

数据调查:安全漏洞对比

  1. 服务器操作系统漏洞数据分析

服务器操作系统方面主要由 Windows Server 系列和 Linux 系统主导, 2015年 Windows
Server系列操作系统网络主机方面的市场份额逐步提升, Windows Server
系列漏洞明显增多,是 2014 年的 4 倍多,Linux 系统漏洞数量明显减少,同比下降了
24.63%。

序号操作系统名称类型漏洞数量备注
1Windows Server 系列服务器操作系统171
2Linux服务器操作系统1012011-2014年,漏洞数量连续位居第一

2015年操作系统漏洞数量统计

主流数据库漏洞数据分析

目前市场上数据库产品使用较为广泛的数据库有 4 款,分别为: Oracle、SQL Server、MySQL、 DB2,这 4 款产品的漏洞数量占据了数据库类产品漏洞总数的 96%以上。

2015 年共发现主流数据库漏洞 116 个,与 2014 年数据持平。其中MySQL 和 Oracle数据库分别占到主流数据库漏洞的 66.38%和 25%,合计则达到了91.38%。 DB2 和 SQLServer 两款产品漏洞数量则分别为 7 个和 3 个。

与前两款产品相比,DB2 和 SQL Server的漏洞数量由于数量较少,在图中呈现了较为平稳波动的状态。

序号数据库名称漏洞数量所占比例
1MySQL7766.38%
2Oracle2925.00%
3DB276.03%
4SQL Server32.59%

表4 2015 年主流数据库漏洞数据

image.png

技术平台漏洞数据分析

  1. Java 平台漏洞数据分析

Java
是一种可以撰写跨平台应用软件的面向对象的程序设计语言,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群,故而 Oracle 公司产品中 Java平台漏洞数量最多,同时影响范围也相对较广。Java 平台漏洞数量波动较大,平均每年87个。2011 年 Java 平台漏洞数量仅 3 个,在 2012 和 2013年出现迅猛增长,2013年达到近五年最大值 180 个,2014 年漏洞数量开始减少,降低至115 个,2015 年继续减少,仅为 80 个。

  1. .NET 平台漏洞数据分析

    .NET平台因未能采集到详细数据,暂时无法提供相应对比数据。

0

评论区