1.作为一个科班出生的根正苗红的软件开发人员,我认为现在的一群年轻的程序员总是在讨论JAVA  好还是.NET 好的同时,我作为一个做4年开发的.NET 程序员中间穿插了1年JAVA 开发的来说更加的具有发言的资格。

2.其实作为一个开发人员来说真的没有必要说java 好还是.net 好 其实我认为没有什么可比较的。在我没有做java之前我个人认为微软的VS 2017 IDE开发工具真的是很好用这个是无可厚非的。目前java的开发工具IDEA 2018 和Ecplise 也还挺好用。

3.我对任何一门语言都没有宗教式狂热崇拜,因此我也相对理性的对整个问题进行分析。 必要和技术进行谈恋爱。顺势而为,目前公司做的都是一些政府的项目,需要什么技术开发我们就学习什么技术,没比要执著于.NET开发 还是java 开发。从16年5月份上手做java 开发 网上的文档找找然后找了一些Java EE 的教学视频 看看 和书籍看看 基础语法部分都不用需要看太多的时间,基本上和C# 的语法差不多,但是java 给我的感觉就是语法很Low 什么都是需要配置,陪服务器配置环境配置之前我用网上java 的一个开源的框架 zheng是基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。我配置起来折腾了一天才跑起来整个项目,我当时就想如果是.NET 项目我就10-20分钟足以看出来,跑起来一个javaWeb的项目真是不容易的。C# 的语法简洁而且优美但是底层用的是微软的集成的.netFramework 性能实在是不怎么好,这个是无可厚非的,你可以试一下用微软的Linq lambda 表达式 或者参数化SQL ADO.NET 查询一条数据 和用java 做个最基础的JDBC 的查询。性能快慢差的不是一点两点的。但是说句内心话,如果客户对于开发语言和平台没有什么要求,我还是喜欢用.NET Core 开发 因为VS 2017 应用C# 语言开发的真是快做Web 项目我用使用WebApi+MVC+CodeFrist +BootStap3.4 开发真的是快,我前端目前还是习惯使用BootStrap 而且移动端我还是喜欢用WeUI 做开发。

4.其实说句真心话我工作也有多年了,但是技术嘛也是在不断的提高到最后工作找来换去的,最后还是写业务逻辑代码,技术的本质我认为没有什么变化,但是按照目前南京的行情以及整个互联网的行情来看Java 的岗位确实是最多的。为啥了因为国人更喜欢热衷于开源,目前来说.NetCore  以及Mono  在Linux 运行也还是不错的。但是国人开发就是喜欢用Java 这个没办法回避的。我作为一个公司的项目负责人 兼任项目开发,目前我公司许多和政府合作的项目都是应用.Net开发的。.Net开发真的很快。

5.从2018年开始公司进行不断的进行招人,.Net 招聘了半年有面试的但是却没有合适的,Java 倒是招进来不少,几年过后说不定南京就剩下我们这一群老家伙了在做.Net 了。Java入门门槛会比较高一些但是有开发的基础学什么都比较快的,需要有足够的毅力和百折不挠的精神,只要你能坚持下来你就可以将很多人在入门门槛上就将很多竞争者甩在身后。.Net入门门槛比较低,装上VisualStudio就可以马上进行开发,不需要进行太多的配置 这样可以很轻松的掌握入门.Net学习,是有很成就感的事情,能让你有兴趣进一步学习,但是你不能止步于此,因此你会发现身边也有无数的人也是“轻松入门”,你就需要继续深入学习,深入学习同样需要毅力和探索的精神。

6.目前公司的技术我决定后面的政府的新项目都采用Java Web 来进行开发,我学习JavaWeb 也接近一年多了,一边摸索一边干项目时间久了也就习惯了,真心话 Java 的开发工具啥的真是不太人性化,但是没办法只能忍痛割爱了。上手做Java 开发,公司的要求,其实技术学到3-5年 技术也就基本纯熟了,你说后面你在深入学习,只是为了准备而已 ,什么分布式 缓存 啥的客户不要求,那你做这个工作毫无意义对吧,数据量就200-300w 左右。

其中实际应用的开发的工具

职责 .NET平台 Java平台 解释
项目管理 VS2010-2019 IDEA2018/Eclips2018 .NET只有微软官方IDE,Java没有官方的IDE,没有VS好用,但是有多个选择
项目模板 VS2010+MSBuild 开发 IDE+Maven .NET项目的模板是VS自带的,是直接符合MSBuild(编译器)标准的,项目由sln+csproj文件组织,Java平台编译器的标准是公开的,目前主流项目都是基于Maven模板来创建,项目由pom.xml文件组织。
编译&调试 VS2010+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容易上手。
打包/发布 VS2010+MSBuild+SDK IDE+Maven+SDK .NET平台的编译器是独立的,Java平台的编译器是集成在JDK中,Maven模板的项目是由pom.xml文件组织的,但是编译器并不是认识pom.xml,所以打包需要Maven的参与。IDE主要是提供图形化界面替代命令操作

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配置灵活,无侵入性。各有利弊。

.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,都通过修改配置文件完成站点配置。

