在Java推广初期,由于大家对于Java认知不够,所以对于Java有许多FUD存在。现在微软在推广.NET上,也遭遇到许多FUD,这是微软目前必须力消除的障碍。如果你对于.NET也存有这些FUD,你不妨尝试着去破除这些FUD,就如同七八年前破除Java的FUD一样。你将会发现,就目前来说,.NET是一个非常有潜力的技术,值得投入。
当然,更好是能两者兼顾,但是每个人的时间都很有限,想要兼顾两者,其实不太容易。投入在.NET的时间越多,所能花费在Java的时间自然就少了,反之亦然。在信息爆炸的时代,重要的不是信息的取得,而是信息的抉择。信息太多,时间太少,如果不能慎选适合的技术,只会平白浪费许多时间,斫丧自己的竞争力。
下面,我试图从许多不同的角度,简单地比较Java和.NET。
从市调的观点
三年前学习.NET恐怕有点太早,三年后学习.NET恐怕有点太晚,而现在学习.NET正是时候,不会太早,也不会太晚。学会之后,可以立刻投入市场对于.NET技术的人力需求。分析机构如MetaGroup和IDC皆预测,未来几年市占率会大幅提高。由于「精通」.NET知识可能需要费时两三年以上,技术人员应该尽量提早学习.NET以为因应。
从历史的观点
以史为镜,可以知兴替。如果你了解近二十年的软件产业发展史,你会发现微软挫败的机会很小,即使是在头几场战役失败,也会在整场战争中获胜。换句话说,.NET挫败的机会不大。在Office软件大战中,WordPerfect、AmiPro、Lotus123如今安在?在操作系统大战中,OS/2也已经销声匿迹。在浏览器大战中,Navigator如今只整剩下小小的疆土。你一定可以举出更多这样的例子。
从技术的观点
通常新的技术会比旧技术更好,因为新技术可以从旧技术学到优点,且新技术可以摒除旧技术的缺点。NET比Java诞生的时间晚了六年,许多方面都比Java先进,当然是无庸置疑。
并不是Java这六年停滞不前,事实上,Java一直在进步中,只是有许多缝缝补补、修修改改的地方。例如,XML是在这六年之间出现的技术,所以.NET对于XML的整合可以说是天衣无缝,但Java是后来才把XML整合进来,且整合的程度比不上.NET。
从行销的观点
任何人都不能否定微软行销功力的厉害。平面的行销,包括在电子时报、ITHome等信息媒体,甚至连商业周刊等非信息媒体,都看得到相关的广告。动态的行销,包括PDC、TechEd.、修练讲座、产品发表会?等活动,直接走入人群,接触客户。电子的行销,包括MSDN中英文网站、微软TechNetFlash新闻信?等,提供技术新知。
.NET有什么新的亮点?
当然是ASP,ADO和COM+,还有清晰的架构,并且由于统一的类库,我们为WEB,GUI,MOBILE而开发的应用会很容易的转来转去,不象过去开发,各需要学习不同的知识.ASP终于结束了网页意大利面条式的程序,面向对象和支持多种语言,使构筑强大复杂的WEB应用提供了比JSP更凶猛的功能,让人不得不爱.ADO.NET也抛弃了过去的数据集一Scroll就连数据库进行提交的糟糕速度,代而取之的是多条修改可以一次性提交上去.这样性能会提高多.COM+呢?COM+1.5的特性大家在WINXP上也看见了,比1.0强了很多,未来还不用注册,COPY完就能用,多舒服.至于安嘛,稳定嘛,这话不敢讲.因为盗亦有道,Java也同样如此,无法说谁比谁好.
___而近日从我校就业部得知的上半年就业信息数据分析来看:年初.NET招聘需求占主导,5月底后Java招聘需求占主导,安卓需求持续上扬。而从整个上半年招聘需求来看,企业需求旺盛,我校平均每周举办两次现场招聘会。同时就业部李经理也坦言:只要学员能够顺利毕业,无论是哪个方向,找一份工作是没有问题的。
从短期内而言Java仍然是企业级开发的强手货,.NET因为安全性可后期的可维护性差所以不被大企业广泛应用,但是如果是开发非B2B那样需要高安全性的项目,还是.NET比较合适,毕竟中小企业承受不了那样开发缓慢和费用高昂的Java软件。其实java和.net都有各自的好处,不论是哪种编程语言或者技术,都没有好坏区别,学精一门,总没有错。而且Java与.net都是面向对象的语言。首先来看下java的应用:
1、Java是跨平台的,而且Java开发的安全性最高,线程很好控制,运行速度是依据框架而定的,如果用Struts开发Web它的速度会比较平均,但是用JSF它的启动很慢,一旦加载完毕后速度飞快,只要不清楚浏览器记录,就会永远保持此速度。但是Java也存在许多问题,比如开发速度及其缓慢,搭建框架时需要弄许多配置文件。
2、java是跨平台的,意味着"一次编写,到处运行"。编写完了可以再linux和ux也可以一字不改的放在windows运行,.net只能在windows运行,但是windows广泛,所以也占有率高。
3、java安全性,运行环境是一个封闭环境,像沙箱一样,如果下载一个程序有破坏性,沙箱能判断出并起到保护作用.使得很多对安全性要求高的使用java,如:军队,金融,航空等。
4、java是健壮的,如果编写过程中,错一个标点符号,能及时的发现修改。不像c语言,汇编等,不能及时发现类似标点之类的错误,风险很大。
5、java简单强大,不需要一个一个自己编写,直接调用组件即可,所以功能是很强大的。
而.net的应用则比较偏向于效率上:
1、.NET是微软的王牌,不能跨平台,运行时速度和Java基本不相上下,但是.NET的开发速度很快,安全性总是.NET开发者的瓶颈,在有就是在.NET中的线程很难控制;
2、.net的编程效率高,只需要鼠标拖拽即可实现;
3、.net运行效率高,不能跨平台,所以都是自己的东西,效率高;
4、性能上,中小级的运用,.net效率更高一些,浏览下载速度更快,但是百万级后不如java。