我是一名四年级计算机科学专业的学生,在大学我的项目很多都是基于Java的,所以我很习惯语言,平台和apis。但是很长一段时间以来,我一直在阅读很多关于.net平台的改进,以及它的大量职业机会(至少在我的国家)。现在我正在考虑转向微软世界。我有几个问题:
转向.NET平台会不会很严重,因为当我开始职业生涯时,我将缺乏“4年的Java体验”到“1年的c#/ .net体验”?
从java世界到.net世界的交易会如何苛刻?
感觉太阳的未来(以及Java的结果)看起来有点模糊,从长远来看这是一个问题吗?
编辑: 对不起编辑,我想补充一点,我更多的是进入电信领域(即使我在这个领域还没有实习/工作经验)。事实上,java不是我唯一的语言。我真的习惯了Python,LISP,Javascript,Php和其他一些标记语言。
由于
答案 0 :(得分:18)
当你习惯使用Java API时,它肯定会转变,主要是学习.NET框架。很多概念是相同的,但它是一个学习在哪里找东西的例子。你不应该期望有效地拥有4年的C#/ .NET经验 - 但你将拥有4年的通用软件开发,这本身就很重要。
从C#迁移到Java并不算太糟糕,尽管泛型在C#中非常不同。您会发现最近版本的C#中有许多功能都不是Java版本,而且值得了解它们以最大限度地利用该语言。
就我个人而言,我发现C#是一种比Java更优雅,更强大的语言 - 当然,它的发展速度要快得多。我经常使用它们,但我的心脏是C#...而且它来自像你这样的Java背景。我当然不会后悔从Java转移到C#,特别是因为它不是一个“移动”,只是在你的弓上添加一个额外的字符串。这并不像你放弃你的Java经验来学习.NET。
说完这一切之后,我认为你不必担心Java会很快消失。我认为对核心API和语言的进展速度感到担忧是合理的(虽然第三方图书馆和语言的发展速度相当快)但我相信公司会积极开发Java中的新产品。未来几年。
答案 1 :(得分:15)
如果您不想成为下一个cobol开发人员,请习惯更改语言。 Java和C#将存在几年,底层平台也将如此。但事情会发生变化,所以最好习惯它。
您有0年的经验。在学校或大学完成的任何事情都不算数。原因是:要求完全不同。从CS的角度来看,学校的东西可能会更加困难,但它有固定的,相当明确的要求,而且你不需要支持它10年。所以再次习惯它:希望这是一个有趣的时间,但它不算作经验。
C#最初几乎是Java的一个副本。现在这些人有很多有趣的功能,java缺乏。但是当你知道另一个时,它仍然很容易学习。
对于一份工作:有多少工作是无关紧要的。你只想要一个对吗?那么你应该检查一下你感兴趣的工作类型? Web,移动,嵌入式,富客户端,大型服务器。
那么真正的建议是什么?去吧,现在找个雇主。告诉他们你曾经[在你完成的时候]工作,并且你希望他们在同一时间告诉你应该学什么。
答案 2 :(得分:6)
我个人认为Java不会很快消失,所以如果不是更好的话,恕我直言Java就像.NET一样出色的职业生涯。无论如何,我会说两种选择都会为你提供大量的就业机会。
这些语言非常相似,因此您很可能会轻松找到过渡,但显然您需要熟悉各种库和框架(取决于您将关注的应用程序类型)。
您从Java世界中了解到的许多内容实际上都是OO,模式等等,并且在.NET世界中同样适用。
答案 3 :(得分:3)
我在.NET商店工作,我可以说作为一名招聘经理/面试官,我不认为最近大学毕业生缺乏.NET经验是一个问题 - 很少有大学和大学使用微软工具,正如其他海报所说,这些平台在概念上是相似的。我对最近大学毕业生的期望是能量,热情和对CS基本原理的扎实把握。
也就是说,我也不认为四年制学位是“4年的Java经验” - 学生的项目在简历上很好,并且在面试中谈得很好,但除非你一直在做一方面的雇佣编码,一年的“现实世界”经验(你的工作就是编写软件)教授更多关于职业道德和交付的知识,而不是大学四年或更长时间。
答案 4 :(得分:1)
这取决于你拥有什么类型的个性以及你对java的理解程度。两个平台之间的概念是相同的,只有不同的实现细节,语法,名称等......在一个层面上我发现.net更容易,因为你经常处理所有微软产品,这些产品往往很好地相互对齐。在java空间我不得不花时间弄清楚如何让供应商X的产品A与供应商Y的产品B一起工作。所以,如果你有更多,那么我称之为“文字”理解java的举动应该很容易。
我认为您应该能够轻松地在两个平台上找到工作
如果这一举动也可能因为渴望学习新事物而受到推动,那么我建议你去寻找一些不同的动态或功能性语言。
有几本专注于从java转到c#的书籍(我没有读过它们,所以我不能对它们提出建议)但是那些应该能让你在几小时/几天内加快速度。< / p>
答案 5 :(得分:1)
我不打算为了职业目的而学习C#。我说这是一个快乐的C#程序员。 :-)哦,我想有一个解释是......
了解多种语言会更有价值。当我正在招聘一个将要编写C#的职位时,我宁愿雇用一些有很多Java经验的人,还有一些Scheme和Erlang(根本没有C#),而不是只有Java和C#的人。 / p>
C#似乎真的结合了两件事:来自Java世界的静态类型和语法,以及来自功能世界的一些附加功能和语法。如果您了解Java,Lisp,Python和Javascript,那么您几乎可以在几乎任何时间学习C# - 或其他任何东西。 (你不会担任建筑师的职位,但无论如何你都不会在校外就读。)
唯一的诀窍是找到一个足以让人意识到这一点的雇主,而不仅仅是通过模式匹配器提供简历的雇主。但是简单地在你的简历上加上“Lisp”通常就足以让你变得正确。
答案 6 :(得分:0)
我认为java和.net都很好。
只要你想保持对linux,mac os或任何其他系统的可移植性,你就可以继续使用java。如果你想要其他平台的.net应用程序,你需要依赖Mono,这肯定是一个伟大的项目,但在我看来还不够稳定,无法生产。
如果你想留在微软世界,我认为C#是我见过的最好的开发工具之一。事实上,提供许多重要编码功能的视觉工作室确实使工作变得轻松。
从学习方面来看,它们大致相同。 java缺乏运算符重载,这是我眼中的一个重点。 .net可能缺少java更擅长的其他功能......通常我猜在大多数应用程序中,.net比java更快。希望这有点帮助
问候
答案 7 :(得分:0)
如果使用C#编写,您会发现Java语言有很多相似之处,CLR也与Java运行时共享许多概念。
你也可以写两个。为了练习,我在C#中创建了一个聊天程序,并在Java中创建了它的服务器,并且非常有趣。您可以专注于.NET并偶尔使用Java。无论如何,这比使用语言更重要的是你多年来学到的概念,例如设计模式,最佳实践和算法。当您认识到它背后的模式和目的时,这些将帮助您更快地理解任何新框架或库。
答案 8 :(得分:0)
我同意其他人已经给出的大部分建议。这两个平台都将留在这里,两者都应该提供体面的职业机会。
但请注意一点。关于.Net的机会你写“至少在我的国家”。我认为在决定短期内职业影响的大小时,你还需要考虑“至少在我的国家”。
我在美国和德国都有过广泛的工作。我的经验是,在美国,人们被雇用的能力比恢复点更多,但在德国,情况却发生了逆转。您将不得不权衡您所在国家/地区的短期影响,除非您想要发布哪个国家/地区,并希望SO上的某个人具有该国家/地区的经验。
答案 9 :(得分:0)
转换到C#时,您的Java经验和概念会派上用场,但它们并没有太大差异(当然,在某种程度上)。我不会详细讨论你问题的那个方面,因为其他人已经做了很好的评论。
我想补充的是,虽然雇主可能不会认为学校经历与现实世界的经验相同,但不要让那些阻止你在简历上引用它们。准备好在面试中谈论他们,以及你有任何方面的项目或兴趣。这些对于“告诉我你最喜欢的项目有用吗?”和“你最喜欢那个项目的什么?”问题类型。热心学习并表现出提高技能的意愿。您还可以证明您发现C#的某些方面具有吸引力(可能与Java形成对比),并且您确信自己能够快速提取并自行应用。
答案 10 :(得分:0)
工作经历与您作为学生的经历大不相同。
就我个人而言,我认为你应该在学习的同时尽可能多地学习 - 这种确定性包括外来语言 - 只知道一种语言,让你成为一个单一的小马。
所以,让你的老师教你奇异的东西。就像使用模式匹配的函数式语言一样,逻辑语言用于评估大量可能性的完全不同的方法,用于执行实际位的汇编语言,以及人们为FUN和LEARNING做的所有其他令人兴奋的事情:)