標準ライブラリとネット上で配布されるライブラリの違い

このQ&Aのポイント
  • 標準ライブラリとネット上に配布されるライブラリは、全く別のものと考えて良いですか?普通のライブラリは特定の機能を持つクラスの集合であり、Javaのコードからコンパイルされます。しかし、標準ライブラリにはStringなどのクラスも含まれているため、混乱しています。
  • 普通のライブラリはJavaのコードから作られ、特定の機能を持つクラスの集合です。一方、標準ライブラリはJavaそのものであり、Stringなどのクラスも含まれています。したがって、標準ライブラリと通常のライブラリは全く別のものと考えるべきです。
  • 通常のライブラリはJavaのコードからコンパイルされ、特定の機能を持つクラスの集合です。標準ライブラリにはJavaのコア機能であるStringなどのクラスも含まれています。したがって、標準ライブラリと通常のライブラリは異なるものとして扱われます。
回答を見る
  • ベストアンサー

「標準ライブラリ」と、ネット上に配布されているような「ライブラリ」のちがい。

「標準ライブラリ」と、ネット上に配布されているような「ライブラリ」は、全く別のものと考えていいのでしょうか? 通常のライブラリは、ある機能を持ったクラスの集合で、それはJavaのコードで書かれているものがコンパイルされたものだと思います。そういったプログラムは、例えばStringクラス等を使って書かれていると思います。 であるのに、Stringなども、調べると「標準ライブラリ」と出てきます。ライブラリを作るのに、ライブラリがいる?と、少し混乱しているのですが、「標準ライブラリ」というのは、普通のライブラリとは全く別のもの(Javaそのもの)と考えてよいのでしょうか? よろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

標準ライブラリとは みんながライブラリを扱えるようにする為の標準語 のような物だと思います。 objectクラスをスーパークラスにもち(自動的にそうなる)、 mainメソッドを持った、 piblicなクラスとして定義されていれば、javaのクラスですから、 Stringなどを使わずに文字リテラルをコーティグすることは可能です。 しかし、ライブラリとしては駄目なものになるでしょう。 なぜなら、Stringクラス以外のインスタンスとして 文字列を実行するとなると、 そのクラスについて知らない人は扱えません。 当然そのクラスを継承して新しいクラスを作っても、 文字列のインスタンスが扱えなくなります。 すべてのスーパークラスはobjectだけです。 しかし、Stringなどの便利な機能を継承していくからこそ、 使い回しがしやすいライブラリになり、 そのおかげで、 簡単にすごいクラスが作れるのだと思います。 実際問題として、標準ライブラリを使用しない、 方言のようなライブラリもありえます。 ある意味で言えば、それが究極のライブラリでしょう。

netw2009
質問者

お礼

ありがとうございます。

