2009-11-19 88 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