プログラミング言語にJavaとC++と言うものがある。どちらもC言語を参考にしていて似ている部分もありますが、違う部分も多いようです。どういう共通点や相違点があり、特徴や難易度・性能はどうなのかを、C++とJavaの両方を経験しているプログラマでもあるライターのwoinaryと一緒に解説していきます。

ライター/woinary

某社で社内向け業務システムの開発、運用を30年近くやっていたシステム屋さん。C++やJavaの経験者で、企業で使うアプリをつくっていた。現在はフリーランス。ガジェットやゲーム、ラノベが大好きなおっさん。

C言語から生まれた?JavaとC++の気になる関係は?

image by iStockphoto

コンピュータのプログラムをつくるにはプログラミング言語が必要です。プログラミング言語は数多く、ある調査によるとそれなりの利用者がいるものだけで250言語、その他のものも含めると1000以上とも言われています。

そのプログラミング言語の中でも広く使われているのがC++とJavaです。どちらもC言語という、同じく広く使われていた言語を参考にして新しくつくられたプログラミング言語になります。各種アンケートでも人気の高いC++とJavaはどういう関係があり、何が違うのかを見ていきましょう。

C++:C言語を改良した次世代言語

C++は1983年にビャーネ・ストロヴストルップが発表した言語です。この時すでに様々な用途で使われていたC言語を元に、オブジェクト指向などの他の言語が持っていた便利な機能を取り入れています。

その特徴は名前に「C」が残っているように、C言語のソースプログラムもそのまま動くことです。また、C言語で書かれた便利なプログラムをまとめたライブラリをそのまま利用できます。ただし、2018年以降、C言語とC++言語はそれぞれアップデートを行った結果、新しいCの独自機能についてはC++では使えなくなりました。

Java:C言語と似ているが他人?

開発者は違いますが、C++はC言語を元にしているので親子のようなものです。実際、C言語で書かれた過去のソースプログラムやライブラリをC++でも活用できます。一方、JavaはC言語を参考にはしていますが、まったく新しく作られたものです。

Javaは1995年にサン・マイクロシステムズ社が発表しました。2010年以降はオラクル社が管理しています。元々は家電の中に入っているマイクロコントローラという小さなコンピュータ向けのものです。しかし、パソコンやスマホなどにも広く使われています。C言語を参考にしているので似ている部分もありますが、考え方の違う部分も多いです。そのため、C++がC言語と親子の様な関係であるのに対して、Javaは似ている他人となります。

似ているようで違う?JavaとC++の共通点とは

image by iStockphoto

JavaとC++はどちらもC言語を元にしているため似ている部分も多いです。単にプログラムの書き方、文法が似ているというよりも、利用分野や使い方に似ている部分がいくつかあります。違いを見ていく前に、まずは共通点を確認しましょう。

様々なアプリケーション作成で大活躍

両者の元になったC言語を含めて、普段利用する様々なアプリケーションを作成するためにJavaやC++はよく使われています。例えば、Windows PCで使うオフィスアプリや各種のアプリ、ゲームはもちろん、Webで提供されている各種サービスもJavaやC++で作成されているものも多いです。JavaやC++がなければ、これらの便利なアプリも使えなくなるかもしれませんね。

コンパイルって何?プログラムを動かすために変換が必要

プログラミング言語は、人間が書いた元になるものをあらかじめコンピュータが実行できる機械語に変換しておくものと、変換しながら実行するものにざっくり分けることが可能です。

元になるものがソースプログラムやソースコード、あるいは単にソース、変換したものを実行ファイルやオブジェクトコード、オブジェクトなどと呼びます。

JavaもC++も、ソースプログラムをあらかじめ実行ファイルに変換するタイプのプログラミング言語です。このタイプをコンパイラ言語変換作業をコンパイルと呼びます。パソコンで動くアプリケーションの多くはコンパイルしたものです。その代表がJavaやC++になります。一方、変換しながら実行するものはインタプリタ言語です。

\次のページで「クラスとオブジェクトとは?オブジェクト指向プログラミング言語」を解説!/

クラスとオブジェクトとは?オブジェクト指向プログラミング言語

JavaとC++の共通点としてはどちらもオブジェクト指向を採用しています。プログラムの中ではデータを変数というもので扱い、よく使うプログラムの部分をまとめた関数というものを使って処理することが一般的です。

オブジェクト指向はざっくり言えばこれらをオブジェクトとしてまとめたもの。この考え方は1970年代に誕生しました。ただ、最初は研究者が中心ですぐには普及しなかったのです。その後、C++が誕生した1980年代前半にようやく知られるようになり、Javaが登場した1990年代にJavaとともに広がります。

