0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Java APIとは何か

Last updated at Posted at 2021-04-21

■ APIとは

"Application Programming Interface"
簡潔にいうと、外部から呼び出して利用するシステム
例えば「Facebook Graph API 」
facebookのユーザー情報を自分のアプリケーションに入力してもらい、facebookのAPIに問い合わせ、true or falseでログインの可否を返してもらう
他にはクレジット系の課金システム ⇒ GMOのAPI
ユーザー情報の登録や利用、true or falseで返す など


■ JavaのAPI

JavaもAPIを標準で誰でも便利に使えるクラス(オブジェクト指向のクラスと同じで、呼び出して使える)を大量にまとめている
よく見るJava SE や Java EE は、これらJavaが提供しているAPIをまとめたもの

※補足:Java SE、Java EEについて

Java SE (Java Platform "Standard" Edition)は"Standard"、つまり基本的なAPIをまとめたもの Java.lang.Stringクラスはここに入っている
Java EE (Java Platform "Enterprise" Edition)は"Enterprise"(企業)、つまり企業システムなど大規模な開発を行う場合に必要となるAPIをまとめたもの
Java SE + 拡張機能 というイメージ
SE、EEともに定期的にバージョン更新され、新たな機能が追加されていっている(例えば、ラムダ式やStream APIなどはJava 8で追加された新機能)

(参考)
https://www.javadrive.jp/start/install/index5.html
https://www.sejuku.net/blog/12902

(以下続き)

Eclipseをイメージすると、関連する○○クラスはまとめて○○パッケージに格納されている
APIも同じで、大量に用意したクラスはそれぞれのパッケージに格納されており、よく聞くJava.utilパッケージや、Java.langパッケージがそれにあたる

またこれも同じく、通常作成したクラスは当たり前だがフィールドとメソッドを持っており、APIも同じく各クラスに様々なメソッドを持っている
例えば、文字列の長さを計算する「文字列変数名.length()」はJava.langパッケージのStringクラスが持っているメソッド
因みに配列の要素数を取得する際に使用した「配列名.length」は別物、メソッドではなく配列のフィールド

配列のフィールド…?(未解決)
⇒ 配列はそもそも参照型のデータ型であり、int型などの基本データ型の変数のように各要素1つ1つに値そのものが格納されているわけではない

int[] n = new int[5];

上記のように new することで
1.コンピュータのメモリに int 型の要素を5つもつ配列の領域を確保し
2.さらに配列変数 n の領域がメモリ上に確保され
3.最初の要素の「アドレス」が配列変数に代入される
つまり配列はインスタンスであり、そのフィールドとして length を持っている?


■ APIの利用

APIを実際のプログラムで利用する場合、例えば乱数を発生させるnextInt()メソッドを例に

public class Main{
    public static void main(String[] args){
        int a = new java.util.Rondom().nextInt(100);
        system.out.println(a + "点です")

意味的にはnewでRondomクラスをインスタンス化させて、クラス内のnextIntメソッドを実行している
上記のようにパッケージ名を含めたクラス名を完全修飾名というが、java.utilパッケージのクラスを何度も使用する場合は、毎回の記述が面倒なため、クラス全体でインポート(パッケージ外のクラスを読み込む)する
また、クラス内のメソッドを複数使用する場合はクラスも含めてインポートする

import java.util.Rondom;
//パッケージすべての場合は
import java.util.*;

因みに、system.out.println()もJavaの標準APIで用意されているメソッド(Java.langパッケージのsystemクラス)のため、本来であればJava.langの記述、若しくはインポートが必要だが、Java.langパッケージに関しては使用頻度がかなり高いため、デフォルトでインポートされるようになっている

また参照型として使用している「String」も、Java.langパッケージに含まれるStringクラスで、比較の際に使用するequalsメソッドなどを含んでいる(先述のlengthメソッドも)

(参考)
https://www.internetacademy.jp/it/programming/java/using-java-api-and-class-library.html
https://style.potepan.com/articles/28932.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?