お知らせ

  • パソコン関連

JavaとJavaScriptの違い

noimage

JavaとJavaScriptの違い

JavaとJavaScript、同じようにJavaとついているし、JavaScriptとJavaは同じもの?派生?省略形?など、はっきりした区別はつきにくいと思っている方も多いかもしれません。 同じもののように見えるこの二つのプログラミング言語ですが、Java誕生のからの動向を知っている筆者には同じものには全く見えないので、違いを説明して欲しいと言われると何から説明していいのか、と戸惑ってしまうぐらいに違います。 Javaとは 先に誕生したのはJavaで、SunMicrosystems(今はOracleに吸収合併)によって開発、リリースされました。 Javaの基本的な思想はWrite Once, Run Anywhare、一度プログラムを書けば、どんなパソコン、ワークステーション、サーバー、モバイル機器でも動作する、を目指すものです。 動作するパソコン、ワークステーション、サーバー、それぞれが異なるOSや、ハードウェア構成になっていますが、それをJava仮想マシンという仕組みが差異を吸収し、同じようにプログラムが動作すること、これは大々的に注目されることになりました。 専門的になりますが、Java専用に設計されたコンピュータの仕様を作成し、それを個々のOSの上に構築するのがJava仮想マシンです。 このJava仮想マシンが構築できる環境であれば、パソコンの枠にとらわれずどの機器でもJavaで作成されたプログラムを動作させることができる、というものです。 わかりやすく現在の例に例えれば、Androidスマホ、iPhone、パソコン、同じ内容のアプリでもそれぞれに合わせて作成する必要があります。一つの目的に対して3つのプログラムを作成する必要があります。 これを一つのプログラムを作成すれば、どの機種でも動作するなら、プログラムコード作成、テストの工程はおよそ1/3まで圧縮されます。 画期的です、これがJavaです。センセーショナルな登場でした。 当時はスマートフォンは影も形もありませんでしたが、 Windows、Mac、Linux、そして開発元のSunMicrosystemsのSolaris、それぞれで同じプログラムで動作するアプリが作れるのです。 ただ、機種に依存したフル機能が使えないということで、パソコンで動作するクライアントアプリについては選択肢の一つ、という存在感です。 AndroidはGoogleが開発したJava仮想マシンが搭載されていて、アプリはJavaで開発し、動作するようになっています。 JavaScriptとは JavaScriptはNetscapeというブラウザに搭載された、Javaのような文法で開発できるスクリプト言語としてリリースされました。 スクリプト言語とはプログラミング言語の中でも容易に開発できる手軽さと素早さを求めるものです。 スクリプト言語にはコンパイルというプログラミング言語で書かれたテキストを、機械語に翻訳する工程が必要ありません。 コンパイル言語はコンパイラが正しい機械語コードを出力して初めて動作しますが、スクリプト言語はテキストを作成すればそれをそのまま実行することができます。 Javaのような文法で書ける、ということ以外、Javaらしさはありませんので、どう同じに見ればいいのかわからない、と筆者は思ってしまう原因になります。 JavaScriptの興隆 JavaScriptは仮想マシンでなくブラウザに搭載されたスクリプトエンジンで動作し、基本的にブラウザの中でのみ動作するものです。 WWW(ワールドワイドウェブ)が普及し、ブラウザ上で動作するアプリケーション、ウェブアプリには熾烈な競争が生まれました。 Webサイトにアクセスして、そのままアプリケーションが実行できるとすれば、CD-ROMによる配布やインストールなど利用開始するための様々な手順を省略し、誰でもすぐに使い始めることができるからです。 JavaScript登場当時、JavaによるJavaアプレット、Internet ExplorerのActive X、AdobeのFlashなどが鎬を削っていました。 JavaアプレットやActive Xはパワフルで、パソコンで直接に動作するアプリケーション(ネイティブアプリ)のように振る舞うので、官公庁、大企業始め、様々なところで活用されました。 Flashは主に画像、動画などを得意とするメディア系、JavaScriptはGoogleがGmailなどで実用アプリなどを、SNSなどのネットサービスが採用して作成している、という大まかな枠組みがありました。 Active Xは機種依存性が強く、JavaアプレットやFlashは各ブラウザに対応したプラグインが必要、JavaScriptはスクリプト言語ゆえに簡易なものが中心、というそれぞれにデメリットがありました。 その中でHTML5規格が正式化してブラウザで表現できるものが一気に広がり、主にWebkit系のブラウザであるSafari、ChromeがJavaScriptエンジンを発展させ、最終的にスマートフォンの普及が大きくそのバランスを崩しました。 Javaアプレットを動作させるプラグイン、Internet Explorerでしか動かないActive X、Flashプラグイン、これらすべてを持たないスマートフォンのブラウザが数年で数十億台出荷され、ブラウザアプリはJavaScriptの一強となりました。 JavaScriptはそのスクリプトエンジンの強力化によって、Google Appsなどの業務で実用に耐えうるものを生み出すまでになり、ウェブアプリ開発の主流となっています。 Javaの立ち位置 Javaを実行するJava仮想マシンは、非常に堅牢な造りとなっていて、強力で安定的なアプリケーションやサーバを開発することができます。 またオブジェクト指向など言語の設計が新しいのもあり、ガーベージコレクションなどによって旧来の言語から複雑な部分を取り除きプログラマの負担を減らすことにも力を入れています。 JavaコンパイラがJava仮想マシン用の機械語コードを作成しますが、このJava仮想マシンを高度に実装すれば、堅牢かつネイティブのアプリケーションとほぼ同等の実行速度が得られます。 クライアント・サーバ型のシステムでサーバ側がJavaを利用しての構築には沢山の事例があります。堅牢性というのは複数のクライアントの要求を処理するサーバ側にとってとても重要な部分になり、それも大きな理由の一つです。 Java開発にはIBMが作ったEclipseという非常に優れた開発環境があることも、プロジェクトとしてJavaを選択する理由の一つでもあるでしょう。 クライアント作成という分野ではあくまで一つの選択肢ではありますが、Java開発者がサーバーからクライアントまでをEclipseを利用して作成できるのは大きな意味があります。 近年はAndroidによってJava開発者の人口は増えていると思われます。 JavaとJavaScriptは大きな差があり、それぞれが適切な場所に使われることで、メリットを最大に引き出せるようになっています。 参考:SESエンジニアとは?仕事内容や必要なスキル、企業の選び方を解説 | SES業務管理の統合ツール Fairgrit®公式サイト

  • ブログ

