2009-11-19 66 views
0

大约六年左右,我还没有做过很多的Java开发工作。我可能很快就需要将一个C#应用程序移植到Java上,以便在Windows和公司标准的Linux版本上运行(出于我不能讨论的​​原因)。我想知道的是,从那以后,什么是最好的阅读材料来刷新对Java的改变,所以我可以使端口尽可能平滑。阅读回到Java开发?

我目前在.NET Framework 3.5上运行,并使用lambdas,扩展方法和LINQ。这是一个没有Web服务调用或数据库调用的客户端应用程序。我确实使用各种网络协议与其他机器通信,但我已经在研究组件以替换现在使用的组件(Dart Telnet,SharpSSH等)。

大多数情况下,我正在寻找什么改变了Java语言和BCL从那时起。我不记得仿制药,foreach循环,拳击和拆箱是PITA。是否有任何扩展方法,lambda和LINQ的等价物?

+7

是否可以使用单声道?它可能需要对源代码进行一些修改,但比将所有代码移植到Java更容易。 – jheddings 2009-11-19 20:00:42

+0

@jdingdings:这部分原因我*可以*讨论。我尝试了单声道,但为了简短起见,应用程序需要的多个组件需要不能转换为单声道的P/Invoke调用。 – jasonh 2009-11-19 20:34:31

回答

8

Effective Java, Second Edition可能是起始文本。它讨论了使用它们的新语言功能和最佳实践。有些东西可能很熟悉,但六年后,进修并不是一个坏主意。

有关新功能的各种Sun教程也是新功能的良好开端。

+0

+1对于Effective Java - 这是我在今年早些时候使用2-3年后才能达到的速度 – davek 2009-11-19 20:13:56

2

要回答你的最后一个问题,没有扩展方法,lambda或LINQ的等价物。

自从在Java 5中引入注释和泛型后,Java语言开发发展非常缓慢,大多数有趣的Java语言工作都是在JVM语言中发生的,如Scala。如果您需要使用JVM,那么像Scala这样更高级的语言可能适合您的需求(请注意,Scala将与现有的Java库集成)。 Java 7.

+0

Hibernate/JPA不提供与LINQ相似的功能吗? – 2009-11-19 20:55:54

+0

我不相信他们提供了相同的流畅的查询机制,超过集合等 – 2009-11-19 23:54:51

0

您可能会考虑将MSIL重新编译为Java字节码的Mainsofts产品,而不是使用Java重写您的应用程序。

http://dev.mainsoft.com/Default.aspx?tabid=166

+0

谢谢,但这是行不通的,由于P/Invoke第三方控件。 – jasonh 2009-11-19 22:52:23