「理解できる」 プログラミング言語・Javaの基礎知識

Java

皆さん、Javaというプログラミング言語をご存じでしょうか?現時点でプログラミング入門者でもある筆者は、プログラミングを独自で学ぼうと思った時にどの言語を学ぼうかと考えて・・ Javaを学ぶ事に決めました。

【プログラミング】

プログラミングとはコンピュータを制御するためのプログラムを作る事です。コンピュータにとってプログラムが指示書でありコンピュータはプログラムの明確な指示通りに動作します。わかりやすく言いかえると「ある問題を解くための明確な手順」になり、これをアルゴリズムと呼びます。詳しくは「プログラミングについて」で解説しています。

世の中でアルゴリズムとして成り立つあらゆる事はプログラムによって作る事ができ、アルゴリズムが成り立たないものはコンピュータで再現する事が出来ません。これを決定不能といいます。

この記事だけ見ればJavaがどのようなプログラミング言語なのかある程度把握できるようにまとめてみました。ご覧ください。

SPONSORED LINK

photo by Pascal Volk

▼この記事の目次

  1. プログラミングを学ぶ目的
  2. 「プログラミング言語」Javaとは
  3. Javaの特徴
  4. Javaの種類
  5. この記事のまとめ

プログラミングを学ぶ目的

一言にプログラミング言語といってもわりとメジャー所では・・

  • C言語
  • C++
  • C#
  • Objective-C
  • Java
  • Ryby on Rails
  • JavaScript
  • Python
  • PHP

プログラミング言語は沢山ある・・

  • Swift
  • bash
  • Go
  • Scala
  • LISP

ここに挙げた言語以外にもプログラミング言語は存在しています。自然語 (人間が話す言葉) が日本語、英語、スペイン語、中国語とあるように、コンピュータに意思を伝えるためのプログラミング言語も多く存在しています。ちなみにGoという言語はGoogleが提供しているプログラミング言語です。

全てのプログラミング言語を把握してから「じゃあ、なにをしようか・・。」

だと時間がいくらあっても足りません。なので筆者は、まずは「目的」→そして「言語選び」→「学習」という順序で行う事にしました。目的とはアプリを制作したい、iOSアプリだけ制作したい、掲示板をつくりたい、組み込みソフトウェアを開発したいなどといった「プログラミングで何がしたいのか」です。

あくまでも目安なので下記の言語で開発しなければならないと言うわけではありません。

  • 「Androidアプリ制作」… Java
  • 「iOSアプリ制作」… Objective-C、Swift
  • 「PCゲーム」… C言語、C++
  • 「掲示板、動的WEBサイト」… PHP
  • 「Chrome拡張機能」… JavaScript (jQuery)
  • 「組み込みソフトウェア」… C言語
  • 「ロボット」… アセンブリ言語、C言語

筆者はAndroidアプリ開発がしたかったのでJavaにしました。iOSもいずれ・・ とは思っていますがiOSアプリも制作するならいずれはObjective-CかSwiftも習得する必要があるかもしれません。2014年にアップルが新プログラミング言語Swiftを発表したのは記憶に新しいと思います。

なぜAndroidアプリ?

なぜiOSアプリではなくAndroidアプリを選んだかというと、筆者がAndroidを持っているのもありますがいざとなればエミュレーター (仮想環境で動作確認) で開発が出来るのでこれが決めてではありません。

このグラフを見てください。日本は世界で稀にみるiPhone大国であって、世界ではAndroidの方がシェア率が高いのがわかります。

java-develop

世界のスマホはAndroid優勢だが日本は変わらずiPhone/iOS | ASCII.JP – ビジネス

Androidアプリはこのように日本よりも海外の方が圧倒的シェアを誇るのでAndroidアプリを作って公開→ 外国語に翻訳し海外版のストアでも公開という流れを作る事もその気さえあればできるわけです。

最近ではAndroid/iOSと両方に対応しているアプリが増えてきているようですが。余談ですが日本ではiPhoneの新モデルが発表される度にどこかしらでiPhoneケースバブルが起きているという噂を聞く位なのでゆくゆくはAndroid版、iOS版を両方リリースするのが無難かもしれません。

「プログラミング言語」Javaとは

Java (ジャバ) は1995年5月23日にサンマイクロシステムズ社 (Sun Microsystems) が、開発者向けイベントの「Sun World Expo」で発表したプログラミング言語です。

Javaの由来

名称がJavaScriptに似ているので混合してしまいそうですが、仕様の方は似ているというわけではありません。

なぜ似ているのかというと、JavaScriptは元々1995年にLiveScriptという名称で発表されました。当時注目を集めていたJavaにあやかって、業務提携をしている事もありJavaScriptに名称変更されたというのが経緯です。

一方Javaの由来の方は開発者らの名前の頭文字から採用した、開発者チームの近所にJava Streetがあった等と諸説ありハッキリとはしていません。また、意図的に由来を複数当てはまるようにしたのかどうかもわかりません。

複数の諸説の中で最も有力とされているのがコーヒー説で「ジャワコーヒー / Java Coffee」のJava(ジャワ)から来ています。ジャワコーヒーというのはインドネシア産のコーヒーの事でインドネシアにあるジャワ島からきています。ジャワカレーなんかも有名ですね。そしたらなぜこのコーヒーが由来になっているかというと、このようなエピソードです。

Java Coffee

Javaは元々はOakという名称で開発が進められていました。公開目前となった時に、Oakという商標がすでに登録してある事が発覚しました。そして、プログラミング言語として公開するためには別の名称に変更しなければならないという事になります。

