在我不断地从一种技术玩到另外在一种的时候,总是觉得时曾相识,原因很简单,无论你是用C在Linux上搞开发,还是用
java/.net等等,都是建立在一个理论体系上,对于JavaEE和.Net则是面对企业级应用市场的时候,它们的共同点就更加
多了,比如:
在表现层:.Net有ASP.Net,Java有JSP. 但是ASP.net更加”厚“一些,我们可以开发各种服务器端控件,使用和JSP类似的Session、Application等对象模型,我们可以重载Page类或者Control中的方法来管理ASP.net page或者控件的声明周期,我们可以使用监听器来管理JSP的生命周期,JSP可以使用标签库来展现UI,这一点似乎和ASP.net的自定义控件有异曲同工之妙,但是我人觉得JSP的标签库要做成像ASP.net服务器端控件的那个样子,恐怕要复杂多了。ASP.Net可以使用IHttpHandler接口来处理自定义请求如*.do,Java可以使用Serlet. 就其根本原理,是一致的。想让一个ASP.Net服务器端控件具备异步交互行为,就可以使用ICallbackEventHandler来实现,或者可以在PreInit阶段,”吐“出一些javascript代码来实现异步功能,JSP可以使用标签库来实现这一点!
????????? 那么很多基础性的东西是一致的,有什么不同吗?有相同,也有不同,就是设计的风格和思想不同罢了。
????????? 类似WPF的东西,Java还没有。
在服务层(应用逻辑)层:.Net有Remoting和WCF之类的通信手段和暴露对象为服务的手段,Java有JWS、RMI等等。.Net有”类似“应用服务器的MOSS,Java有各个厂商和开源的符合JavaEE标准的应用服务器。.Net上有Unity,Spring.Net,Nhibernate等等的框架(有一部分是从Java那里移植过来的),Java也有!而且你会发现它们的体系结构如此类似,比如WCF基于代理+sink的方式通信,RMI又何尝不是!
数据层:.Net有ADO.net,java有JDBC
其他:.Net有AD,java有JNDI
好了,上面只是一个简单论述,当你接触的东西多了,你会发现它们的雷同,不管是从技术角度,还是从商业市场角度,它们的相似性太多了,这里不仅仅指.Net/Java
当然还有python之类的东西!
这给我们一个启示,一旦你掌握了基础理论和共通的东西,你在学习或者使用一个新技术的时候,会容易一些。我做了6年.Net应用的设计和开发,现在转搞JavaEE,很
快进入状态了,也就是因为他们之间太有相似之处了吧。我们应该有触类旁通的能力,化繁为简的能力,对各种技术的底层原理了然于胸,就能不变应万变,外界环境变化
很快,我们却能应需而变!作为一个合格的软件开发人员是应该有这样的能力的,我认为。
综上,我们不要惧怕五花八门的技术的出现,而是更应该钻研最原理的东西。