オブジェクト指向であるC++とJavaについて知りたい

C++とJavaは、歴史が長く世界的に見ても汎用的に使われているうえ、ともにオブジェクト指向プログラミング言語です。また、両者ともGoogle社の開発に使われるGoogle三大言語(Java、C++、Python)に含まれています。本稿では、C++とJavaの特徴、および違いについて解説していきます。

■C++とJava


C++とJava、それぞれの特徴をみていきましょう。

▼C++の特徴

C++は、オブジェクト指向、処理が高速、C言語と一緒に使えるといった特徴があります。

歴史

C++(シープラスプラス)はC言語を拡張したもので、1979年にBell Laboratories(ベル研究所)のBjarne Stroustrup(ビャーネ・ストロヴストルップ)によって開発されました。当時は、C++ではなく、「C with Classes」(クラス付きのC)という名称でしたが、1983年に現在のC++という名称になったのです。

2011年に「C++11」へとメジャーバージョンアップされ、いろいろな機能が追加されました。2014年に「C++14」、2017年には「C++17」がリリースされています。

用途

組み込み系システムに強く、自動車の自動運転技術、家電製品やOS(オペレーティングシステム)に使われています。また、3Dやシミュレーションゲーム用のプログラミングや、ロボット工学といった研究分野でもC++による開発が行われており、高速処理が求められる場面で活躍します。

▼Javaの特徴

Javaの特徴は、オブジェクト指向、JVM(Java Virtual Machine)と呼ばれる仮想マシン上で実行するため、どんなプラットフォーム上でも動かせる点です。

歴史

Javaは、1991年にSun Microsystems(サン・マイクロシステムズ)社が始めた「Green」という名のプロジェクトで開発が始まりました。当初はC++を拡張する開発を試みましたが、「ハードウエアに依存しない開発環境」を作るという目標の実現が難しく、「Green OS」と「Oak」と呼ばれるプログラミング言語を開発しました。

「Oak」という名称は、すでに商標登録されていたため、Javaという名称に変更されたのです。

1996年に、「Java1.0」が正式にリリースされ、2017年9月には最新版「Java9」がリリースされました。2010年には、Oracle(オラクル)社によって、開発元のSun Microsystems社が買収され、現在はOracle社が管理、運営を行っています。

用途

企業の生産管理、顧客管理システムのような基幹系システムや、比較的大規模なウェブアプリケーション開発に導入されることが多いです。また、Androidアプリケーション開発においては、標準言語と呼ばれるほどJavaがベースとなっています。

■C++とJavaの違い


続いて、C++とJavaの違いについて説明していきます。

▼互換性

Javaと互換性のある言語はありません。C++は、C言語の拡張版であるため、C言語と互換性があります。

C++の環境下でC言語を動かすことができます。さらに、同一システム内でC言語とC++を合わせて使うこともでき、C言語で書かれた既存システムに、C++で機能追加することも可能となっています。

▼テンプレートの有無

C++の機能のひとつに、テンプレートがあります。テンプレートとは、データ型(文字データ型(String)など)をまとめた原形型を使えるようにし、データ型を気にせずコーディングが行えるという機能です。Javaにテンプレート機能はありませんが、テンプレートに似た機能に、ジェネリクスがあります。

テンプレートとジェネリクスは、処理方法に違いがあります。

テンプレートは、全展開方式であり、型の展開はコンパイル時に行われます。実行性能に優れている反面、ファイルサイズが大きくなるという欠点が特徴です。ジェネリクスは、型消去方式で、型の展開は実行時に行われます。パフォーマンスは劣りますが、コーディングがシンプルという利点があります。

▼難易度

C++の難易度は、かなり高く初心者にはおすすめし難い言語です。難易度の高いC言語の知識と、C++に追加されたオブジェクト指向の理解が必要となります。さらに、Javaに比べポインタの扱いやメモリ管理といった、よりコンピューターの深い部分に対する操作の実装が加わります。

しかし、すでにC言語を学習している場合には習得しやすいです。また、長い間、幅広く使われている言語のため、参考書やネット検索などでたくさんの情報を得ることができ、学習のしやすさは良いといえるでしょう。

Javaの難易度は、C++に比べ低いです。C++にもいえますが、オブジェクト指向という概念や必要性の理解が難しいと感じる方もいます。しかし、ガベージコレクションと呼ばれるメモリ管理機能が標準で備わっているため、コーディング自体は、C++に比べ複雑ではありません。またライブラリが豊富なため、C++に比べ、さまざまな機能を容易に取り入れることができます。

Javaにおいても、世界中で幅広く使われていることもあり、書籍やウェブラーニングなど学習材料が豊富で、学習に困ることはないでしょう。

まとめ

C++とJavaは、オブジェクト指向という共通点がありながら、それぞれ異なる特徴をもっています。ともに、学習コストがかかりますので、初心者の方は用途に合わせて習得したい言語を選択しましょう。高速処理が求められるゲームが作りたい、研究開発で使うという場合にはC++、ウェブアプリケーションやAndroidアプリ開発がしたいということであれば、Javaの習得をおすすめします。

関連記事

ページ上部へ戻る