大同世界的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系统重要的开机自启动的服务
重要的开机自启动的服务 1.sshd 连接Linux服务器是需要用到的服务程序 2.rsyslog 操作日志的一种机制 系统日志:/var/log/message ...
- Programming Assignment 4: Boggle
编程作业四 作业链接:Boggle & Checklist 我的代码:BoggleSolver.java 问题简介 Boggle 是一个文字游戏,有 16 个每面都有字母的骰子,开始随机将它们 ...
- quartz(转)
1. CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 ...
- 起床困难综合症 NOI_2014_D1T1
这道题的正解其实没什么好说的,反而是部分分设计非常巧妙. 之所以要单开一篇是因为当时机房的部分同学刚学位运算,我拿这个题去讲想毒瘤大家一下,于是做了一个挺好看的课件. ppt -> pdf -& ...
- BZOJ2729:[HNOI2012]排队(组合数学)
Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不 ...
- Java认证与授权服务JAAS基础概念
转:http://www.nosqlnotes.com/technotes/jaas-concept/ JAAS是”Java Authentication and Authorization Serv ...
- 【转】[置顶] 在Android中显示GIF动画
gif图动画在Android中还是比较常用的,比如像新浪微博中,有很多gif图片,而且展示非常好,所以我也想弄一个.经过我多方的搜索资料和整理,终于弄出来了,其实github上有很多开源的gif的展示 ...
- Sequelize-nodejs-4-Model usage
Model usage模型使用 Data retrieval / Finders Finder methods are intended to query data from the database ...
- jQuery内容横向拖拽滚动
如果有业务需求:使用横向滚动,而又不想用滚动条,可以使用横向拖拽滚动,主要是利用元素的scrollLeft特性: 废话不多说直接上代码: css: .box{ width:100%; height:3 ...
- Python的多线程和多进程
(1)多线程的产生并不是因为发明了多核CPU甚至现在有多个CPU+多核的硬件,也不是因为多线程CPU运行效率比单线程高.单从CPU的运行效率上考虑,单任务进程及单线程效率是最高的,因为CPU没有任何进 ...