【Java入門】そもそもJavaとはいったいどんな言語なのか?
  • facebookページ
  • twitterページ
  • 2017.09.20

    【Java入門】そもそもJavaとはいったいどんな言語なのか?

    はじめに

    現在、JavaはAndroidのスマートフォン向けのプログラミング言語として、そして銀行や保険会社などの大型の業務系のシステムの開全般ととして広く普及しています。

    しかし、Javaという言葉を聞いたことがある人でも、そもそもどのような言語かということをちゃんと説明できる人は多くありません。そこで今回は意外と知っているようで知らないJavaそのものについて詳しく解説していくことにします。

    Javaとはいったいどんな言語なのか

    Javaが出現する前までのコンピュータの主要なプログラミング言語はCおよびC++言語でした。もともとこれらの言語はUnixというOSを作るためにつくられた言語だったのですが、コンパクトであることからパソコン用でも普及しました。

    しかし、このC/C++言語には大きな問題点がありました。同じ言語でもOSやプラットフォームがことなると同一のアプリを実行できくなるということです。

    しかも、当時C/C++のコンパイラおよびその開発環境は非常に値段が高価で、誰もが聞かるにプログラミングをできる状態ではありませんでした。つまりソフトウェアを開発するという作業は非常にコストが高い作業だったのです。

    Javaの登場で変わったこと

    しかし、1990年代半ば、SunMicrosystem社(当時)によってJavaが開発・発表されると状況は大きく変わりました。まず、革新的だったのがJavaの思想である、Write Once,Run Anywhereという思想でした。

    これは「一度作成したプログラムはどこでも実行できる」という意味で、事実、Windows、Mac、Linuxといった異なるOSやプラットフォーム上でも問題なく同じプログラムが実行できました。

    ちなみに当時はこれが非常に画期的なことでした。なぜなら、当時はOSが異なれば言語が同じでもソフトは使えず、いちいちOSやプラットフォームごとに移植しなおす必要があったからです。

    その上、現在よりも多くのOSやプラットフォームが乱立していたので移植作業も大変で、必然的にソフトウェア開発は高コストでした。その上インターネットさえつながっていればだれでも無料でダウンロードして使用ができたので、誰もが気軽にこの言語を使うことができました。

    当時はコンパイラやIDE(統合開発環境)も無料ではないのが当たり前で、しかも値段が相当高かったのでプログラマーたちは狂喜乱舞しました。Javaの思想は、プログラミング言語やOSの違いを超えて、どこでも動くソフトを作ること、そしてそれによりソフトウェア開発のコストを下げることが目的だったのです。

    Javaの中身

    次にJavaの構造がどのようになっているかについて解説しましょう。

    現在はOracle社に引き継がれましたが、Javaを作ったSunMicrosystem社にはある戦略がありました。それは、できるだけ多くのプログラマーにJavaに転向してもらうということで、無料で入手できるだけではなく、言語そのものにも様々な工夫をしていました。

    ここでは、そんな戦略についても解説していくことにします。

    Javaの仕様

    このように業界をあっと言わせたJavaですが、いったいどのような言語なのでしょうか。

    言語の仕様自体は、当時の主流の言語であったC/C++言語を参考にしていたため、見た目は非常に似ておりC/C++から多くのプログラマーが移行してきました。

    その上C/C++言語の様々な問題点も克服されていました。JavaはC++言語と同様のオブジェクト指向言語ですが、C++言語においてクラスを作成しようとすると、ヘッダファイルとソースファイルという複数のファイルを作らねばならないため、非常にプログラミングの手間がかかりました。

    それに対し、Javaはそのファイルを一つで済むようにするなどして、プログラマーの負担を軽減しました。これは当時主流だったC/C++言語のプログラマーをJavaに移行させるためのいわばSunMicrosystemの戦略でした。

    当時、C/C++言語以外にも様々なプログラミング言語が存在していましたが、文法はまったくC/C++に似ていませんでした。しかし、Javaはあえて文法をこれらの言語と似たように設計し、同時にその欠点を克服することで多くのプログラマーを取り込んでいったのです。

    Javaの問題点

    スピードの問題

    しかしそんなJavaにも問題点がないわけではありません。

    Javaは使いやすさを追求するあまり、C/C++言語で自由にできたメモリの生成・消去を自由にできなくしました。メモリの消去をガーベージ・コレクタという仕組みに任さているのですが、便利になった反面、自分でメモリを開放するタイミングをコントロールできないことから、逆にこれに不安を抱く元C/C++のプログラマーも少なからずいます。

    その上、Javaは複数のプラットフォーム上で動くようにするためにJavaVMという仮想のマシン上で動くという構造になっていることから、依存しているOSやプラットフォーム上のネイティブコードで動作するC/C++言語よりもどうしても動作は遅くなってしまいます。

    強力なライバルの存在

    また、Javaにはそれぞれの分野に強力なライバルが存在します。

    AndroidのライバルであるiOSのプログラミング言語であるObjective-CやSwiftは、OSのネイティブコードにコンパイルされるため、スピードの面ではAndroidよりも優れていると言われています。

    また、もう一つの柱であるエンタープライズ(業務用システム)の分野でもライバルのマイクロソフト社のC#言語に追い上げられています。マイクロソフトは、この言語をC/C++の後継言語と位置付けていますがその言語仕様を見ると、Javaをかなり意識していることは明らかです。その上、Javaが得意とする分野に新技術を次々と導入しており、Javaの得意分野を侵食しています。

    C#言語もJava同様、.NET Frameworkという一種の仮想マシンの上で動作しています。かつてこのフレームワークはWindows系のOSでしか動作しませんでしたが、現在はLinuxやMacOSでも動作可能となっているため、C#がJavaとこの分野で本格的な生き残りをかけた戦いをするのは時間の問題でしょう。

    そのため、Javaのアプリを作る際にはこれらの問題点を考慮しながら作る必要があります。

    Javaの未来

    このように非常に広く普及しているJavaなのですが、業務系の分野ではマイクロソフトがC#という言語を出したり、するなど、多くの「ライバル」が現れています。

    しかし、Javaもこれに対抗してバージョン8からは大幅に仕様を変更し対抗しています。さらにスマートフォンの分野ではJavaVM上で実行でき、その上Javaと上位互換の関係にあるKotlin(コトリン)という言語が発表され、広く普及を始めています。

    このようにJavaは言語そのものだけではなく、関連する技術も含めて現在進行形で大きく進歩しているのです。


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料10万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテキャンバナー ポテキャリバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア

    関連ワード

    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE