はじめに

みなさん、こんにちは。八重桜雅子(やえざくら・まさこ)です。今回からJava8.0を用いたプログラミング手法について、基本的な内容からJava 8.0の新機能まで詳細に解説していきます。

本連載の対象は、これからJavaでプログラミングを学ぶ初心者の方です。プログラミングやJavaについての知識がなくても、読み終わったときにプログラミングについての基本的なことが理解できているような超入門の連載を目指して、Javaの機能や特徴、Java8.0で追加された新機能について解説し、ソフトウェアのインストール・開発環境構築から動作確認までを実践しながら、プログラミングの基礎を学んでいきます。誰にでもわかりやすい記事を書くように心がけていくので、よろしくおねがいします。

なお、本連載におけるサンプルコードはWindowsおよびMacOS Xでの動作を想定しています(※著者の環境はOSにWindows7を用いて検証をしています)。

Javaについて

Javaは、1990年代の前半にサン・マイクロシステムズ(Sun Microsystems)によって開発されたプログラミング言語で、1996年に最初の正式バージョンであるJava 1.0がリリースされました(※サン・マイクロシステムズは2010年2月にOracleと合併)。クライアント側のJavaアプリケーションやサーバサイドで動作するアプリケーション、携帯電話をはじめとする組み込みアプリケーションなどのさまざまな分野において、アプリケーションを開発し実行する環境として使われています。

たとえば、日本でも人気のサンドボックスゲーム、マインクラフト(PC版)はJavaで開発されています。また、Androidで動作するアプリケーションはすべてJavaで作られていますし、AtlassianのStash(Gitリポジトリ管理ツール)EvernoteはサーバサイドでJavaを使っています。2010年まで火星で観測を行っていたアメリカの火星探査車「Spirit」もJavaで動いていたそうです。このように、分野問わずさまざまな場所でJavaは活躍しています。

特徴は?

Javaはオブジェクト指向プログラミング言語のひとつです。オブジェクト指向をうまく使うことにより、大規模なソフトウェア開発プロジェクトを管理する難しさが軽減され、ソフトウェアの品質が良くなり、リスクを回避することができます。また、ライブラリとして広く応用可能なモジュールを開発することで、プロジェクトをまたがってソフトウェアを再利用することが可能になります(※オブジェクト指向の詳細については連載の後半で説明します)。

もうひとつの特徴として、Javaはプラットフォームに依存していないということが挙げられます。プラットフォームに依存しないため、Javaのプログラムはさまざまなハードウェアやオペレーティングシステム上でも同じように動きます。

また、ガベージコレクション機能を持っているということもJavaの特徴のひとつでしょう。ガベージコレクションとは、プログラムが動的に確保したメモリ領域のうち、必要のなくなった領域を自動的に解放する機能です。この機能があることで、プログラムの開発生産性と安定性が高くなり、プログラマの負担が減少します。ガベージコレクション機能がないC++やほかの言語では、プログラマ自らがメモリの管理をしなければなりません。これは複雑な作業なので、コーディングミスが原因で意図しない動作になったり、可読性の低いソースコードになってしまう危険がありました。ガベージコレクション機能では、このような問題の多くを未然に防ぐことができます。

ガベージコレクション

そして、Javaでは数多くのライブラリにより、コンピュータネットワークを使用するソフトウェアを効率良く開発することができます。ネットワークでソケット通信を行うソフトウェアを実装したり、HTTP/FTP/SMTPなど、近年使用されているいろいろなプロトコルを用いたプログラムを開発することが可能です。

Javaが動作する仕組み

たとえば、CやC++といったプログラミング言語であれば、記述したソースファイルはコンパイル後、対象のマシンで実行できる形式に変換され、OSによって直接実行されます。これに対してJavaの場合、ソースファイル(javaファイル)はコンパイルされると、JVMで使用できるバイトコードに変換されます。そしてJVMが、そのコードをOSで実行できる形式に変換することで、プログラムが動作します。

Javaが動作する仕組み

JVM(Java Virtual Machine:Java仮想マシン)とは、Javaのプログラムを実行環境に応じて変換・実行するためのソフトウェア(またはその仕組み)です。JVMはJavaのバイトコードで記述されたプログラムを、対象のコンピュータで実行可能な形式に変換して実行します。このような仕組みになっているため、たとえばWindowsでコンパイルしたJavaプログラムをLinux上で実行するなど、Javaは実行環境に応じたプログラムを用意せずとも、さまざまな環境で動作させることができます。

バージョン

Javaにはプログラムを作成する際に必要となるソフトウェア開発キット(JDK:Java Development Kit)があります。JDK1.0以降、何度かのメジャーバージョンアップがありました。そしてバージョンアップに伴い、多くのクラスやパッケージが標準ライブラリに追加されています。

標準ライブラリは、JDK 1.0で200程度のクラス/インタフェース数でしたが、Java 6では4000以上に増えています。バージョンアップにともなってSwingやJava 2Dといった(当初は)新しいAPIが追加されており、言語仕様も変更されてきました。その一方、非推奨/削除されるAPIも数多く存在し、もともとJDK 1.0から存在していたクラスのメソッドの多くはすでに非推奨であったり、削除されたりしています。

2015年5月現在、Javaの最新バージョンは8.0です。このバージョンでは、Javaの言語機能が大きく拡張されています。最も大きな変更が、「ラムダ式の導入」(Project Lambda)でしょう。ラムダ式とはJavaプログラムの新しい表記法で、クロージャと呼ばれることもあります。ラムダ式は下記のような文法に従い、処理の実装をシンプルに記述できるようになります。

( メソッドの引数 ) -> { 処理内容 }

※詳細は本連載にて解説します

それ以外の変更点としては、「型アノテーション」や「新しいDate and Time API」が追加されたことが挙げられます。上記以外にもいくつかの変更点がありますが、それらについては順次、本連載内で紹介していく予定です。

まとめ

今回はJava言語の概要について解説していきました。本記事をとおして、Javaの特徴や機能の基本を学習することができたと思います。次回からは、開発環境のセットアップから動作確認までを行っていく予定です。

執筆者紹介

八重桜雅子(YAEZAKURA Masako)

以前はシステム開発会社で約8年間働いていました。JavaやJavaScriptなどのWeb系の技術をよく使用していました。