• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaでAPIのI/Fはどう認識してるのか?)

JavaでAPIのI/Fはどう認識してるのか?

このQ&Aのポイント
  • JavaでのAPIのインタフェース認識方法とは? 具体的には、jar提供の場合の認識方法についても考える。
  • Javaでは、他のクラスやAPIのインタフェースを認識するために、クラスファイルが提供されている場合はclasspathを設定することで認識できる。
  • C言語の「ヘッダファイルをincludeすること」と「リンクの画面で、.libを指定すること」の意味の違いについて知りたい。それぞれが必要な理由を知りたい。

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

JAVAではコンパイル後のクラスファイル(*.class)がCで言うところのヘッダファイル(*.h)とライブラリ(*.oとか*.aとか)が一緒になったものと言ったら分かりやすいだろうか。 C言語ではヘッダファイルの中にソースレベルで関数の定義が入ってて、includeして同じソースコードとしてコンパイルするからコンパイルができる。そしてコンパイルした後の中間ファイルとライブラリをリンクして*.exeとかa.outとかすなわち実際に実行できるプログラムファイルが出来上がる。これを読んで「え? じゃあヘッダーに書かれてる関数定義とライブラリに入ってる関数の実体の型とか引数が違ったらやばいじゃん」と思ったあなたはするどい。 というわけでJavaではこのヘッダファイルに当たる情報とライブラリに当たる情報が一つのファイルにまとまってて関数定義と関数の実体に不整合がおきっこないようになっている。だから一つのclassファイルだけでソースを書いている側が定義も分かるし呼び出すこともできるってわけだ。 で、JARファイルとは何かっつーとJava ARchiveの略でJavaプラットフォームで使われる圧縮ファイルで、その実体はほぼZIPというか圧縮アルゴリズムにZIPとほぼ同じものを利用しているので7-ZipとかWindows標準の圧縮フォルダーとかで中を覗く事ができる。中を見ると分かるがclassファイルとかいくつかのテキストファイルがあり、画像とか別の任意のファイルがあっても良い。 話をまとめると、 ・jarの中身にはclassファイルが入っている ・classファイルはCで言うヘッダとライブラリが両方合わさったもの なのでJavaは関数定義も読めるし関数を実際に呼び出すこともできるのだ。

paranoia23
質問者

お礼

ありがとうございます! とてもわかりやすかったです!

その他の回答 (1)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>特に、色んなアドオン?API? は、jar提供が多いと思うのですが、 >クラスファイルすらないと、I/Fを認識しようにも、認識できないのでは?と感じています。 適当なjarファイルをコピーして拡張子をjarからzipに変えて展開してみてください。 >※また、できれば、C言語での >「ヘッダファイルをincludeすること」と「リンクの画面で、.lib を指定すること」の意味の違いを知りたいです。 ヘッダファイルには何が書いてあるか見てみたことありますか? 基本的には型が~な変数~や型が~で引数が~関数~があるという事が書いてあるだけです。 実体はlibの方にあります。

paranoia23
質問者

お礼

回答ありがとうございます。 ヘッダファイルに書いてあることや、実体はlibであることは知っているのです。 知りたいのは、 JAVAの開発の時、作っているプログラムが、「他のクラスを使える」という状況になるのはどういうメカニズムなのか?という点です。 「Javaではどのような仕組みで、他のクラスや、APIのI/Fを認識しているのか?」 の観点で考えると、例えばヘッダとlibがあると、dll上のロード後、メモリのどこにアクセスすれば処理を行えるかなどがわかるような雰囲気だと思うのですが、Javaではどうなのでしょうか?? 例えば、jarを展開した内容が下記のとき、 META-INF/ META-INF/MANIFEST.MF com/hoga/foo.class com/hoga/bar.xml piyo.xml classファイルしかない状態で、 そのclassに対して処理をできるのか??と考えると、 なんとなくできなさそうだなぁ。と思ったのです。 ビルドするときにclassファイルさえあれば、そのクラスのメソッドを使えるものなのでしょうか? なぜ使えるのでしょうか? .

関連するQ&A