フォーラム: java関連 (スレッド #500)

java ネイティブコンパイラによる開発 (2002-05-21 23:51 by juju #743)

僕は今、翡翠を Java で組んで Java のネイティブコンパイラを通すみたいなことも考え中ですが、
Java はよくしらないので躊躇。Unicode サポートがおいしいんですが。
Java が嫌われるのは、VM の遅さと、インストールの面倒さへの抵抗感がユーザーにあるからで、
ネイティブコンパイルしてしまえば差がないんじゃ?ってのが僕の意見。
あんまり聞いたことないあたり、Java ネイティブコンパイラはダメなんだろうか?

メッセージ #743 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: java ネイティブコンパイラによる開発 (2002-05-22 00:09 by juju #744)

「亜呂さんの日記」
http://www.bunny.or.jp/~aro/haruna/diary/

を読みました。
Unicode は結局 C++ と同じように、
カンペキな Unicode を簡単にサポートする方法はないみたい?
ただ、C++ よりは楽そう。
Javaコンパイラについての情報はここ

「Java VM Implementations - Javaコンパイラ」
http://www.ingrid.org/java/vm/#compiler

ここのリストにないけど、
gcc でもコンパイル可能みたい。

「gcc」
http://gcc.gnu.org/

libgcj が必要みたいな記述がしてあるので
linux だけかな?
#743 への返信

メッセージ #744 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: java ネイティブコンパイラによる開発 (2002-05-22 14:46 by aro #751)

JITなどの高速動作技術はいろいろあるのですが、
ネイティブコンパイラはどうも少ないようです。
やはり「Write once, Anywhere」という概念を
覆してしまうものだからでしょうか?
私も実際には使ったことがないので、IBMのあたりから
試してみましょうかね。gccはちょっと敷居が高そう。

設計書みたいに翡翠の形態がDLLだけでなく
サーバとしても機能させることを念頭においているので
あれば、ネットワークに強いJavaで内部を組むのも
悪い話ではないんですけどね。
JREなどの動作環境を別途いれなければいけないという
点をなんとかクリアできれば。
#743 への返信

メッセージ #751 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: java ネイティブコンパイラによる開発 (2002-05-24 01:30 by juju #781)

> やはり「Write once, Anywhere」という概念を
> 覆してしまうものだからでしょうか?

そのあたりは、宗教戦争のようなものだと思いますです。
僕は最終的に末端ユーザーが楽なものを選びたいだけなんです。


> 設計書みたいに翡翠の形態がDLLだけでなく
> サーバとしても機能させることを念頭においているので
> あれば、ネットワークに強いJavaで内部を組むのも
> 悪い話ではないんですけどね。

そうなんですよね。


gcc のほうはちょっと実験してみました。
お決まりの Hallo World で。

gcc -o -I/usr/java/lib/classes.zip Hello.java

(lib だったか include だったか・・・)
みたいなコマンドでコンパイルはできましたが、
リンクで libgcj がないとかでいわれて、今一歩です・・・。
インストールの面倒を見なかったマシンだったので、
パス設定とかいいかげんなのかもというわけで、
もーすこしで、バイナリつくれそうな感じです。


#751 への返信

メッセージ #781 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: java ネイティブコンパイラによる開発 (2002-05-25 03:46 by juju #791)

前回の投稿で、いろいろまちがってました。
確認不足で申し訳ありません。

【間違い1】
> gcc -o -I/usr/java/lib/classes.zip Hello.java

-o になってますが、これ、-c の間違いです。死のう。

gcc -c -I/usr/java/lib/classes.zip Hello.java

でした。(lib であってました)

【間違い2】
上のコマンドで Hello.o をつくり、リンクした場合に
出るエラーは、シンボルエラーでした。
たとえば、上のコマンドで Hello.o をつくり、

gcc -o Hello Hello.o

すると、シンボルエラーがいっぱいでます。
これは、環境変数 LD_LIBLARY_PATH が足りないか、
環境変数 CLASSPATH の関係か、
単に libgcj が入っていないかの3択かと考えてますが、
まだ確認とれてません。


【間違い3】
> リンクで libgcj がないとかでいわれて、今一歩です・・・。

gcj --main=Hello -o Hello Hello.java

のように、gcj でコンパイル&リンクすると出ます。
単に libgcj が入っていないからだと思いますが、
どうなんだろう。。
明日あたり確認します。


---
僕は gcc/g++ よろしく、gcc/gcj のような認識だったんですが、 僕のやってたことはまちがいだったんだろうか。
WEB 上でも、gcc で java をコンパイルしている例はなく、
gcj や、他の java ネイティブコンパイラを使っている。
やっぱり gcj とやらを使ったほうがよいのか?

gcj でやる場合はWEB上にサンプルも多く、

gcj --main=Hello -o Hello Hello.java

こんな感じでコンパイルできるようです。



亜呂さんが言ってた IBM の Jikes (だと思う)をちぇきしたのですが、

http://www-6.ibm.com/jp/developerworks/opensource/010112/j_os-jikes12.html

「新しい mingw コンパイラーのサポート」で僕も「すばらしい!」とか思ったり。
しかし、どうやってやるのかしら。
やり方とリンクしといてほしかった……。

#781 への返信

メッセージ #791 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: java ネイティブコンパイラによる開発 (2002-08-10 21:08 by juju #1666)

gcc 3.1.1 で確認したところ、コンパイルできました。

gcj --main=Hello -o Hello Hello.java

でいけます。

> 「新しい mingw コンパイラーのサポート」で僕も「すばらしい!」とか思ったり。
> しかし、どうやってやるのかしら。
> やり方とリンクしといてほしかった……。

こちらは、どうやら僕の勘違いでした;´д`)
mingw によって jikes がクロスコンパイルできるってことを言いたかったみたいです。
#791 への返信

メッセージ #1666 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする