HOです。


スマートフォンに搭載するJavaを作るという大それた目標を立てた私ですが、

まずは、Javaの開発ができる環境を作ることから始めたいと思います。

(前回の記事はこちら


早速始める…前に、

今回は、どのような仕組みでJavaが動くかについてまとめたいと思います。

このことがわかれば、どのような整備が必要かが見えてきます。




初めに、プログラムの基礎的な部分に触れてみたいと思います。
プログラム言語をかじったことがある方なら、よくご存知な内容と思いますが、

私が目標を達成するまでの様々な過程を書いていきたいので、取り上げます!


私たちの作るプログラムが、どのようにコンピュータで実行できるかですが、

①そのプログラム言語の定めた文法で、プログラム(ソースコード)を書きます。

②作ったプログラムを、コンピュータが実行できる形(実行ファイル)に変換します。

③変換したプログラムを実行します。


これが、私たちがプログラム言語を記述してから

実際にパソコンが動作するまでのおおまかな流れとなります。




プログラムを実行する方法により、

プログラム言語には、大きく2種類に分けることができます。

「インタープリタ型言語」と、「コンパイル型言語」です。


まず「インタープリタ型言語」についてです。

「インタープリタ(interpreter)」とは、日本語で「通訳者」などと訳せます。

"日本語を話す人"から"外国語を話す人"へ通訳をする場合、

会話ごとに一区切りずつ翻訳していきます。

同じように、

"人間の理解できるプログラム言語"から"コンピュータが理解できる機械語"へ

逐次通訳する(実行する)という方法を取るプログラム言語のことを言います。


一方「コンパイル型言語」です。

「コンパイル(compile)」とは、日本語で「編集する、まとめる」などと訳せます。

"日本語で書かれた本"を"外国人に読んでもらう本"として翻訳するとき、

あらかじめ本全体を翻訳してから読んでもらうのと同じく、

"人間の書いたプログラム言語"を"コンピュータが読める機械語"に、

あらかじめプログラム全体を翻訳しておき、必要に応じて読んでもらう(実行する)

という方法を取る言語のことを言います。


それでまとめてみると、

「インタープリタ型言語」は、「実行時に逐次通訳」するタイプなのに対し、

「コンパイル型言語」は、「あらかじめ翻訳しておいて、必要に応じて実行」するタイプと言えるかもしれません。


ちなみに、実行速度という意味で、2種類の言語を比較すると、

「インタープリタ型言語」はその都度通訳して実行しているわけですから、

あらかじめ翻訳している「コンパイル型言語」の方が実行時の速さは速くなります。




さてここからが本題ですが、

Java は基本的にはコンパイル型言語ではあるのですが、

コンピュータ(CPU)によって言語が異なる機械語ではなく、

コンピュータ(CPU)に依存しない「中間コード」にコンパイルします。


私の前回 の投稿で、

JAVAの特徴は「基本的にはどのようなOSやCPUでも動作できる」と書きましたが、

その仕組みは、この「中間コード」にあったわけです。



「それじゃあ、コンピュータは中間コードをどうやって理解するのだろう」

 …と思われた方は鋭いです。

実は、さらにこの「中間コード」を、

実行するコンピュータの「機械語」へと翻訳するソフトがあるのです!

このソフトを「Java仮想マシン」または「Java VM (Virtual Machine)」と言います。

Java仮想マシンは、Windows用、Linux用などと、OSごとに用意されています。

これによって様々なOSやCPUごとの違いを吸収する仕組みなのです。

Java仮想マシンは「Java実行環境(JRE=Java Runtime Environment)」という

ソフトウェアセットに含まれています。



それで結論として、

Javaを実行するためには、

「JavaVMを含む、Java実行環境(JRE)」が必要ということです。




長くなりましたが、Javaをご存知の方には常識的な情報でありました。(;一v一)



ところで、Java実行環境をパソコンに入れても、

まだJava開発するための環境は整っていません。

それで次回 は、Javaの開発に必要なソフトについて取り上げます。

HOです。

すでに投稿しているHAさんと見分けにくいですが、

私HOは、ブログ初登場です。


私は10年程前に、シスアド初級(現在廃止、今はITパスポートが近似の試験)と、

基本情報処理技術者を取得しました。

今もうひとつステップアップすべく、勉強に励みたいと思います。


まずは、プログラム言語関連でまとめて行こうと思います。


今まで主に勉強したのは、個人的に勉強したものも含め、VBA、C、Javaです。

しかし、企業で実際に利用された実績があるのはVBAのみです。

それで勉強を兼ねて、このブログではJavaのまとめを掲載していこうと思います。


Javaのいいところは、基本的にはどのようなOSやCPUでも動作できることだ、といわれています。またネットワーク環境で利用する点でも充実した機能があります。


そこで、Javaの基本からスタートして、とりあえずの目標としては、スマートフォンに簡単なアプリを動かせるようになることにしようと思います。(手始めにしては大胆すぎるでしょうか(^-^;)、しかも次なる目標も控えているのですが・・・)


さあ七転八倒…ではなく、七転び八起きの精神で、頑張っていきたいと思います。

どうぞよろしくお願い致しますm(_ _)m



続く記事へ

HAです。
徐々に暑くなり梅雨明けも間近な気がしますが
皆様お元気でしょうか?


さて、通信を行なったり解析したりする上で、
ネットワークの基本的な構造を理解しておくことは必須ということですので

まず「OSI参照モデル」の基本構造のまとめをしたいと思います。

ーーーーーーーーーーーーーーーーーーーーー

OSI参照モデル(Open Systems Interconnection)は
全体で7つの層から成っている。

7アプリケーション層
6プレゼンテーション層
5セッション層
4トランスポート層
3ネットワーク層
2データリンク層
1物理層

■通信方法

送信する際送信側のデータは7→6→5・・・2→1と
その都度必要なヘッダが付けられながら下りてくる。

ゲートウェイに転送される。
(通常のブロードバンドルータは
1,2,3層から成っている。)

受信側は送信側とは反対に1→2→3・・・6→7と
各々の層で付けられたヘッダを紐解きながら最終的に送信時のユーザーが
意図した通りに受信側のユーザーに再現される。

■それぞれの層はどんな役割か

▼7アプリケーション層
ユーザーが使用しているアプリケーションの中の
通信の分野・その部分のプロトコルを担当する。
相手の同アプリケーションが解析して同じデータを再現できるようにしたり
アプリケーション固有のエラー報告などを送信させることも含まれる。

▼6プレゼンテーション層
「きちんと表示できるようにする」という部分を担当。
ネットワークを介する上で、送信されたデータが改変されないように
プレゼンテーション層を通る際に、
まずネットワークで標準化されている形式にデータを加工する。
受信側は加工されたデータを元のデータに戻す。

▼5セッション層
実際に通信する際にどのようにデータを送出するか判断して制御する。
基本的に転送する際のタイミングを管理する。

▼4トランスポート層
セッション層から与えられたタイミングの命令を受け
実際にコネクションを確立すること、切断することを行う。
データが確実に転送されたかの信頼性を保証するために
経路の確立、通信手段を作る、到達したかの確認、データの再送の役割。

▼3ネットワーク層
実際にデータを届ける。
アドレス情報などを付与する。
最終の目的地までのデータ転送を担当する。
(↑データリンク層と比較)

▼2データリンク層
直接接続された機器同士でデータのやり取り
最終の目的地までではなく、次の機器まで、一区間のみのデータ転送を担当
(↑ネットワーク層と比較)

▼1物理層
データを電圧に変換したり、光に変換したりして、
物理的な線、通信媒体を通す処理を担当する。


■TCPは第4層、IPは第3層、MACは第2層のプロトコル。

プロトコル等の詳細はこちらに載せられています。

OSI参照モデル・Wikipedia



トラブルの切り分けに役立つ基礎知識として
理解を深めておきたいと思いました。