区别:
总体来说两种语言师承一家,比较相似。C#没有像JAVA那样绝对的面向对象,但是C#没有像指针那样如意出问题的环节。
C#的前景:
我使用C#一段时间,感到这是一种非常优秀的语言,C#的前景应该不错。现在的软件企业使用这种语言的多吗?怎么还是有很多人在迷信JAVA,长江后浪推前浪,C#在所有其它语言之后出现,集成了很多其它语言的优点。跟着微软走,不怕没饭吃。
JAVA的前景:
1、应用广泛。j2me,j2ee,j2se(区别在于调用的类库和运行环境)
2、移植性好,你知道什么系统不支持java么?例如做数据库 二次开发,windows下和linux下仅仅是数据库不同而已(如果你在windows下也使用mysql那连数据库都是一样的),移植非常容易。
3、代码语言特性有优势;重用性很好;类库丰富。
4、个人观点(微软有点向中国盗版用户开刀的意思,如真到了那天,企业出于成本考虑转向其他系统平台的回很多。而目前java程序是移植起来成本比最低的。出于对未来移植的打算许多公司做软件首选java。)
一楼的,可移植性的问题,微软应该正在想解决办法,而且每准已经有方案了.
从现在的发展状况来看,10年之内,C#肯定会超java的.以前使用java的一些大公司,比如GE(通用电气)已经开始向微软方面倒了,甚至以往做过的东西都要用.NET重新做一遍.
我曾经有幸和他们合作开发一些医疗设备的软件系统.用的是WPF.
另外,我觉得学什么语言不重要,只要是面向对象的.如果你java很强大,那么不出三个月,你一定可以把C#学的七七八八了.同样,C#很强大,玩java也不会成大问题.这些东西跟C++不一样.
纯面向对象最好的东西之一就是自动回收机制,java那么火,开始也是因为这个.现在微软出了.NET,摆明就是跟SUN抢市场的,经过这五六年的打拼,C#的市场越来越大,而且潜在的用户群体就是相当数量的学生,他们在上学的时候就在学C#,用C#.
话微软和SUN
混乱的UNIX版本让号称稳定的UNIX在分布式计算环境中变的异常难以维护,导致不稳定,失去了UNIX的主要卖点。于是JAVA出现了。
WINDOWS在多年的发展中,从WIN31到WIN95,XP,ME,NT到2000,也是版本多样,面向的用户也是风格迥异,应用千奇百怪,随便一个学生连进程线程都不懂也能用VB拖个控件开发个东西,使WINDOWS染上了不稳定的名声。其实WINDOWS的创造也借鉴了许多UNIX的优点,也分析了UNIX的缺点,因为NT的创造者就是参与世界上最早UNIX开发的人。就是这个现状怎么能让WINDOWS进入诱人的企业级应用呢?于是微软也想到了虚拟机,于是.Net出现了。
两者出现的原因一样,都是为了屏蔽混乱的底层,这回微软也是为了挺进企业级大下决心,加强安全功能。谁让它的用户群那么大,钱赚的那么多,用户又大多是什么是嗅探器什么是防火墙都不懂的家庭用户呢,正好给黑客一个机会。有了易用,价格低,维护简单,安全,稳定,有关键应用,谁还选维护费用高当神圣供养的UNIX(不要跟我提UNIX的高性能,就象提Oracle 8比MS SQL Server2000快一样,你自己或许都要问一下你自己)。
未来似乎成了JAVA和.Net两个虚拟平台的较量。是这样吗?
其实,本质上还是UNIX和WINDOWS之间的斗争。UNIX由于复杂和维护费用昂贵,UNIX新市场的开辟已经明显缓慢。后起之秀LINUX吸收UNIX和WINDOWS的特点,又有大量自由组织和商业公司推动,还有IBM这个庞然大物在压阵,使它日益成为一个UNIX用户熟悉又便宜的操作系统。而且LINUX的市场定位也是中小型用户,和WINDOWS吃的是同一块蛋糕,当然微软咬牙切齿。失去了WINDOWS,微软就失去了一切,而SUN失去了JAVA还有高端服务器。
由于微软推出了.Net,所以JAVA势必退出WINDOWS的世界(JAVA总不会在.Net的虚拟机上再加一层虚拟机吧)。WINDOWS一边打击LINUX的市场,一边用WEB SERVICE
主动与UNIX接近,你想闭关自守都不行。不过UNIX与WINDOWS都是多年发展,聚集了大量的关键应用和用户投资,谁想打败谁都不太容易。这一场旷世之战也一定会在计算机发展历史中写下不可动摇的一页。
这一次的变革,从下到上波及到每一个靠WINDOWS吃饭的家伙,其中也包括那些开发工具和中间件厂商。因为.Net既提供了清晰的公共类库,也提供了虚拟器,还提供了优秀的开发工具,不象JAVA的推出是一个渐进的过程。这回微软集结了世界上罕见多的精英和数十亿美圆,还有大量的合作伙伴齐头并进,用强强联手的力量来进攻。那些提供解释型和非面向对象的厂商这回要考虑怎么过关了。而且.Net从八大服务器端支撑软件到ADO.Net和Asp.Net全部精心打造并且无缝连接,让那些中间件厂商也自身难保。因为中间件一个是提供系统集成功能,一个是提供关键服务,而.Net从前到后一网全包。
看看JAVA阵营的人们。Oracle一向是个机会主义者,IBM是四海一家的解决之道,开放,标准,互联是IBM的口号,反正IBM的产品线很长,两者都支持何乐而不为呢?这回WEB SERVICE的标准制定,IBM自然大大推动。SUN有什么办法呢?它一直主要停留在UNIX世界。大敌当前,强攻不如智取,于是选择了开骂和上告政府,用非商业的手段打击微软这个商业公司。三天两头到法院上诉,一会告微软非法使用JAVA,一会告微软于用户需求不理拒绝支持JAVA,这叫影响军心。你想你正在专心工作,有人老在你眼前晃还要挑衅你,你什么感觉?如果你站起来他就溜走,如果你坐下他又折回来,如果你不小心犯了一个错,呵呵,他就咸鱼翻身了。这就是SUN的策略:如果你让对手安心发展,他又比你有实力,他必然很快就发展强大消灭你。如果你不断骚扰对方,赢家真还不一定是谁呢,我们完帝国时代和红色警戒不都是这样?而微软也是将计就计,不管你怎么叫,你不知道我下一步要做什么,但肯定是瞅着你的一块奶酪。你三天两头少一点东西,你就叫吧。
微软虽出身家庭用户,但毕竟企业才是真正的金矿。可是目前一方面不能丢弃家庭用户,一方面还要争取企业用户。但是这两者的重点却是差异巨大。微软为了平衡这两者之间费尽心思,再这样继续哪头都不讨好。企业嫌你太花哨不实用,家庭嫌你太复杂。唉,分开吧,对谁都好。于是XBOX出来了。
如果你把XBOX只认为成一台游戏机,你就小看微软了。对于家庭用户,你给它一台能上网能娱乐的计算机好呢,还是给他一台能上网能娱乐的游戏机好呢?微软一向是引导用户培育市场的好手,就象WIN95之后,微软就已经在做2000了,但是在中间时间太长,跨度也挺大,就推出98,ME,XP。这回XBOX也一样。先推出《帝国时代》游戏,给你一个信心,原来微软做游戏也能做的这么好。第二步微软就顺理成章地推出游戏机。一旦进入家庭,XBOX中就会加入什么无线通讯呀,安全呀,变成了一个家庭的网关或控制中心,与家庭的信息加点连为一体,外接宽带连通世界,这不正是微软当年的维纳斯计划吗(只不过当年微软选择了机顶盒这个怪家伙)?如果家庭全部电子产品连入XBOX,这样一个市场的潜力足可以再造一个现在的微软帝国。
一手抓.Net,连通LINUX和WINDOWS世界,一手抓XBOX,进入家庭应用。拥有两大王牌,连通整个地球,谁与争锋?
不过事情也不能太绝对,因为一个成功不是纯商业或纯技术就实现的。未来是一个神话时代,或许四五年后你就用上了100G的光盘和2M/S的宽带,没什么惊讶的。让我们微笑面对我们的用户,抓住他们的心和口袋,就象微软和SUN抓住我们的心和口袋一样。
我认为C#是有一定的发展前途的,因为他的支持者是一个帝国,但是他有一个缺点,就是他现在还没有别的操作系统版本,如.net没有UNIX版本的出现,在WINDOWS上用。NET实在比JAVA强
C,快,方便容易
J,钱多.难学
个人感觉,如果想深学,学java不如学c++或汇编.