このような出来事がありましたが、ある日の事開発チームが行きつけのカフェで打ち合わせをしていました。

そこのウエイトレスがたまたま着ていた「It’s a jungle out there, So drink your java」というTシャツを見てJavaにしようという事になったのだ由来だとか。

photo by shinjisoo11

「Javaの父」James Gosling氏

James Gosling
photo by Stephen Chin

「Javaの父」と呼ばれる人物がいます。Java開発を手掛けたJames Gosling氏 (写真) です。

James Gosling氏は2009年にサン・マイクロシステムズがオラクルに買収されるまでサン・マイクロシステムズのフェロー (大企業の特別研究員) 兼副社長を勤めていました。オラクルによる買収1年後には退社して、Androidアプリの開発言語がJavaという事もありGoogleに入社しましたが退社しています。

Javaの特徴

Javaは他のプログラミング言語と比べてどのような特徴があるのでしょうか。JavaはC言語、C++を元にして開発された言語です。OS環境を問わずに動作するのが保証されているというのが一番の特徴とも言えます。

オブジェクト指向言語

オブジェクト指向というのはJavaに限らず開発現場で比較的採用されているようです。実は筆者が1、2年前にJavaを学ぼうとしてあえなく撃沈したのが、何を隠そうこのオブジェクト指向なのです。ネット上でも理解しずらい概念という事でよく紹介されますし、オブジェクトで言うところの物を現実世界の人、車、動物などに例えるという類の話もよくみかけます。

筆者はなんとなく理解できているつもりでしたが、まだ自信がないので時間ある時に集中して整理しながら紹介したいと思います。オブジェクト指向についての概念はJavaのプログラミングを少しかじってから覚えた方が「こういう事なのか」というように感覚がつかみやすいかもしれませんね。

Java仮想マシン (JVM/Java Virtual Machine)

Java言語の仕組みの中にJava仮想マシンと呼ばれるソフトウェアがあります。仮想というのは物体として存在する物としてのマシンではなく、仮想上でマシンのような動きをするプログラムという事です。単に物体として存在しないので仮想です。

ではこのJava仮想マシンは、一体どのようにマシン的な動作をしてくれるのかというと、Java言語によって記述されたコードを一度コンパイラによりバイトコードへと翻訳されます。バイトコードというのはソースコードと機械語の中間に位置し、Javaにとっては機械語になります。バイトコードは特定の機種、OSに依存しないという性質を持っているので動作環境を選ばないわけです。

このバイトコードを機械語として最終的な翻訳をするインタプリタの役割をするのがJava仮想マシンになります。画像として見た方がわかりやすいと思うので図にしてみました。

java-develop5

Java仮想マシンの動作としてはこのような形になります。

Javaの種類

Javaで提供されているAPIなどの種類を紹介します。

JDK

Java Development Kit、略してJDK。そのままの意味でJavaを開発するためのソフトウェアのKit (訳…道具、一式) です。いわゆるパッケージですね。

このJDKが無いとJava開発をする事が出来ません。JDKの中にはJREが入っているようです。

JRE

java-develop4

Java Runtime Environment、略してJRE。オラクルが提供していて、Javaランタイム環境と呼びます。Javaで制作されたプログラムを実行するために必要となるソフトウェアのパッケージです。

JREの中には、API (アプリケーションインターフェイス) とバイト中間コードを翻訳するためのJava仮想マシンも入っています。

Java SE/EE/ME

Java SE、Java EE、Java MEという各APIがJavaのプラットフォームとして用意してあります。

それぞれJavaへの機能として提供されているものですがそれぞれざっくりですが見てみましょう。

  • Java SE (ジャバエスイー/旧 J2SE)

Java Standard Editionの略です。でソフトウェア開発を行うためのいわば標準的な機能が提供されています。Javaを始めるならJava SEからになるでしょう。

  • Java EE (ジャバーイーイー/旧 J2EE)

Java Platform Enterprise Editionの略です。企業システム・大規模システムを開発するための機能が提供されています。サーバーサイドJava (サーバ側でJavaを動作させる) の機能はJava EEに入っています。

  • Java ME (ジャバエムイー/旧 J2EE)

携帯電話、家電というリソースが制限されている組み込みソフトウェア開発向けに提供されています。

この記事のまとめ

オブジェクト指向を英語にするとObject Oriented (略してOO) です。なんだか簡単な概念ではないような気がしますよね。筆者がプログラミングを学ぼうと思ってから特に思う事があります。プログラミングに限らずパソコン用語には英語が沢山ありますが、プログラミングは英語を知らない程不利なのではないかと。

わかりやすい例えを言うと、英文のWEBサイトを見る時、また全て英語表記のWordPressプラグインを使う時に全て日本語に翻訳してもニュアンスの違いでわかりずらい時ってありませんか?全く同じ機能でもこれが元から日本語表記だったら簡単なのにって思う事が。

プログラミングは英語と記号を元にして出来ていますから英語圏以外の人がプログラミングを始めるのと、英語圏の人がプログラミングを始めるのとではスタートラインの段階ですでに壁の高さが大きく違うかもしれません。現になでしこという日本語のプログラミング言語は初心者からでも簡単みたいですし。

という事で今後は英語に必要な知識も筆者自身も詳しくなるためにちょいちょい紹介していけたらと思います。

Javaについては本格的に環境を作る前にブラウザ上でJavaを簡単に作る事ができるというWEBサービスを発見したので、そのサービスを利用して作って覚えながら紹介していこうと思います。

関連記事




この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitterでめちゃログをフォローしよう!