1 名前:デフォルトの名無しさん mailto:sage [03/03/03 02:56] 1なのにsageちゃうあたりがgcj 本家 gcc.gnu.org/java/ 関連: 「GCCについて part2」 pc2.2ch.net/test/read.cgi/tech/1046179115/
482 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 14:16:36 ] 上の Java Compiler に入ってる strip.exe で20Mが4Mくらいになるよな。8Mくらいだっけ?
483 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 14:51:14 ] >>482 --strip-all 付きで生成したバイナリも小さくなるっけ?
484 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 16:40:34 ] 最適化しようとするとリフレクション&クラスローダー関連が癌だよな 動的プログラミングを静的なバイナリに置き換える事自体が問題なんだろうけど。
485 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 18:54:32 ] でもたいていそんな変わったコードはコンパイル不可だから。 っていうか、ちょっと複雑なライブラリーつかうと不可。
486 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 18:38:02 ] 要するにgcj使うメリットって何もないよね
487 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 01:56:11 ] >>486 ないと思うならない。
488 名前:デフォルトの名無しさん [2007/01/21(日) 00:09:43 ] January 8, 2007 Andrew Haley and Tom Tromey of Red Hat merged the gcj-eclipse branch to svn trunk. GCC now uses the Eclipse compiler as a front end, enabling all 1.5 language features. This merge also brings in a new, generics-enabled version of Classpath, including some new tools. All this will appear in GCC 4.3.
489 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 00:17:30 ] これMakefile作れないの?
490 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 13:19:10 ] cygwinのgcjで作った.exeの巨大さを見て愕然とする。linuxだとそうでもないのに。 思うに、ライブラリをスタティックリンクしているんだろうか? ダイナミックリンクにする方法は?
491 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 14:10:19 ] >>490 そ、そうかな? linux でのバイナリサイズも大きくてびっくりしたよ。
492 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 14:14:50 ] CygwinかLinuxかという問題ではなく、単にバージョンの問題だったりして。 Linuxも以前は大きかった記憶がある。
493 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 14:20:30 ] >>490 cygwin mingw だと libgcj のDLLが用意されてなくてかならずスタティックリンクされる。 リフレクションによるDLLからの動的クラスロードとかもできないしwin32環境のgcjはまだまだ。
494 名前:デフォルトの名無しさん mailto:age [2007/04/18(水) 12:11:27 ] GCJに入ってるJavaのライブラリと、対応するJavaのバージョンってどこで調べられますか?
495 名前:デフォルトの名無しさん mailto:age [2007/04/19(木) 13:11:43 ] 以下のソースをコンパイルすると、例外が出て動かないんですが、原因の分かる方いませんか? public class test { public static void main(String[] arguments) throws Exception { String s = "aaa123bbb"; s = s.replaceAll("[a-z]", "hoge"); System.out.println(s); } }
496 名前:495 mailto:age [2007/04/19(木) 13:13:57 ] 環境は、mingw gcjの、3.4.2と4.3.0で試しました。 例外は次のように出ました。 Exception in thread "main" java.lang.ExceptionInInitializerError at java.lang.Class.initializeClass(/datal/gcc/gcc/libjava/java/lang/Object.java:513) at gnu.java.util.regex.RE.getLocalizedMessage(/datal/gcc/gcc/libjava/classpath/gnu/java/util/regex/RE.java:262) at gnu.java.util.regex.RESyntax.<clinit>(/datal/gcc/gcc/libjava/classpath/gnu/java/util/regex/RESyntax.java:345) at java.lang.Class.initializeClass(/datal/gcc/gcc/libjava/java/lang/Object.java:513) at java.util.regex.Pattern.<init>(/datal/gcc/gcc/libjava/classpath/java/util/regex/Pattern.java:76) at java.util.regex.Pattern.compile(/datal/gcc/gcc/libjava/classpath/java/util/regex/Pattern.java:153) at java.util.regex.Pattern.compile(/datal/gcc/gcc/libjava/classpath/java/util/regex/Pattern.java:135) at java.lang.String.replaceAll(/datal/gcc/gcc/libjava/java/lang/String.java:998) at test.main(D:/workspace/Test/src/test.java:0) Caused by: java.util.MissingResourceException: Bundle gnu/java/util/regex/MessagesBundle not found at java.util.ResourceBundle.getBundle(/datal/gcc/gcc/libjava/java/util/ResourceBundle.java:372) at java.util.ResourceBundle.getBundle(/datal/gcc/gcc/libjava/java/util/ResourceBundle.java:243) at gnu.java.util.regex.RE.<clinit>(/datal/gcc/gcc/libjava/classpath/gnu/java/util/regex/RE.java:133) at java.lang.Class.initializeClass(/datal/gcc/gcc/libjava/java/lang/Object.java:513) ...8 more
497 名前:デフォルトの名無しさん [2007/06/25(月) 20:28:45 ] >>461 ありがとう!!!
498 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:10:09 ] >>494 対応するバージョンはよく分からないけど、最新版のGCJでどのクラスが 実装済みなのかは次のページで分かる。 developer.classpath.org/doc/overview-summary.html ここのページに記載されていないクラスは未実装。
499 名前:デフォルトの名無しさん [2007/09/26(水) 11:56:27 ] mingw の gcj 使っているのですが,gcjでコンパイルされた静的ライブラリをリンクする時に 静的ライブラリ内の特定のオブジェクトファイルを強制的にリンクする方法ってないでしょうか? 静的ライブラリ内にあるメッセージリソースをコンパイルしたものがライブラリ内のクラスから ResourceBundle#getResource() で参照されているのですが普通にリンクしても 当然このオブジェクトはアプリケーションにリンクされません. なにかうまい方法はないでしょうか?
500 名前:デフォルトの名無しさん [2007/10/05(金) 14:04:56 ] 500get!
501 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 16:26:56 ] >>498 ネイティブ呼び出してるの以外はSunのそのまま使えばいけそうなもんだけど そういうわけにはいかないのかね
502 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 18:05:27 ] 今後標準クラスライブラリはどうするのかねー? GNU classpath を継続して使い続けるのかな?
503 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 08:55:35 ] 差し換えられるようにする方向じゃないのかなあ。
504 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 18:41:18 ] ま、とにかくGNUの精神なんて末端には関係ないんで6が動くの早く出してくださいよ
505 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 13:42:08 ] フロントエンドのecj化でコンパイラだけなら動くようになるんじゃね?
506 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 00:07:44 ] CGJを使ってみようと思って対応状況を見てみたんだけど、 awtやらswingのコードは全てをカバーしておらずまだ実用には向かないと書いてある。 これ、どういうこと? SunのJDKの中にはawtやらswingやらのclass全てのファイルが入っているのに、 それを使わず、すべて自分たちで一から書き直しているということ?? もしそうなんだとしたら、開発者には悪いけどこんなアホなことは無いなあ。 既存のコードを有効利用しない(できない?)で車輪の再発明を延々と繰り返すって 一体全体どうなの。 なんだか非常に的外れな事を言っている気がどんどんしてきた。 間違っていたら教えてください。
507 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 00:14:41 ] 非常に的外れだが間違っているとは言えないね。w 大人の事情というものがあるのだよ。
508 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 00:56:27 ] >>506 少なくとも今迄はできなかった SunのJDKがGPLになった(まだ全部じゃなけど)からこれからは有効利用できるはず でも実際にSunのJDKを利用するかどうかは作ってるやつらに聞いてくれ
509 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 01:03:22 ] libgcjってGPL例外条項があるけど、サンのライセンスと適合するん?
510 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 01:42:06 ] ふむふむ、分かったぞ。 どうやら二つの問題をあわせ持っているみたいだ。 一つは標準APIの問題。 Sunはそれの流用を禁止していたので、新しいJava実装の開発は標準ライブラリが使えない為難しかった。 そこで登場したのがGNU Classpathって団体で、彼らはSunJDKのAPI仕様書を見ながらせっせとフリーな実装を作った。 この頃Sunにはソースコードをオープンにしようとする動きがあり、この問題は解決の方向へ向かっている。 これ、面白いなあw GNU Classpathにとってこれは喜ばしいことなんだろうけど、今までの苦労が水の泡じゃないかw んーでもまあSunが公開に踏み出したのには彼らの影響もあるのかな。 んでもう一つの問題がネイティブコードに変換する時の問題。 Javaをプレステの実機とおけば、GCJはPCで動くエミュレータみたいなもので swingで使われているコードにはまだ再現できない所もあるいうことみたいだ。 なんだか日記みたいになってしまったけど、すっきりしました。 みなさんレスありがとうございました。
511 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 08:24:21 ] gcj + Sun class libraryってprojectもあるよ。 けどgcjの中の人たちは、classpathがかなり仕上がってきているから、 そっちの方に重きを置いている人が多い。 二年前にSunがソース公開していたら、状況は違ったと思うけれど。 いずれにせよ、ちゃんとした成果がないことを嘆くのはまだ早い。
512 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 06:49:52 ] gcj試してみたけどちょっとしたプログラムでも動作が怪しい。 同じプログラムをExcelsior JETで変換するとすんなり動いた。 やはり商用には敵わないか・・・ JETの購入真剣に検討してみるかな。
513 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 15:39:22 ] ↑工作員っぽくてかっこいい
514 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 15:43:17 ] 少なくとも Eclipse という gcj でコンパイルでき、 動作もする大きなパッケージがある訳で。
515 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 15:30:29 ] Excelsior を使いたい状況って何なんだろう・・・ 最近じゃ無くなってきてないですかね? JREの導入も簡単になってきてるし・・・・ それでもいやなときは、gcjというフリーな解があるのであって・・・ 仕事でやるときは、JRE入れるのが安全だもんなぁ
516 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:44:28 ] gcj じゃ Excelsior の代りにはならんだろ… Java5未対応だし,使えないAPIが山ほどあるし(Win32環境だと特に酷い). gcj を使うなら最初からある程度 gcj をターゲットにして作っていくか, 使えないAPIを自分で実装しながら作っていくくらい気合入れてやらないと. gcj用に作ってついでにJREでも動くってのは可だが逆はかなり手間かかると思うぞ…
517 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 13:29:52 ] ん、いや、仕事で使う時なんだけど まずはJREを使うという選択肢を検討する。 次に、gcj 、Excelsiorという選択肢があるんだが 昔に比べ、JRE導入で片付く件が多くなってるんじゃないということ。 gcjもExcelsiorも、どっちも仕事で使うにはJRE使用よりも活用度は落ちると思っただけ。 趣味で使うなら、もともと有料のアプリを使う動機に欠けるわけで。 技術的興味からgcjを利用するというのはわかるけど・・・・
518 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 01:16:01 ] つ チラシの裏
519 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 17:21:29 ] gcjでSocketを使ったプログラムを変換すると プログラムがフリーズしてしまうのですが どなたか解決策をご存知の方いないでしょうか? プログラム自体は下記のサイトのサーバー側と同じ物です。 ttp://www.hellohiro.com/socket.htm
520 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 17:28:44 ] ↑変換後のプログラムでSocket通信を行うとフリーズしてしまうということです。
521 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 11:34:17 ] >>519 非常に申し分けないがこのスレにエスパーはいないようなんだ… OS や gcj のバージョンくらい書いてみたらどうかね?
522 名前:519 mailto:sage [2007/12/21(金) 17:47:51 ] >>521 申し訳ありません。おっしゃる通りで・・・ OS WindowsXP Professional Version2002 ServicePack2 gcj MinGW/GCC/GCJ 4.3 (gcj-eclipse-merge-branch) 変換はeclipseからAntを使って変換しました。 最終的にはJava5でコンパイルしたプログラムを変換したかったので gcjの他のバージョンは試していません。
523 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 12:10:15 ] >>522 昔試した限りでは win32 環境で libgcj の Socket は使っただけで例外はいた。 試したのは MinGW の GCC 3.4.2 だったと思う。現状では win32 環境の libgcj は 完成度が低すぎて使い物にならないってのがそのときの結論だった。 ちょい上にも書 Sun の Java 用に書いたものを gcj にポートするのは厳しいと思えっていてあるでしょ? # Linux だとわりと動くんだけどねぇ…
524 名前:519 mailto:sage [2007/12/23(日) 22:35:55 ] あれから何度か試してみましたが、 例外もはいていないようなので原因はまったくわかりませんでした。 やはりまだwindows上では厳しいままのようですね。。 簡易のHttpServerをJavaをインストールしないで動くように出来ないかと言われて gcjに辿りついたのですが、諦めて素直にJavaをインストールしてもらいます。 しかし、こういう技術があるのをまったく知らなかったので 今回は良い勉強になりました。ありがとうございました。
525 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:31:52 ] >>524 デバッガで止めたらどこで止まってるの? 後スタックトレースとかもあるとうれしいが。
526 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:39:23 ] 簡易HTTPサーバくらいなら動かせそうな気もするけどねぇ…
527 名前:デフォルトの名無しさん [2008/03/12(水) 18:12:54 ] GCC 4.3.0 から Java 1.5 の言語仕様を満たすようになってるらすいな。
528 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:26:36 ] フロントエンドのリプレース終わったのか?
529 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:36:57 ] あけましておめでとうございます