[转].NET与JAVA

From: http://blog.sina.com.cn/s/blog_4b2cf31e010007vh.html (本人做了格式整理)

  自从.NET问世以来,程序员都很关心的一个问题是「该学Java或.NET」。我也在挣扎,该「该继续Java的研究,或者该开始准备培养.NET的知识」。
  最好是能两者兼顾,但是每个人的时间都很有限,想要兼顾两者,其实不太容易。投入在.NET的时间越多,所能花费在Java的时间自然就少了,反之亦然。在信息爆炸的时代,重要的不是信息的取得,而是信息的抉择。信息太多,时间太少,如果不能慎选适合的技术,只会平白浪费许多时间,斫丧自己的竞争力。

  由于我喜新厌旧的个性使然,过去这两年半,我着实花了不少时间在.NET上,对于.NET的认识越来越深,也修正了对于.NET原先的一些误解,渐渐的认同.NET的许多技术理念。姑且不论我们对于微软是褒是贬,单纯就技术本身来看,.NET的确是很卓越的。

  我并不是唯一一个这样想的人。以「Thinking in Java」等技术书籍广受欢迎的Bruce Eckel也是如此。他原本认为C#和.NET只是Java的模仿者,并无新意,但是在深入了解之后,才发现C#和.NET其实是改良版的Java,不管在各方面,都有比Java更突出之处。当我看到Bruce Eckel说出这样的话,我感觉他说出了我的心声。

-----------------------------------------

apollo_dsa
[伴读书童]
  都会有,但是两者都学是学不过来的,挑一个学好比较好,多不如精嘛

  回答时间:2006-12-07 14:11:02  

ahmedstan.0214
[伴读书童]
  我们相信使用存储过程的.NET实现不但是一种比J2EE BMP模型更为高级的设计模式,而且还能提供比其更好的性能和扩展性。该应用程序的两个版本的基准数据证实了这一点。J2EE中的任何一层不依赖于特定的产品,所以不用存储过程,并不是因为设计模式。
  基于J2EE的解决方案要引入这些特性是轻而易举的,至少我在Java项目中也使用Cache和XML Web Service,并不觉得扩展很麻烦,相反我可以自己组态,深入事务内部。而且EJB2.0中大大提高了CMP应用场合的兼容性,这可是.Net尚不具备的(ASP.Net服务器控件中还没有类似的功能)

  下面稍微比较一下两种解决方案:(以下纯属个人观点)

  性能方面:
  最终用户衡量的唯一标准:
  性能瓶颈主要在中间层以下:EJB1.0或EJB1.1的效率确实不怎么样,不如轻量级的解决方案性能来得好,比如:硬编码直接访问数据库,对象关系映射,采用存储过程封装商业逻辑,采用对象库存储。特别是BMP管理起来代码文件特别多,发生业务变更时更需要重新配置服务器,影响了业务的连续性,但.Net 的解决方案也不见得好啊!
  页面缓存和对象缓存:J2EE没有相应的标准,但某些应用服务器扩展提供了相应的标准,用法不一,提供的功能也不相同。

  开发效率方面:
  对我们来说选择开发工具的最需要衡量的就是这一因素:
  表现层开发:J2EE这方面非常欠缺,把这一任务丢给了应用服务器厂商和编程人员,不象.Net拥有很牛的.Net Studio,不过Jbuilder 6已经出来了,支持EJB2.0 也不算太落后,但一直没有解决方案的就是页面用户控件(当然Turbine的Action Event也算一种),缺乏可视化设计和Servlet应用程序框架生成。我期望的一种方式是具有象.Net Studio一样的可以所见即所得的编辑模板(Template),绑定用户按钮事件处理。目前可以通过javascript库,模板库及宏库略微缓解一下Servlet的开发。ASP .Net和Servlet都支持动态更新表现层。

  商业逻辑层开发:
  在这层的工作应成为高级程序员的重点而且应作为公司财产保护起来,大家的精力主要是要维护起公司商业库的升级和功能扩展,并进行良好的配置管理(应采用ClearCase,CVS对库的管理能力太差啦!)。

