私はかなりの量のGroovyコードを継承してきましたが、いくつかの理由で保守が難しいと感じました。
言語の簡潔さには感謝しますが、メンテナンスは困難で面倒です。
手動でいくつかの部分をJavaに変換しようとしましたが、それは大変でした。この変換に役立つツールやプラグインを知っていますか?
Groovy ++を使用した代替ソリューションを見つけました。 Groovyのほとんどすべての利点がありますが、パフォーマンスとJavaからの強力な型指定があります。さらに、これはGroovyに基づいているため、明らかに1つのjarファイルと、コードの先頭に「@Typed」アノテーションを追加するだけで済みます。
さらに、「GrUnit」などの新機能が追加され、動的タイプと静的タイプを混在させることができるため、DSLを作成できると思います。そのため、既存のGroovyコードと混合し、Grailsで使用できます。
プロジェクトは若くなりそうですが、本当に有望です。私はすでに水域をテストしていて、どこまで水を飲むことができるかをチェックしています。
したがって、この回答は実際にはGroovyをJavaに変換する方法を示していませんが、さらに優れたものを得ることができます。ワールドプラスとオプションのサードワールドの両方の利点-しゃれは意図されていません:-)-静的型付けとパフォーマンス。
IntelliJ IDEA は、グルーヴィーなコードのリファクタリングをかなり適切にサポートしています。また、Groovy-> Javaのソースコードレベルコンバーターもあります。ほとんどの場合、コンパイルされないコードが生成されますが、コードの変換プロセスを開始するのに役立つ場合があります。 Groovyコード:
class HelloWorld {
def name
def greet() { "Hello ${name}" }
int add(int a, int b) {
return a+b;
}
}
変換済みJavaコード:
public class HelloWorld {
public GString greet() {
return "Hello " + String.valueOf(name);
}
public int add(int a, int b) {
return a + b;
}
public Object getName() {
return name;
}
public void setName(Object name) {
this.name = name;
}
private Object name;
}
おそらくあなたが聞きたい答えではないでしょうが、私はコードをJavaに変換しようとするのではなく、Groovyをより快適にすることに焦点を合わせます。 Groovyでできることはたくさんありますが、Java( closures など)にうまく変換されません。Javaは、コードをはるかに読みにくくし、理解しにくくします。
Groovyに固執するように説得できず、Javaに移行する必要がある場合は、手作業で移行するのが最善の策です。
Groovy言語とJava言語はどちらも同じバイトコード(Javaプラットフォームバイトコード)にコンパイルされます。したがって、(a).groovyファイルを.classファイルにコンパイルします。(b)次のようなデコンパイラーを使用します。 .classファイルを.Javaファイルに逆コンパイルするJDGUI。
私の一番のヒントはユニットテストをたくさん書くです。
このアドバイスは、ほとんどの動的言語に当てはまります。コンパイラーによる静的型検査から「セーフティネット」が少なくなるためです。テストを追加して、入力値と出力値のタイプが正しいことなどを確認する必要があります。
これでほとんどの問題が解決すると思います。
同様の質問がある方は、GMavenPlusをご覧ください。
1年前にいくつか質問があります。 1か月または2か月の幸福感の幸福感の後、それは現実世界の弱さを変えるものでした。 GReclipse 2.0でもそれほど苦痛はありませんが、コードは管理不能で苦痛になります。あなたの質問への短い答え-いいえ。これを行うための本当の良い道具はありません。 GSql私はSpringJdbcTemplateに置き換え、クロージャはコールバックに置き換えます。これらはすべて、手動で置換戦略を決定する必要があるため、適切なコードを取得する必要がある場合は、整然と行う必要があります。それ以外の場合は、いくつかのJava逆コンパイラーを使用できますが、実際に必要なものではないと思います。
約1000のGroovyクラスをJava 8に変更します。
移行の可能なステップ
def変数:IDEで正しいクラス名に手動で置き換えます
def Methodes:IDEで戻り値として正しいクラス名に手動で置き換えます
ファイルの名前変更:すべての.groovyファイルを.Javaファイルに自動的に置き換えます(Java 8)
clousures:Java 8 LambdasおよびJava 8 Streams
Groovyの上書きされたメソッド:手動で新しいJava jdk Klasses、つまり新しいファイルio、新しい日付API、またはApacheライブラリを含める
ユニットテストを使用して、リファクタリングを制御します。
PS:私達は使用します。 Groovyプラグインを使用したEclipse。
あいさつロエビ