.NET转Java
懂C#的话,转Java也不是那么难,毕竟,语言语法还是相似的.尝试了下Java,说说自己的体会吧.
一,Java和C#都是完全面向对象的语言。在面向对象编程的三大原则方面,这两种语言接近得不能再接近。不过也有一些差别,不过不多,稍微习惯下就好了,
比如:
集合:两种语言都有集合ArrayList,还有通过键访问值的Java中是HashMap而c#中是HashTable。c#比Java多泛型集合List<T>与Dictionary<K,V>更容易了,无需拆箱装箱了,更安全了。
继承:Java中用关键字extends,c#只用“:”就行了。调用父类的构造方法Java用super关键字,而c#用base关键字。
属性:java中定义和访问均要用get和set方法,可以不成对出现。c#中是真正的属性,访问时用.号即可。
事件。Java中没有(Java通过实现自定义侦听器类执行事件)。C#定义了类似于函数指针的委托来实现事件。
等等...
二,Java Web和ASP.NET也是有相似的,java web的核心是Servlet,Jsp其实本质都是Servlet,而Servlet的流程可以比较清晰看到整个前后台是怎么工作的,类似.NET的ashx一般处理程序,Java是MVC的主要倡导者,随着web技术发展,Servlet主要被当作Control使用,Jsp作为View使用,这在许多MCV框架有所体现.得益于开源社区的活跃,流行的Java MVC框架都比较成熟了.而ASP.NET MVC(虽然我没有用过,大概了解过)感觉使用起来应该不是很舒服把.貌似ASP.NET MVC也还没有推广开来.很多.NET程序员做Web还是停留在服务端控件.不是Webform不好,而是微软会把我们宠坏.感觉Webform不够优雅,耦合太高,个人接触过Java Web后觉得MVC在大多场景下更胜一筹.
目前接触过的MVC框架是Struts2,常用在展示层,前台页面展示与控制页面跳转。建立一个工程,都会有一个web.xml文件,是整个工程的主配置文件。其它框架的集成首先是在这个配置文件里面进行的。Struts也有一个主配置文件struts.xml,工程中所有配置的Action都是在这个配置文件中配置的。Action是Struts的核心,其实就是控制页面跳转用的,每个页面和后台的数据交互或者跳转到另外的页面都通过action进行。 具体使用看看相关的文档.
三,Java的框架五花八门,有名的全功能栈Spring框架,MVC框架Struts2,SpringMVC(Spring的子项),数据持久层框架 MyBatis,Hibernate,模板引擎FreeMarker,Velocity,框架有框架的好处也有坏处,使用框架无非就是提高生产力,降低测试维护成本,保证系统性能.但是不适合的使用框架只会加重系统复杂度,降低系统性能,增加维护难度.什么时候使用框架什么时候不用,要详细斟酌在做取舍.目前只接触过Struts2,因为做的一些小项目直接Servlet+Jsp+Jdbc就好了,打好基础还是比较重要的,以后在项目慢慢接触使用吧.
总的来说吧,微软的生态环境的不给力留给.NET的面越来越窄,Java生态圈的局面是前途一片光明,选择开源的Java是有原因的,丰富的资料,各种解决方案可选择.曾今遇到一个要实现浏览器post svg到后台转png图片的功能,好不容易在git上找到一个开源的库,一用bug很多,而java Apache下的batik却是相当完善.最后是通过后台cmd调用batik来实现,怎一个悲剧.曾今也在windows phone上抱有兴趣,做了几个demo app发现封闭的wp的api还是太少,招聘wp开发的少之又少.当然C#依然是最优美的语言,Visual Studio依然是最完美的IDE. .NET程序员们该多接触下其他语言开发平台,至少当作开拓下视野吧.
.NET转Java的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
- c#与java的区别
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...
随机推荐
- Javascript正则表达式的初步学习
<html> <head> <meta charset="utf-8"> <title>正则表达式的学习</title> ...
- Python错误、调试和测试
try: print('try...') r = 10 / int('a') print('result:', r) except ValueError as e: print('ValueError ...
- curl上传、下载、https登陆
1.下载 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "ftp://127.0.0.1/downtest.txt"); cur ...
- C#窗体全屏功能
最近有朋友让我给他弄个应用程序全屏的功能,例如银行的取号程序界面.所以我从网上查询了一些实现的方法. C#应用程序中如何实现全屏幕显示功能? 效果就像windows自带的屏幕保护程序和众多的游戏那样, ...
- 高可用性、负载均衡的mysql集群解决方案
高可用性.负载均衡的mysql集群解决方案 一.mysql的市场占有率 二.mysql为什么受到如此的欢迎 三.mysql数据库系统的优缺点 四.网络服务器的需求 五.什么是mysql的集群 六.什么 ...
- HTML5手机APP开发入(4)
HTML5手机APP开发入(4) 课程内容 完成一个自定义的Component用来展现通讯录用户的明细信息如下图 http://bootsnipp.com/snippets/featured/prof ...
- URLEncode与URLDecode总结与实现
URLEncode: 用于编码URL字符串,数字和字母保持不变,空格变为'+',其他(如:中文字符)先转换为十六进制表示,然后在每个字节前面加一个标识符%,例如:“啊”字 Ascii的十六进制是0xB ...
- eoe移动开发社区创始人兼CEO靳岩:开发者缺极客精神
(国内知名Android开发论坛eoe开发者社区推荐:http://www.eoeandroid.com/) [媒体专稿]移动互联网在中国的深入发展已经有5.6个年头,从当初苹果推出iPh ...
- IIS网站属性中没有ASP.NET选项
打开IIS6,右击属性,居然没有发现ASP.NET的配置选项,虽然好久没搞这个了,但是印象中绝对是有一个ASP.NET选项卡的.我很奇怪,我以为是.net framework 2.0没安装,下载下来安 ...
- 把C编译成javascript的方法
把C编译成javascript的方法,便于嵌入到HTML5中 https://github.com/kripken/emscripten