WebAssembly

noimage

WebAssembly

Mozilla、Google、Microsoft、AppleがWebアプリケーションの高速化のための規格、WebAssemblyを共同で開発していくことを明らかにしました。 各ブラウザにはWebアプリケーションをJavascriptで実行させる機能を持っています。 JavascriptはHTMLで記述できない細かな動作からスタートし、現在Javascriptエンジンの高速化によってブラウザ上といえどアプリケーションをかなり高速に動作する環境が整ってきました。 JavascriptはソースコードをHTMLファイルとともにブラウザに読み込ませますが、このソースコードはテキストで書かれており、これをブラウザが解釈し、コンパイルして実行可能にします。 WindowsでいうEXEファイルのような実行可能なバイナリフォーマットであれば、機種依存性、あるいはブラウザ依存性が出てきます。 Javascript実行の仕組みはおおよそどのブラウザでも備えていますが、それ以上の独自規格でない、共通な仕組みを新たに加えるのはWebAssemblyが最初です。 WebAssemblyはJavascriptを解釈した状態のバイナリフォーマットで配布されますので、読み込みが早く、またすぐに実行できる仕組みです。 このWebAssemblyで利用されるバイナリフォーマットは、JavascriptだけでなくC言語や、その他言語でも作成できるようになります。 あくまで現状のブラウザにWebAssemblyの読み込みと実行の仕組みを追加する仕組みで、別途プラグインなどをインストールするJAVAなどとは方式が違います。 ブラウザ上でかなりのことができるようになり、またスマホでもWebアプリを高速化し、より使いやすい物になります。 現在主流のWebブラウザ開発元が共同して開発するWebAssemblyで、パソコンやスマートフォンの使い方にも変化が訪れるかもしれません