2010-02-12 65 views
11

我一直在檢查Groovy,並且覺得將Java程序一點一點地移到Groovy中 - 抓住一個類並使其成爲一個Groovy類,然後將該方法轉換一下一次 - 可能是一種相對理智的方式來利用一些Groovy語言功能。我還會在Groovy中做新課程。將Groovy替換爲Java Little Little

問題:

  1. 這是一個合理的方法來轉換?
  2. 我可以保留我的所有公共方法和字段在Java中嗎? Groovy只是「超集」,對吧?
  3. 什麼類型的東西你會不是做在Groovy,但更喜歡Java呢?

回答

13

這是一個合理的方式來轉換?

我可以把所有的在Java中我的公共方法和和領域? Groovy只是「超集」,對吧?

幾乎是超集,但不完全是。例如,Groovy中的==調用.equals方法,但在Java中,它檢查2個引用是否引用同一個對象。另一個例子是,Groovy的不支持該語法用於構建陣列

Object[] objs = new Object[] { 1, 2, 4 } 

最後一個例子是,當一個重載方法被調用,Groovy的選擇時使用的參數的運行時類型來調用該方法,而Java使用編譯時參數類型。 This page有一個相當全面的兩種語言之間的差異列表。

什麼樣的事情你不會在Groovy做,但更喜歡Java呢?

我在Groovy中編寫所有東西,因爲使用Groovy比Java更高效,我更喜歡Groovy編程。我只會使用Java,如果有一些代碼的性能問題我可以證明用Java寫它解決了這個問題。在實踐中,這從來沒有發生過我。

使用Java也可能有社會政治原因,例如,一些代碼需要由許多人維護,其中一些人不知道Groovy並且不想學習它。

+0

不勝感謝這個答案,特別是最後一部分。早期的優化可能不是那麼好,而且是開發時間的一大浪費。你如何發現自動完成在Groovy中(好,壞,不關心)? – 2010-02-12 16:39:10

+0

IntelliJ中的自動完成功能很好。上次我在Eclipse/Netbeans中檢查它並不令人滿意,但那是在大約6個月前,事情可能從那時起有所改進。 – 2010-02-12 16:55:04

+0

我上週檢查過,並不是那麼好。尤其是Eclipse中自動更正的東西(在X類中創建方法?)在Groovy中沒有發生。我對這個問題非常感興趣的原因是我在Ruby中工作時幾乎沒有自動完成(Netbeans),但我認爲這可能是Ruby太難以正確對待了。無論如何...再次感謝。我今天激發了我的免費智慧,所以我會檢查一下。 – 2010-02-12 17:39:41

4

Wikipedia

大多數的Java代碼是語法 有效的Groovy。

而且

一些Groovy代碼看起來像它會在Java語言 ,但Groovy是 不是Java的超集。但是,除了少數不兼容之外,通常可以將 重命名爲.java文件到.groovy一個 ,它將起作用。 Groovy允許 編碼器在Java中省略了一些需要 的元素,因此Groovy代碼 可以更緊湊。這使得開發者可以逐步使用 開發Groovy學習曲線,因爲他們可以從 開始使用Java語法,並且逐步學習添加Groovy功能。

關於你的問題的其餘部分,我認爲這似乎是一個合理的進展方式。我會盡量專注於改變相關的類,以便一起使用Groovy,這樣我就很容易知道哪些類在向開發人員分配任務時使用哪種語言,而開發人員可能不知道這兩種語言。

+0

有趣的是,處理一些問題。或者所有這些,也許。 – 2010-02-12 16:27:03