大同世界的Java 和.NET 开发
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 开发的更多相关文章
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- Java和WebSocket开发网页聊天室
小编心语:咳咳咳,今天又是聊天室,到现在为止小编已经分享了不下两个了,这一次跟之前的又不大相同,这一次是网页聊天室,具体怎么着,还请各位看官往下看~ Java和WebSocket开发网页聊天室 一.项 ...
- ubuntu上用eclipse搭建java、python开发环境
上一篇文章讲到如何在windwos上用eclipse搭建java.python开发环境,这一讲将关注如何在ubuntu上实现搭建,本人使用虚拟机安装的ubuntu系统,系统版本为:14.04 lts ...
- java web的开发 知识要点
近期闲下来时写的一个有关 java web的开发 的 常用架构 的总结,用于初 学 者或团队新人培训. Java开发初步.ppt SSH 为 struts+spring+hibernate 的一个集 ...
- Java在Web开发语言上败给了PHP
PHP的主要语言开发者之一.Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言.他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java ...
- JAVA EE企业级开发四步走完全攻略 [转]
http://bbs.51cto.com/thread-550558-1.html 本文是J2EE企业级开发四步走完全攻略索引,因内容比较广泛,涉及整个JAVA EE开发相关知识,这是一个长期的计划, ...
- Java Web高性能开发(三)
今日要闻: Clarifai:可识别视频中物体 最近几年,得益于深度学习技术的发展,谷歌和Facebook等企业的研究人员在图形识别软件领域取得了重大突破.现在,一家名为Clarifai的创业公司则提 ...
- Java Web高性能开发(二)
今日要闻: 性价比是个骗局: 对某个产品学上三五天个把月,然后就要花最少的钱买最多最好的东西占最大的便宜. 感谢万能的互联网,他顺利得手,顺便享受了智商上的无上满足以及居高临下的优越感--你们一千块买 ...
- tomcat免重启随意更改java代码 提高开发效率
转载:http://developer.51cto.com/art/201012/241243.htm 做为了一个java开发人员,总是为因为要增加一个类,或是增加删除一个方法,甚至修改一个小处代码而 ...
随机推荐
- Linux ifconfig命令详解
ifconfig(interfaces config).通常需要以root身份登录或使用sudo来使用ifconfig工具 ifconfig 命令用来查看和配置网络设备.当网络环境发生改变时可通过此命 ...
- CSS学习摘要-语法和选择器
主要摘自网络开发者. 从最基本的层次来看,CSS是由两块内容组合而成的: 属性(Property):一些人类可理解的标识符,这些标识符指出你想修改哪一些样式,例如:字体,宽度,背景颜色等. 属性值(V ...
- PHP安装posix、pctl扩展
安装问题 PHP Fatal error: Uncaught Error: Call to undefined function tsingsun\swoole\server\posix_kill() ...
- ZT Android 4.2蓝牙介绍
Android 4.2蓝牙介绍 分类: Android开发系列 2013-06-27 14:16 7110人阅读 评论(22) 收藏 举报 目录(?)[-] Android 42蓝牙介绍 一 蓝牙规 ...
- [2018HN省队集训D5T1] 沼泽地marshland
[2018HN省队集训D5T1] 沼泽地marshland 题意 给定一张 \(n\times n\) 的棋盘, 对于位置 \((x,y)\), 若 \(x+y\) 为奇数则可能有一个正权值. 你可以 ...
- 浅谈MyBatis缓存
在谈论MyBatis的缓存之前,我们先说说它的延迟加载,所谓延迟加载, resultMap中的association和collection标签具有延迟加载的功能.延迟加载的意思是说,在关联查询时,利用 ...
- Java8系列之重新认识HashMap(转)
原文出处: 前利 简介 Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap.Hashtable.LinkedHashMap和Tree ...
- 禁用wps的云文档,恢复到清爽的状态
wps安装完成后,默认会开启云文档功能,每次打开表格.文档都会显示乱七八糟的一些东西,很麻烦 不得已只好手动为wps“瘦身”: 在wps表格或者文档的快捷方式上右键,选择打开文件所在位置 找到一个最新 ...
- 1003. [ZJOI2006]物流运输【区间DP+最短路】
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转 停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严 ...
- 1562. [NOI2009]变换序列【二分图】
Description Input Output Sample Input 5 1 1 2 2 1 Sample Output 1 2 4 0 3 HINT 30%的数据中N≤50: 60%的数据中N ...