配置及发布:
  发布和配置应完全独立开来,所有的配置项都应该可调(路径,数据库连接,EJB描述文件等),很可能正式发布的数据库表名,字段定义并不和开发人员的一致(如果开发产品的话,这点很重要!)
  .Net只能通过存储过程方式来提供所谓的解决方案,而J2EE这方面做得非常全面,如果商业库是符合发布迁移规范的,系统管理员完全可以做到任何细节可控。这一过程需要商业逻辑层开发人员的努力。

  XML支持能力:
  .Net一直叫嚣的就是我集成了XML和Web Service,但JDK1.4也搞出了XML规范,这方面已经差不多了,不过.Net的易用性好得很,而且就此一家,程序员不必费心思选组件或产品。
  在采用XML和XSLT的开发模式中:微软的SQL Server 2000直接提供了HTTP Query到XML数据的功能,不过我用dbxml也能做得这一点嘛,还适用于大多数的主流RDBMS,更牛!这种开发模式应该是未来的方向。

  分布式组件,消息服务和事务服务支持等方面:我的经验不足还不能评价:
  .Net用COM,DCOM,MSMQ和MTS
  J2EE用EJB,JMS和JTS

  安全性方面:
  通过网页授权方式:
  .Net支持的验证方式:Windows, Forms, Passport,None
  Servlet支持通过扩展也能支持这些,而且通过丰富的加密算法(例如AES)也很容易集成到自己的解决方案中Passport足以显示微软的野心,不过其安全性有漏洞。

-----------------------------------------

.NET和J2EE该相互学习什么

  技术之间是相通的,精于触类旁通,善于联想是我们程序员应有的优势。我们在专注.NET技术的时候,不妨在工作间隙休息的时候看看. NET外面的世界。

  提到.NET和J2EE,一般都会想到它们之间兵戎相见,水火不容的关系,毕竟两者都在努力地去虏获程序员的青睐,占领更多的市场份额。我无意去鼓吹.NET是如何如何之强大,J2EE是如何如何的成熟,也无意去探究NHibernate,Spring.NET等等Project的起源,只想从一个程序员的角度去看待两者在互相竞争的过程当中到底相互借鉴了什么,同时探讨一下同时了解两个领域知识的必要性。

  第一次接触到ASP.NET的时候,第一个感觉就是,它比ASP好多了,再也不用像写ASP那样在HTML嵌套着一堆堆的Scriptlet,动态内容的呈现都包含在一个个方法中,如Page.OnInit()和Page.OnLoad()等等,这些方法中有Client端JS方法的影子。在开发ASP.NET页面的过程中,需要做的就是在页面中引入不同的Web Control或者是HTML Control,这些Controls与HTML标签是何等的类似,除了它有ASP的prefix和那时看起来如Magic一般的runat="server"。这样的相似性让熟悉HTML和JS的人很快能掌握ASP.NET的基本应用,ASP.NET所带来的进步是革命性的,难怪有朋友认为ASP.NET是.NET家族中最为成功的产品了。
  如果只是拿ASP.NET来跟ASP作对比,其优越性自然显露无遗,尤其是在控件设计方面的优势。事实上与J2EE的开发相比,ASP.NET的开发方式仍然有很大优势。Microsoft在技术的创新上一直秉持削弱领域开发特性的原则,让开发人员能够在不同的开发领域中都可以轻松上手,游刃有余。ASP.NET的出现带来了WebForm,而在桌面程序开发中则有WinForm,两者相通的地方随处可见,这让原有的桌面程序开发人员可以平滑的过渡到Web Application开发中来;ASP.NET对于控件在设计以及使用上的支持堪称完美,也为网页设计人员进入ASP.NET开发领域扫除了不少的障碍。
  反观J2EE领域,做Swing开发的人员,如果要学习Web的开发,原有的知识几乎无用武之地了。在这个人气就是财富的年代,在一定层面上求同存异,让开发人员能够一通百通,无疑是一个十分明智的做法。J2EE领域也开始意识到了这一点,将Swing概念应用到Web开发的Wicket Framwork的发布着实是一个极大的进步啊。J2EE在降低Web开发的难度,吸引入门级开发人员方面需要向.NET好好请教一番了。

  在这个技术如此Open的年代,.NET的程序员应该去了解J2EE,反之亦然。我想,相互学习,共同进步最好。

  回答时间:2006-12-07 18:34:08  

 

时间: 2024-08-04 11:16:01

[转].NET与JAVA的相关文章

诊断 Java 代码:设计轻松的代码维护

设计 本月,Eric Allen 解释了在使代码更易于维护的同时,避免和控制无理由的变化怎么会是保持代码健壮性的关键.他集中讨论了诸如函数样式代码编写之类的概念,以及标记字段.方法和类的方法来处理并防止可变性.Eric 还解释了本任务中单元测试和重构的角色,并提供了协助实现重构的两个工具.在相关论坛中与作者和其他读者分享您对本文的看法.(您也可以单击本文顶部或底部的"讨论",访问该论坛.)有效调试源自良好的编程.设计易于维护的程序是程序员面临的最困难挑战之一,其部分原因在于程序通常并不

