あけましておめでとうございます。
今年も[ゆるいfintech/ゆるいでんき]をよろしくお願いいたします。
久しぶりにJavaネタがバズっていました。
ちなみに筆者はC#派ですが、基本的にC#はJavaの方言からの出発という認識です。
最近は
って感じの言語になってる感もありますが、それはまぁどうでもいい。
ええ、分かっています。Java Appletはもう死にました。
時を同じくしてAdobe Flashも同じく、ブラウザの世界からは完全に姿を消しました。
少し前に、Xでこんなポストを見かけました。
「JavaはWeb系言語だったはずなのに、なぜ今のWeb系人間はJava毛嫌いするのか」
これを見た瞬間、頭の中でいろいろな記憶が一気に蘇りました。
90年代後半から2000年代前半、
「Web系」という言葉が、今とはまったく違う意味で使われていた時代の空気です。
当時、「Webで動く」というのは、
HTMLとちょっとしたJavaScriptで画面を作ることではありませんでした。
ブラウザはアプリケーションのプラットフォームであり、
本体はJava AppletやFlashが担っていた。
特にFlashは、Webの2D動画標準としての名声をほしいままにしていました。
それを可能にしていたのが、「NPAPI(Netscape Plugin API)」という仕組みでした。
今の感覚で言うと、NPAPIはかなり乱暴な仕様です。
一言で言えば、
「ブラウザの中に、外部のネイティブコードをそのまま突っ込んで実行する」
ための公式な“穴”でした。
もともとはNetscape Navigator時代に作られた仕組みで、
「ブラウザ単体ではできないことを、プラグインで拡張しよう」という発想です。
動画再生、音声処理、独自UI、ローカルファイル操作。
HTMLでは到底無理だったことを、全部プラグイン任せにする。
Java AppletもFlash Playerも、
このNPAPIを通じてブラウザに入り込み、
ウィンドウを描画し、キーボードやマウスを取り、
時にはローカルのファイルシステムにまで触っていました。
これに異議を唱えたのが、あのAppleのスティーブ・ジョブスです。
iPhone、iPodにはガンとして、Flashを入れさせませんでした。
決定的だったのは、
2010年に Steve Jobs が公開した
有名な文章 「Thoughts on Flash」 です。
この中で、彼ははっきりこう言っています:
プラットフォームの将来を
第三者のプラグインに依存したくない開発者は、
中間層(FlashやJava)ではなく、直接Web標準を書くべきだそうでなければ、
Appleは自分たちのプラットフォームを進化させられない
ただ、インタラクティブなアプリには、HTML5はまだ重荷。
モバイルはネイティブアプリ、つまりAppStoreやGoogle Playで何とかするようになりました。
かなり長い時間をかけて、WebはHTML5で何とかできるようになって、今に至りますが、モバイルは囲い込みという用途を見つけてしまい、相変わらずアプリ依存が続いています(中身はHTML5というのも多い)。
その過程で、同じようなしくみで動いていたJava Appletも、少なくともWebのフロントエンドからは駆逐されてしまったというわけなのです。