辞書へ戻る言語の一覧

Java

じゃば言語1995

サン・マイクロシステムズが開発した、「一度書けばどこでも動く」を掲げた言語。仮想マシン上で動く仕組みで環境差を吸収し、企業システムやAndroidアプリの基盤として広く普及した。

時代背景

1991年、Sun Microsystemsの少人数の技術者チーム『Green Team』が、次のコンピューティングの波はデジタル家電製品とコンピュータの融合になると考えていた。James Goslingが率いたこのチームは、のちにJavaへと発展するプログラミング言語を作り上げた。Green Teamは当初、デジタルケーブルテレビ業界向けを想定した対話式のハンドヘルド型ホームエンターテインメントコントローラーでこの新言語を実演したが、当時としては技術的に先進的すぎて商業的な採用には至らなかった。だが同じ言語の特性は、当時ちょうど普及し始めていたインターネットにはぴったりだった。1995年、NetscapeのWebブラウザNetscape NavigatorにJava技術を組み込むことが発表され、この転換によってJavaはインターネットの主要な技術のひとつとして広まっていくことになった。

仕組み

Javaのソースコードは、特定のCPUの機械語ではなく『バイトコード』という中間形式にコンパイルされる。このバイトコードは、各OS・機種ごとに用意されたJVM(Java仮想マシン)というソフトウェアの上で実行される。プログラム自体は一度書けば、対応するJVMさえあればWindowsでもLinuxでもmacOSでも同じように動く、という『Write Once, Run Anywhere(一度書けばどこでも動く)』の考え方は、この中間層としてのJVMの存在によって実現されている。

現在

Javaは、企業の基幹システムや業務アプリケーション、AndroidアプリのAPI設計の土台として広く使われ続けている。Oracle公式サイトは『モバイル機器からハンドヘルドデバイス、ゲーム、ナビゲーションシステム、eビジネスソリューションまで、Javaはあらゆるところにある』とし、インターネットの裏側で動き続ける見えない力になっていると説明している。仮想マシンという仕組みそのものは、のちのC#(.NET)やKotlinAndroidでJVM上に実装)など他の言語の設計にも影響を与えた。

開発元Sun Microsystems
特徴仮想マシン上で動作

関連項目

  • C言語デニス・リッチーがUNIX開発のために作った汎用言語。ハードウェアに近い操作ができつつ移植性も高く、OSや組み込みなど低レイヤの定番として現在も使われ続けている。後の多くの言語の文法の祖でもある。
  • C++ビャーネ・ストロヴストルップがC言語にオブジェクト指向などの機能を加えて作った言語。性能と抽象度を両立でき、ゲーム・ブラウザ・各種アプリの基盤として広く使われている。Cとの互換を保ちながら巨大に育った言語。
  • オブジェクト指向データとそれを扱う処理を「オブジェクト」としてまとめて考える設計の考え方。Simulaで芽生えSmalltalkで確立し、C++やJavaを通じて主流になった。大きなプログラムを部品に分けて扱う、長く使われてきた発想。
  • ガベージコレクション使われなくなったメモリを自動で回収する仕組み。LISPで生まれ、JavaやC#などに受け継がれた。手作業のメモリ管理から解放することで、プログラマがバグの一因から離れられるようにした地味だが重要な技術。
  • KotlinJetBrainsが開発した、Javaと相互運用できる言語。簡潔で安全に書けることから、GoogleがAndroid開発の推奨言語に採用して一気に広まった。Javaの資産を活かしつつ書き心地を改善した言語。
  • C#マイクロソフトが.NET基盤向けに開発した言語。JavaやC++の良さを取り入れ、Windowsアプリやゲームエンジン(Unity)、業務システムなど幅広く使われている。現在も活発に進化を続けている言語。
  • JavaScriptNetscapeのブラウザに組み込むために、ごく短期間で作られたスクリプト言語。Webページに動きを与える言語として広まり、いまやブラウザだけでなくサーバーまで動かす、Webに不可欠な言語へと育った。
  • ScalaJVM上で動く、オブジェクト指向と関数型を融合した言語。大規模なデータ処理基盤などで採用された。
  • TypeScriptマイクロソフトが作った、JavaScriptに型の仕組みを加えた言語。大規模なWeb開発でミスを減らせるため急速に普及し、いまや多くのフロントエンド開発の標準的な選択肢になっている。

関連技術

この用語を扱った記事

文字コードが多すぎる理由リバースエンジニアリングとは|ソフトの仕組みを解析する技術を解説

出典