関連するQ&A

  • Javaでライブラリのバイナリ配布

    Androidで初めてJavaを使い始めた者です。 javaで作ったライブラリを配布しようと思っておりますが、 C/C++のようにLibファイルのようにバイナリにして ソースコードを隠ぺいして配布することは可能でしょうか? jarファイルにすれば良いのかな?と思ったのですが、 エクリプスでそのまま中身が見れてしまっております。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • 外部クラスライブラリをインストールして使用する方法

    外部クラスライブラリをインストールして使用するためには・・・ C:\Program Files\Java\jdk1.6.0_37\jre\lib\ext と C:\Program Files\Java\jre6\lib\ext にjarファイルを置かないといけませんよね? それ以外にもなにか必要ですか? 教材を見ながらJavaの勉強をしているのですが 外部クラスライブラリを利用するプログラムをコンパイルしようとすると c:\JavaGOGO\Sample3-1>javac FusenExec.java エラー:C:\Program Files\Java\jdk1.6.0_37\jre\lib\ext\dodai.jar の読み込みエラー です。cannot read zip file FusenExec.java:3: シンボルを見つけられません。 シンボル: クラス Dodai 場所 : FusenExec の クラス Dodai fusen; ^ FusenExec.java:4: シンボルを見つけられません。 シンボル: クラス Dodai 場所 : FusenExec の クラス fusen = new Dodai(); ^ エラー 3 個 このようなメッセージが表示されエラーが起きます。 使おうとしているのはDodaiライブラリのクラスなのですが なにが原因でコンパイルエラーが起きるのでしょうか(>_<)

    • ベストアンサー
    • Java
  • Javaの再配布は認められていますか?

    Javaの再配布は認められていますか?またはその手続き等が必要であれば教えてほしいです! Java3Dで作成したコンテンツをWeb上にアップするのですが, 試用してもらいやすいようにJDKとJava3Dの再配布を行いたいです。 例えば,Javaの書籍の付録のCD-ROMの中にサンプル・プログラムと一緒にJDKとJava3Dがはいっているものがありますね。そのようにJava3Dを再配布するのに手続き等は必要なのでしょうか?

    • ベストアンサー
    • Java
  • Linuxで、標準Cライブラリが読み込まれず、C言語プログラミングができません・・・

    僕の問題はタイトルの通りで、標準Cライブラリが読み込まれていないようで、C言語プログラミングができません。 ubuntuのオフィシャルから日本語ローカライズドDesktopCDをダウンロードして、空のHDDにインストールしました。 ですが、gnome-terminalからccコマンドでプログラムをコンパイルしても、標準Cライブラリにあるはずの<stdio.h>が認識されず、続くprinft関数も読んでくれません。 これはどうしてでしょうか?LinuxはデフォルトでCやらJAVAやらのプログラミングの環境が整っているものだと思っていたので、戸惑っています。何か、セットアップが必要なのでしょうか。 ちなみに、gccでも、標準ライブラリは読み込まれませんでした。

  • Javaのライブラリの作られ方。

    下記URLのようなJavaライブラリも、作成者が標準のJavaクラスで書かれた結果、できたものなのでしょうか? http://joda-time.sourceforge.net/index.html http://www.jfree.org/jfreechart/

  • java コンパイルエラー

    java コンパイルエラー java 初心者です。 簡単なプログラムを作りながら練習していたのですが、Exceptionクラスを継承して新しい例外を作る以下のプログラムで、コンパイルエラーとなり、解決できません。 class NewException extends Exception{ public NewException(){ super("エラー"); } } これを javac でコンパイルすると、 NewException.java:3: シンボルを見つけられません。 シンボル: コンストラクタ Exception(java.lang.String) 場所  : Exception の クラス super("エラー"); ^ エラー1個 と言われます。 これを読むと「Exception には String を引数にとるコンストラクタはないよ」と言われているように思えるのですが、そんなはずないのでは。。 もし原因がお分かりの方がいらしたら、ご教示いただけるとありがたいです。

    • ベストアンサー
    • Java
  • gprofはprintfのようなCの標準ライブラリ関数で使われたコスト

    gprofはprintfのようなCの標準ライブラリ関数で使われたコストを どのように認識するのでしょうか? 普通にプロファイルしたいプログラムをmakeしても、標準ライブラリの 関数が処理時間・呼ばれた回数の一覧に出てきません。 gprofは次のどちらとして処理しているでしょうか? ・呼ぼうとしてる親関数の処理時間に、標準ライブラリ関数の時間が含まれる。 ・標準ライブラリ関数の処理時間はまるまる抜け落ちる Linux環境(SLES 10)で、gprofを使ってCで書かれたプログラムの チューニングを行えるかチェックしています。 ただし、OSレベルまでいじりたくないので、-pgオプションをつけて ライブラリを再コンパイルするのは考えていません。 以上、よろしくお願いします。

  • JNIでロードするライブラリが見つからない

    JNIを使ってライブラリを呼び出すとき, Exception in thread "main" java.lang.UnsatisfiedLinkError: no HelloWorldJNIlib in java.library.path というようにライブラリが見つからないエラーが出て困っています. 【Javaのコード】 [*****@**** jnitest]$ vi HelloWorldJNI.java public class HelloWorldJNI { static { System.loadLibrary("HelloWorldJNIlib"); } public native void sayHelloWorld(); public static void main(String[] args) { HelloWorldJNI hello = new HelloWorldJNI(); hello.sayHelloWorld(); } } 【Cのコード】 [*****@**** jnitest]$ vi HelloWorldJNI.c #include "HelloWorldJNI.h" JNIEXPORT void JNICALL Java_HelloWorldJNI_sayHelloWorld (JNIEnv *env, jobject obj ) { printf("Hello World"); } 【手順】 [*****@**** jnitest]$ javac HelloWorldJNI.java [*****@**** jnitest]$ ls HelloWorldJNI.c HelloWorldJNI.class HelloWorldJNI.java [*****@**** jnitest]$ javah HelloWorldJNI [*****@**** jnitest]$ ls HelloWorldJNI.c HelloWorldJNI.class HelloWorldJNI.h HelloWorldJNI.java [*****@**** jnitest]$ gcc -fPIC -shared -I/usr/lib/jvm/java-1.6.0/include/ -I/usr/ lib/jvm/java-1.6.0/include/linux/ HelloWorldJNI.c -o HelloWorldJNIlib.so [*****@**** jnitest]$ ls HelloWorldJNI.c HelloWorldJNI.h HelloWorldJNIlib.so HelloWorldJNI.class HelloWorldJNI.java [*****@**** jnitest]$ export LD_LIBRARY_PATH=. [*****@**** jnitest]$ java HelloWorldJNI Exception in thread "main" java.lang.UnsatisfiedLinkError: no HelloWorldJNIlib in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1698) at java.lang.Runtime.loadLibrary0(Runtime.java:840) at java.lang.System.loadLibrary(System.java:1047) at HelloWorldJNI.<clinit>(HelloWorldJNI.java:3) [*****@**** jnitest]$ java -Djava.library.path=. HelloWorldJNI Exception in thread "main" java.lang.UnsatisfiedLinkError: no HelloWorldJNIlib in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1698) at java.lang.Runtime.loadLibrary0(Runtime.java:840) at java.lang.System.loadLibrary(System.java:1047) at HelloWorldJNI.<clinit>(HelloWorldJNI.java:3) [*****@**** jnitest]$ 何を見直すべきかおわかりの方いらっしゃいませんでしょうか.

    • ベストアンサー
    • Java
  • Eclipse:Javaの拡張ライブラリ使い方

    Javaの参考書を見ながら勉強を始めた者です。 そろそろテキストエディタとコンソールでコンパイル・実行 という開発環境から卒業しようと思い、Eclipseを使うことにしました。 Eclipse3.7のインストール、Pleiades 1.3.3による日本語化も終わり、"Hello world"も出力でき、 新しい開発環境も用意できたと思ったころで壁にぶち当たりました。 Eclipseで拡張ライブラリを追加して使用する場合は何か設定をしなければならないのでしょうか? 実はdodai.jarという拡張ライブラリ(参考書の付属)を使って課題を進めているのですが、 これが「テキストエディタとコンソールでコンパイル」環境では上手く使えているのですが、 Eclipseでプロジェクトを作成し、ビルドしたところ下記のようなエラーが起こってしまいます。 ------------------------------------------------------------------------------------------------------ Exception in thread "main" java.lang.Error: Unresolved compilation problems: Dodai を型に解決できません Dodai を型に解決できません ------------------------------------------------------------------------------------------------------ "Dodai"というのは拡張ライブラリのクラス名です。 また、前環境で、拡張ライブラリを使用するにあたり、行ったことは以下です。 ・拡張用ライブラリdodai.jar を /Library/Java/Extensions/配下 に置く。 Eclipseの画面上で自分なりに確認できたことは以下です。 ・Eclipseのパッケージエクスプローラでは、JREシステム・ライブラリーの配下にdodai.jarという項目が表示されています。 ・JLabelのようなJREライブラリのクラスは使えています。 開発環境 ・MacOS10.6.8 ・java version 1.6.0_26(元々JDK(Java SE Development Kit)が入っていた。) ・拡張用ライブラリdodai.jarの場所は/Library/Java/Extensions/配下 ・統合開発環境 Eclipse3.7 ・日本語化 Pleiades1.3.3 Eclipseで拡張ライブラリを追加して使用する場合は何か設定をしなければならないのでしょうか? どなたか、拡張ライブラリのクラスの使い方を教えて下さい。よろしくお願いいたします。

    • ベストアンサー
    • Java
  • Unix上C++でのdllとインポートライブラリの関係

    こんにちわ。 いつも教えてgooにお世話になっているorange_pieです。 UNIX上のC++で作成した自作ライブラリをdllにして配布したいのですが、 Unixでの基本的な考え方を教えてください。 (1)Unix上ではDLLの標準的な名称は”libxxxx.so”とするのが普通ですか?  ※この形式ならLD_LIBRARY_PATH環境変数が検索してくれる。。。 (2)通常、DLLにする場合、インポートライブラリ(.lib)と実際のライブラリ(.so)を作成して、使用する側はインポートライブラリのみをリンクするのでしょうか? (3)配布されたdllを使う側では、Link時にインポートライブラリをリンクして、関連インクルードファイルをインクルードするだけで使えるのでしょうか? (4)上記の(2)のように、インポートライブラリとライブラリの実態を作成する為のコンパイルオプションが見つかりません。(ldのmanを見たのですが、意味がわからないと言うか。。。。。) この質問は、自作ライブラリからlibxxx.soという形のオブジェクトファイルを作り、別プログラムからこのlibxxxをコンパイルオプション(-l)でリンクしてみたら正しく動作したのですが、これでは結局ライブラリの本体が一緒にリンクされている様子で、出来上がった実行形式のファイルサイズが静的ライブラリとしてリンクした時と同じ大きさになっていることに疑問を抱いてしまったものです。  この状態でも、ライブラリの方だけコンパイルしなおして実行すると ちゃんとライブラリの変更点は反映されるので問題は無いのですが、 これでもダイナミックリンク・ライブラリと呼べるのでしょうか?

専門家に質問してみよう