win7上java环境变量设置方法

  Java程序依赖JDK,就像C#程序依赖.NetFrameWork一样. 所以在开发之前,必须在win7或者是linux上,安装jdk(JavaDevelopkit)里面包括java一些工具,还有JRE(JavaRuntimeEnvironment)Java运行环境. 系统:windows7 jdk版本:jdk1.7 安装路径:c:/java 安装JDK时,上图显示的公共JRE和后续单独安装的JRE是一样的.所以只装一个就可以了. 按如上步骤操作,显示出环境变量的配置界面. 新建,添加 变量

Java新手入门教程:新手必须掌握的30条Java基本概念

  Java新手必看教程是什么?当然是绿茶小编带来的Java入门需掌握的30个基本概念啦,掌握了这些概念对于学习Java大大有利,正在学习Java编程的同学们快来看看吧. 1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构 是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,很大 限度上

Java有哪些常用语?Java常用语言汇总

  Java有哪些常用语?不介绍Java 常用语,对Java 的总体介绍就是不完整的.尽管促使Java 诞生的源动力是可移植性和安全性,但在Java 语言最终成型的过程中,其他一些因素也起了重要的作用.接下来,绿茶小编就一一来介绍一下. · 简单(Simple) · 安全(Secure) · 可移植(Portable) · 面向对象(Object-oriented) · 健壮(Robust) · 多线程(Multithreaded) · 体系结构中立(Architecture-neutral)

Java环境变量怎么配置?Java环境变量设置教程

  Java环境变量怎么设置?Java语言拥有跨平台的特性,它编译的程序能够运行在多种操作系统平台上,可以实现"一次编写,到处运行"的强大功能.但是Java需要自己手动配置环境变量,这对于Java新手来说是个不小的难题.接下来,小编就教大家Java环境变量设置方法. Java环境变量设置所需工具: JDK 1.7 安装包 Java环境变量设置步骤: 想要成功配置Java的环境变量,那肯定就要安装JDK,才可以开始配置. 1.安装JDK 向导进行相关参数设置.如图: 4.选择安装的路径,

java实现短地址服务

假设下面是你的视频网站链接列表,如果别人想爬取你的数据十分轻松,看规则就知道数据库是序列自增的 http://www.xxxx.com/video/1 http://www.xxxx.com/video/2 http://www.xxxx.com/video/3 那么解决这一问题,我们可以使用短地址,不对外暴露真实链接,使用对称加密是一个很好的方案. Hashids是一个很好的选择,它提供了JS/PHP/JAVA/PYTHON等编程语言的实现,这里我使用的就是它. 下面是我基于blade框架搭建

Description Resource Path Location Type Java compiler level does not match the version of the instal

Description Resource Path Location Type Java compiler level does not match the version of the instal 解决办法 在项目上右键Properties->Project Facets,在打开的Project Facets页面中的Java下拉列表中,选择相应版本. 有可能是java1.6 改成java6之类的

详解Eclipse Galileo中的快速Java编码

问题 无论您的项目或团队的规模有多大,在编辑代码库时,都会遇到如下的两 个问题: 代码模板 尽管代码模板是提高工作效率的一个理想途径,但需要确 保不能用模板来替代真正的重用,即编写方法或函数以便将它们用于许多位置.如果您有 一大段代码,那么最好在使用代码模板前先考虑采用带有变量的各种方法. 缺乏 一致性 - 当团队中的很多人编辑文件时,难免会有编码上的些许差异,但这些差 异会使代码变得难于读懂和维护.这种情况下,很难搜索到代码差异在何处发生.即便代 码是您一个人写的,如果您忘记了前面代码是如何编

[Java] 方法锁、对象锁和类锁的意义和区别

版权声明:请尊重个人劳动成果,转载注明出处,谢谢! 目录(?)[+] 首先的明白Java中锁的机制 synchronized  在修饰代码块的时候需要一个reference对象作为锁的对象.  在修饰方法的时候默认是当前对象作为锁的对象.  在修饰类时候默认是当前类的Class对象作为锁的对象.   线程同步的方法:sychronized.lock.reentrantLock分析 方法锁(synchronized修饰方法时) 通过在方法声明中加入 synchronized关键字来声明 synch

android java 继承父类里的子类问题!!!!!!!

问题描述 android java 继承父类里的子类问题!!!!!!! 请问各位,java可以继承父类的方法和全部属性,那父类里的子类可以继承使用么? android 可以继承父类的Handler.广播么??