Java ストリーム

ストリームとは

Javaでは、ファイルとデータのやり取りをする場合(データの入出力)、ストリームという考え方を使って行う。

ストリームとは、ファイルの読み書きや書き出しにおけるデータの流れのこと。
データがファイルとプログラムの間を流れていくイメージ。


処理の流れ

  1. データを流すためのストリーム(川)を用意

  2. ファイルからプログラムorプログラムからファイルへデータを流す

  3. ストリームを閉じる

この処理をオブジェクトが仲介役となってデータのやり取りを助けている。



ストリームの種類

  • 入力ストリーム:ファイルやネットワークからデータを受け取る

  • 出力ストリーム:ファイルやネットワークにデータを送り出す

  • バイトストリーム:バイト単位(バイナリ)でデータを扱う
    InputStream/OutputStreamクラス(スーパークラス
    ex) 画像データ

  • 文字ストリーム:文字単位でデータを扱う
    Reader/Writeクラス(スーパークラス
    ex)テキスト



バッファ

データを一時的に記憶する場所。 これを使うことで、ファイルにいちいちアクセスしなくても、一気にデータを読み込んで溜め込むことができる

JAX-RS

JAX-RS

The Java API for RESTful Web Services の略。



RESTful とは

そもそもREST(Representational State Transfer)とは

  • HTTPを使ったシンプルなWebサービス

  • すべてのリソースは一意なアドレスで識別される

  • 特定のHTTPメソッド(GET、POST、PUT、DELETE)を使って操作する

  • JSONXMLYAMLがサポートされている

このRESTの仕様に沿ったものをRESTfulと呼ぶ。



もとに戻ってJAX-RSとは

The Java API for RESTful Web Servicesを文字通りに訳して考える。

RESTの仕様に基づくWebサービスのための機能を提供するJavaAPI。っていうことになるね。

S3・CloudFront

S3とは

AWSの中核にあるストレージサービス。


ストレージとは

訳すと貯蔵、保管。
データを保管・保存する場所のこと。


ストレージサービスとは

インターネット上で、ファイル保管用のスペースにデータを保存することができるサービス。
インターネット上にデータを保存できる場所があるってことですかね?




CloudFront

AWSが提供する高速・高パフォーマンスなコンテンツ配信サービス。


CloudFrontの仕組み

オリジンサーバ:配信するオリジナルのファイルを置いておくサーバ。
エッジサーバ:ユーザーへの配信を行うサーバ。


ユーザーをCloudFrontドメインへアクセスさせて、CloudFrontのエッジサーバを経由した配信を行えるようになる。


ユーザーからリクエストを受けたエッジサーバーは、要求されたファイルがキャッシュされているか確認する。

キャッシュされてない
→オリジンサーバからファイルをとって、そのファイルをユーザーに配信する。
ファイルをキャッシュする。

キャッシュされている
→オリジンサーバには見に行かず、エッジサーバでキャッシュされたファイルを配信する。

キャッシュ

キャッシュとは

よく利用するデータを蓄積させて、データ処理を速くする仕組み。

詳しく言うと、
一度開いたwebページのデータを、通信経路のどこかに保存しておいて、次に同じページを開くときに速く表示してくれる。

一度アクセスしたページはURLで覚えられている。

Apache・nginx

Apache

webサーバーのソフト。
コンピュータにApacheを入れると、そのコンピュータがwebサーバーをしての仕事ができるようになる。

webサーバー

webサーバーとは、ブラウザからページを調べた時に、そのページの情報を返してくれるサーバーのことを指す。
ただ、webサーバーは、本来はただのコンピュータのため、私たちがいつも使っているパソコンと変わらない。
普通のコンピュータにApacheやnginxなどのwebサーバーソフトを入れることによって、webサーバとなる。



nginx

エンジンエックス。
webサーバの一つ。
Apacheは大量の処理ができないため、大量のアクセスを処理できるようなwebサーバが欲しくて作られた。
シンプルな作りになっているため、自分で処理せずに他に割り振ることで、メモリ消費が比較的少ない。