その後は一般的になり、多くのプログラミング言語がオブジェクト指向を取り入れたのです。そのオブジェクト指向の中でも重視されるのがクラスという考え方。オブジェクトのテンプレートのようなものと考えてください。ただ、中にはクラスという考え方のないオブジェクト指向の考え方もあります。

やっぱり違うJavaとC++、その特徴や難易度を比べてみよう

image by iStockphoto

JavaとC++は似ていますし使われるところも似ています。ただ、それぞれの狙いは違う部分も。ここでは、JavaとC++の違いをその背景も含めて見ていきます。

技量が問われるC++、誰でも使えるJava

JavaとC++の一番大きな違いはプログラミングの考え方です。元になったC言語はWindowsやLinuxといったOSからアプリケーションまで様々なプログラムをつくることを目標にしています。そのため、使いこなすには勉強が必要です。その代わり、経験豊富な技術者がC言語を活用すると効率のよいプログラムができます

JavaもC++もC言語を元にしていますがその考え方は正反対です。C++はC言語のよいところを活かした上で、オブジェクト指向を取り入れてさらに強化することを目指します。一方、JavaはC言語の難しい部分をJava側でうまく隠しオブジェクト指向を使って誰でも簡単にプログラミングできることを目指したのです。

そのため、C/C++はプログラマの習得が難しい反面、性能のよいプログラムを書くことができます。対してJavaは誰でも一定レベルのプログラムが書けることを目指したのです。

どこでも動く?Javaの仕組み

もう一つ大きな違いがあります。コンパイラ言語はソースをコンパイルしてプログラムを作ると説明しましたよね。このプログラムは多くの言語では特定の環境でしか動きません。例えば、Windows用にコンパイルしたプログラムはMacでは動かないのです。C言語もC++言語もこれは同じ

一方、Javaはどこでも動くことを目指したのです。どこのOSでコンパイルしたものでも別の環境に持っていって動かすことができます。そのため、OSの上でJavaプログラムを動かすための仮想マシンというものが必要。その代わり仮想マシンが動くところであればWindowsでもMacでもLinuxでも動くのです。これは元々家電用につくったことに由来します。家電の環境は多様なので、環境に関係なく動く仕組みが必要だったのです。

高級アセンブラ?パフォーマンスに優れるC++

プログラミング言語に低級と高級があるのをご存知ですか。コンピュータ本来の機械語に近いものを低級、人間がプログラムを書くのに使うC言語やJava、C++などを高級と呼びます。相対的なものなので中級はありませんし、言語同士を比較してどちらが高い、低いと比べるものでもありません

機械語は単なる数字の羅列ですが、人間にも理解できるように簡単な命令に置き換えたものがアセンブラ言語です。アセンブラは機械語そのものなのでコンピュータの性能を最大限引き出すことができます。ただし人間が書くのはとても大変単純な命令しかないので、高級言語で数行の内容が100行や1000行になることも。C言語はアセンブラと高級言語の中間とも呼ばれ高級アセンブラとも。アセンブラと高級言語のいいとこ取りですね。ただ、他の言語よりも使いこなすのが難しくなっています。C++もその特徴を受け継いでいるので性能を引き出せるのです。

\次のページで「誰でも簡単に!Javaが目指すプログラミング」を解説!/

誰でも簡単に!Javaが目指すプログラミング

一方、Javaはプログラミングの中で難しい部分、複雑になる部分はJava環境が提供します。C言語やC++などより簡単にプログラミングができることを目指しているわけです。例えば、C言語やC++では全てプログラマが考えなければいけないメモリ管理も、Javaでは仮想マシンが自動的に確保や解放します。そのため、C++などで起きるプログラマの不注意によるバグが少ないのです。

ただ、そのため経験豊富なプログラマからするとかゆいところに手が届かないということも。ゲームなどのコンピュータの性能を最大限に引き出す必要がある場合にはJavaは向いていないのです。ざっくり言うと、標準的なサイズなら安くすぐ手に入るレディメイドの服がJava体型に合わせて作ってくれるが時間がかかるオーダーメイドがC言語やC++という違いになります。

どちらも大きなアプリ開発に使われるが、目的に合わせて選択が必要

C++言語が登場しておよそ40年、Java言語からでも四半世紀以上経ちます。その間、多くのプログラミング言語が誕生しましたが、今でもJavaやC++は現役です。分野によっては他の言語が使われることが多いものもあります。しかし、どちらの言語も新しい機能が追加されながら誕生してからも継続してアップデートが続いているのです。それだけ、使われ続けているということですね。

