Java

2015.10.19

Javaとは

Javaとは、1995年に米サン・マイクロシステムズ(※同社は2010年に米オラクルに買収される)が発表したオブジェクト指向プログラミング言語の1つ。「Write once, run anywhere」というコンセプトで、「一度書けば、どこでも実行できる」という特徴を「売り」に華々しく登場した(実際はそう簡単にはいかなかったが)。

その後、インターネットの普及とともにJavaを使ったサーバ/クライアントシステムが開発され、2000年ごろには非常に多くのシーンで利用されるようになり、一般的なプログラミング言語の1つとして認知されるようになる。日本では携帯電話、いわゆるガラケーに採用されたことで、モバイルデバイス分野での利用、開発が進み、日本が世界の携帯電話開発市場を牽引する一因ともなった。現在も、コンシューマ向けのパソコンの他、家電などの各種組込み機器、金融などのエンタープライズジャンルまで幅広いシーンでの利用が進んでおり、今のインターネット社会では欠かすことができないプログラミング言語の1つと言える。

 

もっと詳しく!

Javaの歴史~オープンソース化

Javaの誕生は今から20年前、まだ20世紀にさかのぼる。1995年5月23日、米国シリコンバレーに拠点を置くサン・マイクロシステムズが主催したイベント「SunWorld Conference」にて一般公開された。もともとは1990年にサン・マイクロシステムズ内部の1プロジェクトとして開発がスタートした言語で、当初はOakと呼ばれていた(その後、商標登録の関係で名称変更が行われる)。

そして、1995年秋にJava 1.0ベータ版が公開され、1996年1月、サン・マイクロシステムズはJavaの開発を行うJavaSoft部門を立ち上げ、1.0正式版がリリースされた。

リリース当時から、これからはインターネットの社会が到来するという考えのもと、Javaはネットワークを意識した言語として開発、進化を続けてきた。

とくに2000年ごろのWebシステム・Webアプリケーションの普及とともにJavaの利用者が一気に増えた。このころは、Webサーバとデータベースを組み合わせた、いわゆるWeb-DBシステムの開発・利用が進み、そこでJavaを用いた各種アプリケーションが注目をあつめることになり、多くの開発者たちがJava分野に参入してきた。同時期、モバイルデバイス向けのJava MEやエンタープライズ向けのJava EEと言ったように、用途に応じたサブセット化が行われたことも、普及促進の要因となった。

その後、とくに大きな影響を与えたのが、2006年11月のJava SEおよびJava MEのオープンソース化である。これにより、従来のベンダ主導で行われていた基礎技術開発が、オープンソースとしての開発が進み、参入障壁が低くなり、開発が活発になっていく。

 

 IoTの時代へ

一方で、2004~2005年のWeb 2.0ブームの到来とともに、言語としてのJavaよりも、仮想環境としてのJavaとしての注目度が高まり、言語は動的なもの(Lightweight Language)へシフトしていく。とくにWebシステム上で稼働するものは、日本ではPerl、世界ではPHPやPythonといった言語が主流となり、2000年代後半、Javaへの注目は一段落した。

しかし、2010年に入り、クラウド技術の浸透、そして、2012年のGoogleが発表したAndroidの登場により、再びJavaへの注目が高まってきた。

2015年現在、IoT(Internet of Things)のトレンドともに、組込みからクラウドまで幅広いプラットフォームで利用できるJavaは、改めて利用価値が高まった技術といえるだろう。

 

モジュール化の推進、定期的なアップデート

2017年9月にリリースされた、Java 9からは毎年3月と9月の年2回の定期リリース制に変更され、サポート期間は原則半年となった。

Java 9でのアップデートの注目点は、従来のパッケージの上にモジュールを追加する実装に変わったこと(Project Jigsaw)で、追加要素の在り方が変わっている。さらに、2018年9月のJava 11では「Oracle JDK」「OpenJDK」の2つの開発環境が提供されるようになり、前者は有償長期サポート契約を結んだ顧客向けに、後者は無償版として利用が可能。

2020年にはJava誕生から25年の節目の年を迎えた。

2022年5月現在、Java 18(2022年3月にリリース)が最新版となっている。

 

電子書籍とJava

電子書籍とJavaにはどのような関係があるのか、筆者の視点から次の2つのテーマで解説を行ってみる。1つはプロダクト、もう1つはコミュニティである。

 

プロダクト:epubcheck

電子書籍の観点から見て、Javaと関わりあるプロダクトの1つが「epubcheck」である。epubcheckは、もともとAdobe Systemsが開発をスタートし、その後、Google Codeでの開発へ移行、現在はGithub上で開発が進められている、EPUB整合性チェックツールである。

EPUBについては別項「EPUB」をご覧いただくとして、このツールを使うことにより、IDPFが策定している仕様に準拠しているかどうかのチェックが行える。2015年10月15日の最新バージョンはepubcheck 4.0となっており、EPUB2.0/3.0に対応している。

EPUBの項で筆者が解説をしているとおり、2015年10月時点では、EPUB準拠とうたいながらもリーダーに依存した整形が行われている電子書籍が存在するのが現実である。そのため、まずはこのepubcheckを使い、作成したEPUBデータが、仕様に準拠しているかどうかを確認することが、EPUB制作者にとって最低限求められることになる。

 

コミュニティ:オープンな仕様と環境

プロダクトとは別の観点で、Javaと電子書籍に共通していると筆者が考えているのが「コミュニティ」である。

電子書籍に関しては、もう数十年来の研究・開発・取り組みが行われている中、とくに2010年に入ってからEPUBを共通仕様にしようという動きとともに、データ制作やビジネス開発において、インターネット、とくにWebの技術を活用する動きが主流となった。

Webは言わずもがな、いまや社会には欠かせないインフラであり、その技術の多くが標準化されている技術(例:HTTP、TCP/IP)を採用している。これにより、一社独占による市場コントロールがしにくく、健全なマーケットの成長につながっているとかんがえられる。

この考えは電子書籍・出版ビジネスにも当てはまるものであり、基礎技術は標準化されるものを利用し、企業ごと、作り手ごとの独自性を減らすことは、提供側の開発コストはもちろんのこと、利用者が特定の企業や組織にコントロールされにくい、健全な状況につながると考えている。

とくに、ITという日進月歩の技術を多く使う電子書籍・電子出版ビジネスの分野において、一社独占に関するリスクは高いため、提供者・利用者を含めた“コミュニティ”の形成、成長こそが、そのマーケットの拡大・成長につながると筆者は考えている。

その観点で、Javaがこれまで歩んできた道のり、そしてJavaコミュニティの存在は、電子書籍・電子出版関係者にとって非常に参考になるものだと言えるだろう。

 

[馮 富久 株式会社技術評論社株式会社GREEP  20151019]
[内容改訂 20220531]