7.马上就2019年了平常继续将Java 基础 以及一些Java Web SSM+MYSQL SSH+MYSQL  Redis 一些常用的技术学习好就可以了,学习太多的新技术用不到也是没办法,对于一个开发来说 我最看重的还是一个人快速解决问题的能力和 不段的学习能力。

部分文字引用:https://www.cnblogs.com/ken-io/p/java-vs-dotnet.html  的博客

2018/12/04  23:40 :30

大同世界的Java 和.NET 开发的更多相关文章

  1. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  2. Java和WebSocket开发网页聊天室

    小编心语:咳咳咳,今天又是聊天室,到现在为止小编已经分享了不下两个了,这一次跟之前的又不大相同,这一次是网页聊天室,具体怎么着,还请各位看官往下看~ Java和WebSocket开发网页聊天室 一.项 ...

  3. ubuntu上用eclipse搭建java、python开发环境

    上一篇文章讲到如何在windwos上用eclipse搭建java.python开发环境,这一讲将关注如何在ubuntu上实现搭建,本人使用虚拟机安装的ubuntu系统,系统版本为:14.04 lts ...

  4. java web的开发 知识要点

    近期闲下来时写的一个有关 java web的开发 的 常用架构 的总结,用于初 学 者或团队新人培训. Java开发初步.ppt SSH  为 struts+spring+hibernate 的一个集 ...

  5. Java在Web开发语言上败给了PHP

    PHP的主要语言开发者之一.Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言.他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java ...

  6. JAVA EE企业级开发四步走完全攻略 [转]

    http://bbs.51cto.com/thread-550558-1.html 本文是J2EE企业级开发四步走完全攻略索引,因内容比较广泛,涉及整个JAVA EE开发相关知识,这是一个长期的计划, ...

  7. Java Web高性能开发(三)

    今日要闻: Clarifai:可识别视频中物体 最近几年,得益于深度学习技术的发展,谷歌和Facebook等企业的研究人员在图形识别软件领域取得了重大突破.现在,一家名为Clarifai的创业公司则提 ...

  8. Java Web高性能开发(二)

    今日要闻: 性价比是个骗局: 对某个产品学上三五天个把月,然后就要花最少的钱买最多最好的东西占最大的便宜. 感谢万能的互联网,他顺利得手,顺便享受了智商上的无上满足以及居高临下的优越感--你们一千块买 ...

  9. tomcat免重启随意更改java代码 提高开发效率

    转载:http://developer.51cto.com/art/201012/241243.htm 做为了一个java开发人员,总是为因为要增加一个类,或是增加删除一个方法,甚至修改一个小处代码而 ...

随机推荐

  1. Python学习---IO的异步[asyncio +aiohttp模块]

    aiohttp aiohttp是在asyncio模块基础上封装的一个支持HTTP请求的模块,内容比8.4.2[基于asyncio实现利用TCP模拟HTTP请求]更全面 安装aiohttp: pip3 ...

  2. 事后诸葛亮之Alpha十天冲刺之失败总结

    参考自构建之法p341页的模板 首先自己预计了一下,项目gg的可能有百分之50这里面有百分之80是我的责任.冲刺失败我承担主要责任. 1.设想和目标: 1.计划实现类似华为云的小功能之团队合作开发功能 ...

  3. Python内置函数.md

    Python3 内置函数 abs(x) 返回一个数的绝对值.参数可以是一个整数或者一个浮点数.如果参数是一个复数,那么将返回它的模. >>> abs(-123456) 123456 ...

  4. HBase学习之路 (七)HBase 原理

    系统架构 错误图解 这张图是有一个错误点:应该是每一个 RegionServer 就只有一个 HLog,而不是一个 Region 有一个 HLog. 正确图解 从HBase的架构图上可以看出,HBas ...

  5. 分布式唯一ID的几种生成方案

    前言 在互联网的业务系统中,涉及到各种各样的ID,如在支付系统中就会有支付ID.退款ID等.那一般生成ID都有哪些解决方案呢?特别是在复杂的分布式系统业务场景中,我们应该采用哪种适合自己的解决方案是十 ...

  6. js之checkbox判断常用示例

    checkbox常用示例可参考: 关于checkbox自动选中 checkbox选中并通过ajax传数组到后台接收 MP实战系列(十三)之批量修改操作(前后台异步交互) 本次说的是,还是关于智能门锁开 ...

  7. django admin自定义

    django admin自定义 class CustomerAdmin(admin.ModelAdmin): list_display = ('id','name','qq','consultant' ...

  8. Spring源码分析(十七)循环依赖

    本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 实例化bean是一个非常复杂的过程,而其中比较难以理解的就是对循环依赖的解决, ...

  9. ruby安装及webStorm配置SCSS

    sass安装: 步骤:(window系统) 1.下载RubyInstaller(v2.4.3),运行安装,基本直接next安装,不过有个add to PATH的选项一定要勾选,这样就不用配置环境变量. ...

  10. UITapGestureRecognizer 的用法(轻触手势识别器)

    最近在项目中用到了手势操作,键盘回收时还是挺常用的,现在总结下,多谢网络上大神们的分享. 先分享下我在项目中用的代码: UITapGestureRecognizer * mytap=[[UITapGe ...