Javaで書かれたプログラムでGPLなものはあまり聞きません。
なんででしょうかね〜。と思って考察してみました。
GPLのFAQを見ると、
http://www.gnu.org/licenses/gpl-faq.ja.html#GPLPluginsInNF
プログラムがプラグインと動的にリンクされ、お互いにファンクションコール を使ってデータ構造を共有している場合、それらは単一のプログラムを形成し ていると見なされますので、プラグインはメインプログラムの拡張部分として 扱われなければなりません。このことは、GPLで保護されたプラグインをメイ ンプログラムとリンクするのはGPL違反となることを意味しています。
とあります。JVM上で実行するプログラムも、一連のJava APIクラス群と相互に呼び出し合ったりデータ構造を共有したりしているので、単一のプログラムを形成していると見なされるでしょう。仮にプログラムが、一切Java APIを呼びださない、空のmain()だけであっても、その1つ前のFAQをみると
http://www.gnu.org/licenses/gpl-faq.ja.html#GPLAndPlugins
プログラムがプラグインと動的にリンクされているが、それらの間のコミュニ ケーションはいくつかのオプションとともにプラグインの「main」関数を呼び 出して返値を待つだけという場合は、境界線上で微妙なケースとなります。
とありますので、main()を呼ぶだけですら、「境界線上」であり、すなわち白ではない、とFSFは主張しているようです。
もともとGPLのOpenJDKなら問題ないでしょうが、Sun JDKやIBMその他GPLではないJava環境の場合、GPLプログラムを走らせた時点で、JDKのAPI群側がGPLが適用されることになる(いわゆる「感染する」)かどうかが、少なくとも「グレー」になるわけです。場合によってはGPL違反になる、という解釈があるということです。そりゃないぜセニョール。
というようなことが、Javaで書かれたGPLプログラムがあまり見当たらない理由かと思いました。
Java APIには、互換品(GNU Classpath, apache harmony)が存在するので、glibcのようにLGPLであったり、リンク例外を持つべきなのかもしれません(向きは逆で、Java API側ではなく、「GPLのJavaアプリが」)。