JavaとC++では考え方に違う部分があります誰でも簡単にプロラミングでき、どこでも動くことを目指したのがJavaです。一方、C++はC言語の特徴を引き継ぎながらより強力になることを目指しています。これらの特徴を踏まえ、自分がどういうプログラミングを目指し、何をつくりたいかが重要です。目的に合わせて他の言語も含めてプログラミング言語を選ぶ必要があります。

" /> JavaとC++の違いとは?共通点から難易度や性能の違いまでプログラマーがわかりやすく解説 – Study-Z
IT・プログラミング雑学

JavaとC++の違いとは?共通点から難易度や性能の違いまでプログラマーがわかりやすく解説

プログラミング言語にJavaとC++と言うものがある。どちらもC言語を参考にしていて似ている部分もありますが、違う部分も多いようです。どういう共通点や相違点があり、特徴や難易度・性能はどうなのかを、C++とJavaの両方を経験しているプログラマでもあるライターのwoinaryと一緒に解説していきます。

ライター/woinary

某社で社内向け業務システムの開発、運用を30年近くやっていたシステム屋さん。C++やJavaの経験者で、企業で使うアプリをつくっていた。現在はフリーランス。ガジェットやゲーム、ラノベが大好きなおっさん。

C言語から生まれた?JavaとC++の気になる関係は?

image by iStockphoto

コンピュータのプログラムをつくるにはプログラミング言語が必要です。プログラミング言語は数多く、ある調査によるとそれなりの利用者がいるものだけで250言語、その他のものも含めると1000以上とも言われています。

そのプログラミング言語の中でも広く使われているのがC++とJavaです。どちらもC言語という、同じく広く使われていた言語を参考にして新しくつくられたプログラミング言語になります。各種アンケートでも人気の高いC++とJavaはどういう関係があり、何が違うのかを見ていきましょう。

C++:C言語を改良した次世代言語

C++は1983年にビャーネ・ストロヴストルップが発表した言語です。この時すでに様々な用途で使われていたC言語を元に、オブジェクト指向などの他の言語が持っていた便利な機能を取り入れています。

その特徴は名前に「C」が残っているように、C言語のソースプログラムもそのまま動くことです。また、C言語で書かれた便利なプログラムをまとめたライブラリをそのまま利用できます。ただし、2018年以降、C言語とC++言語はそれぞれアップデートを行った結果、新しいCの独自機能についてはC++では使えなくなりました。

Java:C言語と似ているが他人?

開発者は違いますが、C++はC言語を元にしているので親子のようなものです。実際、C言語で書かれた過去のソースプログラムやライブラリをC++でも活用できます。一方、JavaはC言語を参考にはしていますが、まったく新しく作られたものです。

Javaは1995年にサン・マイクロシステムズ社が発表しました。2010年以降はオラクル社が管理しています。元々は家電の中に入っているマイクロコントローラという小さなコンピュータ向けのものです。しかし、パソコンやスマホなどにも広く使われています。C言語を参考にしているので似ている部分もありますが、考え方の違う部分も多いです。そのため、C++がC言語と親子の様な関係であるのに対して、Javaは似ている他人となります。

似ているようで違う?JavaとC++の共通点とは

image by iStockphoto

JavaとC++はどちらもC言語を元にしているため似ている部分も多いです。単にプログラムの書き方、文法が似ているというよりも、利用分野や使い方に似ている部分がいくつかあります。違いを見ていく前に、まずは共通点を確認しましょう。

様々なアプリケーション作成で大活躍

両者の元になったC言語を含めて、普段利用する様々なアプリケーションを作成するためにJavaやC++はよく使われています。例えば、Windows PCで使うオフィスアプリや各種のアプリ、ゲームはもちろん、Webで提供されている各種サービスもJavaやC++で作成されているものも多いです。JavaやC++がなければ、これらの便利なアプリも使えなくなるかもしれませんね。

コンパイルって何?プログラムを動かすために変換が必要

プログラミング言語は、人間が書いた元になるものをあらかじめコンピュータが実行できる機械語に変換しておくものと、変換しながら実行するものにざっくり分けることが可能です。

元になるものがソースプログラムやソースコード、あるいは単にソース、変換したものを実行ファイルやオブジェクトコード、オブジェクトなどと呼びます。

JavaもC++も、ソースプログラムをあらかじめ実行ファイルに変換するタイプのプログラミング言語です。このタイプをコンパイラ言語変換作業をコンパイルと呼びます。パソコンで動くアプリケーションの多くはコンパイルしたものです。その代表がJavaやC++になります。一方、変換しながら実行するものはインタプリタ言語です。

\次のページで「クラスとオブジェクトとは?オブジェクト指向プログラミング言語」を解説!/

次のページを読む
1 2 3
Share: