前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java VS .NET:Java与.NET的特点对比

Java VS .NET:Java与.NET的特点对比

作者头像
KenTalk
发布2018-09-11 14:22:40
2.3K0
发布2018-09-11 14:22:40
举报
文章被收录于专栏:Ken的杂谈
一、前言
  • 为什么要写Java跟.NET对比?

.NET出生之后就带着Java的影子。从模仿到创新,.NET平台也越来越成熟。他们不同的支持者也经常因为孰弱孰强的问题争论不休。但是本文并不是为了一分高下。而是针对Java平台跟.NET平台做一些对比。主要围绕项目构建、Web框架、项目部署展开讨论。相信经过这些讨论可以让Java/.NET工程师对Java平台、.NET平台有更好的了解。

二、项目构建
  • 项目构建工具

工欲善其事必先利其器。开发环境配置+工具使用当然要先讲了。

1、表面上的工具

平台

工具

ken.io的解释

.NET

Visual Studio

微软官方IDE,它具备了开发.NET应用程序的几乎所有工具

Java

Idea/Eclipse

IDE,负责管理项目以及代码的运行调试等,依赖于JDK

Java

Maven

负责管理项目模板、打包(jar包等),依赖于JDK

Java

JDK

JRE(Java项目运行环境),Java工具(编译器等)

.NET工程师要开展工作,安装Visual Studio(后面简称:VS)就可以进行开发了。但是Java开发,只安装IDE是不行的,就算某些IDE会自动安装JDK,甚至是Maven,但是这些还是需要自己配置,不然还可能会踩坑。从开发环境的配置来说,.NET工程师操作上确实简单一些,一直下一步,等待安装完成即可。Java工程师就先要了解下工具,以及各个工具的职责。然后逐一配置。

从这个点上来说,Java的入门曲线会稍陡一些,但是Java工程师也会比.NET工程师更有机会关注到项目构建的一些细节。

2、实际上的工具

职责

.NET平台

Java平台

ken.io的解释

项目管理

VS

IDEA/Eclips

.NET只有微软官方IDE,Java没有官方的IDE,没有VS好用,但是有多个选择

项目模板

VS+MSBuild

IDE+Maven

.NET项目的模板是VS自带的,是直接符合MSBuild(编译器)标准的,项目由sln+csproj文件组织,Java平台编译器的标准是公开的,目前主流项目都是基于Maven模板来创建,项目由pom.xml文件组织。

编译&调试

VS+MSBuild+SDK

IDE+Maven+SDK

.NET平台的编译器是独立的,Java平台的编译器是集成在JDK中,Maven模板的项目是由pom.xml文件组织,但是编译器并不是认识pom.xml,所以编译需要Maven的参与

Package管理

NuGet

Maven

Nuget是微软官方开源的VS插件,Maven是Apache下的开源项目。ken.io觉得Maven更灵活、强大。NuGet容易上手。

打包/发布

VS+MSBuild+SDK

IDE+Maven+SDK

.NET平台的编译器是独立的,Java平台的编译器是集成在JDK中,Maven模板的项目是由pom.xml文件组织的,但是编译器并不是认识pom.xml,所以打包需要Maven的参与。IDE主要是提供图形化界面替代命令操作

从项目管理上说。VS这个IDE更好用一些,项目模板上,.NET平台Visual Studio提供了丰富的项目模板而且简单易用,Java平台目前的主流是Maven模板,比较灵活。但是多Module/Project的组织跟管理,没有Visual Studio方便

其实大部分差异都是编译器跟模板带来的差异。.NET平台主流的编译器是MSBuild,MSBuild提供的标准,Visual Studio按照标准提供了基于.sln文件+csproj文件的项目模板。并且官方提供了丰富好用的模板

Java平台的编译器的编译配置是xml文档,由于Java官方没有项目模板,IDE只负责帮你组织项目,但是并没有模板,你可以将任意目录指定为SourceRoot(代码根目录),ResourceRoot(资源文件根目录:比如配置文件)也可以任意指定,编译的时候,IDE会将你的项目代码,以及编译器所需要的编译描述/配置xml文档告诉编译器该如何编译你的项目。确实非常灵活,但是也增加了项目管理的成本。包的管理也非常麻烦,还好有Maven结束了这个混沌的Java世界。

  • 编码特点

.NET

Java

类的组织

namespace:命名空间,name跟目录无关

Package:name跟目录名一致

.cs文件:类名跟文件名无关

.java文件,类名跟文件名无关,但一个类文件只能定义一个public类

编译产出

.dll,.exe文件

.jar,.war文件

三、框架

.NET的Web框架基本上都是微软官方的,官方的框架也最为流行,而Java平台,除了官方提供的Servlet API(相当于.NET的System.Web)其他的基本都由Spring大家族统治了。本次我们主要对比目前Web开发最常用的MVC框架以及持久层框架

功能

.NET

Java

ken.io的说明

Web核心

ASP.NET

Servlet

Web框架

ASP.NET MVC

Spring MVC

ASP.NET MVC是微软官方框架,Srping MVC框架隶属于Spring大家族,依赖于Spring

视图引擎

Razor

Thymeleaf/FreeMarker

Razor是微软官方的视图引擎,非常好用,Spring MVC并没有视图引擎,但是有Thymeleaf,FreeMarker。ken.io更喜欢Razor的风格

持久层

Entity Framework

MyBatis

EF是微软官方的持久层框架,易上手、开发效率高但有一定侵入性。MyBatis配置灵活,强大,无侵入性,但开发效率不如EF

.NET平台的框架由于都是微软官方的,比较好组织,上手容易。Java平台的框架,灵活可配置。这也是Java平台一贯的风格。但是ken.io不得不吐槽的是,Spring MVC作为一个MVC框架,竟然没有自己的视图引擎,那MVC种的View去哪了? 可能是因为Java作为Web后端的主力平台,确实很少关注视图层,但是Spring MVC没有View层引擎,还是感觉不合适。Thymeleaf跟FreeMarker,ken.io更推荐FreeMarker。因为ken.io更喜欢FreeMaker的语法。可能是用惯了Razor的缘故。

四、项目部署

对于项目部署。.NET平台貌似没得选,只能选Windows+IIS,虽然有Mono,但毕竟不是支持所有的类库。而Java平台既可以选择Windows+Tomcat,也可以选择Linux+Tomcat。但是通常会选择Linux+Tomcat毕竟成本低。

职责

.NET

Java

操作系统

Windows Server

Windows Server、Linux Server

Web服务器

IIS

Tomcat(Tomcat是目前最主流的,也有其他的Servlet容易例如:JBoss)

不过Java平台的特性,Java项目的部署会比.NET项目部署偏麻烦一些。 IIS图形化界面一直下一步,再调整下应用程序池的版本就行了。而Tomcat不论是在Windows,还是在Linux,都通过修改配置文件完成站点配置。

五、后记
  • 总结

不管是Java平台还是.NET平台都有各自的优势。平台只是一个工具,我们了解平台都是为了做出更好的选择。但不得不说,Java开源生态的发展势头迅猛,非其他平台可比,不过.NET平台也在弥补自己的短板而推出了.NET Core。期望以后不论是Java还是.NET都能欣欣向荣。

  • 备注

.NET程序猿,如果要学习Java,可以看看ken.io写的教程 Java快速入门系列教程:https://ken.io/serie/java-quickstart

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/07/31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、项目构建
  • 三、框架
  • 四、项目部署
  • 五、后记
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档