こんにちは、tonocchoです。
Javaの利点ってなんですか?OOPができて、複数プラットフォームで実行できるなんて今どき珍しくないですよね、っていう話をチラホラと耳にします。
今どきならどんな環境でも実行できるような言語なんて珍しくないですし、OOPなんてのはむしろ邪魔者扱いされるようになりました。
ただ、Javaの利点はその後様々な言語に吸収されてきたし、Javaも他の言語のいいところを取り込みながら進化しているので、今どきの言語選定にOOPだのWORAだのいちいち気にする必要はなくなり「Javaでなくてはならない」ということもそんなに強くないと思います。
ですが、Javaが登場したときってどういう状況だったんでしょうか?
2001年にIT業界の門を叩いた記憶を掘り起こしつつ書いてみようと思います。
誤解してほしくないことを先に行っておきます
Java以外にOOPができる言語がないとか、マルチプラットフォームで動作する言語がなかった、というわけじゃありません。
一応そこだけ言っておきつつ
当時の金融系ITではCやCOBOLが一般的だった
まず、私は金融系のSEだったんですが、入社したときはちょうどJavaにシフトし始める時期でした。今更隠すことでもないんですがIBM系の金融系SEだった私の身の回りで使われていた言語は
- C
- COBOL
- アセンブラ
- PL/I
- JCL
- Unixのシェル(主にbashだった気がする)
- Windowsのバッチファイル
と見事にプラットフォーム依存のものばかりでした。
Javaが業界にもたらしたもの
なんだかんだで帳票処理や勘定系はCOBOLやJCLで(つまりメインフレームで)書いており、周辺システムはCやbash(つまりUnix系で)書いていたような時代です。
一方クライアントPCはWindows95系のものなんか使っていたと思います。
正直一体どうやって開発していたのか、というと、机上デバッグしてやるのがまだ一般的でしたし、今みたいなIDEなんてのを使っていたかもわかりません。
そんな業界にJavaが来た、となるとその感動は計り知れないものだったと思います。
JavaのOOPやWORA、あとGC
JavaがOOPをサポートしたことで、J2EE(後のJavaEEで今はJakartaEE?)が導入されるようになりました。EJBでトランザクション(2PC)がサポートされたのはデカかった。
OOPのおかげでインターフェースを実装してXMLに定義を書けばアプリケーションがインストールできる、というのはデカかったですし、事前にビルドしたearファイルをデプロイすれば良くなったのもでかい。
そして何気に忘れてはならないのはGCが実行環境でサポートされたことでしょう。
他にもあったかもしれませんがね!
GCに関しては、メモリの確保と開放が実行環境でやってくれるようになった、というのがどんな無茶な処理を書いても実行環境がどうにかしてくれるからDBからいきなり100万レコードとってきます!とかやる人も出てきたんですが、とにかくこういったところがサポートされたのは業界に受け入れられた言語としてはJavaが最初なんじゃないかな。
何よりJavaはいろんな企業が集まって標準化したことで互換性を確保していたというのはでかいですね。メインフレームのJavaでSwingは動きませんが、とても良くなりました。
他にもマルチスレッドとかもありますね。
今は大体何でもできる
そんなJavaがもたらしたものですが、今どきできない言語なんかないですよね? むしろ意図的にOOPは導入しない、だとか、そういうのは見るようになりましたし、Javaとは違うOOPをやっている言語もあることでしょう。JavaScriptとか、なんだよ関数がオブジェクトって・・・
JavaのそういったメリットはJavaは0を1にした、と言う功績はあるでしょうけど、実際今どきその辺は別に優位でもなんでもなかったりします。
今の時代にJavaを選ぶ理由は?
そんなわけで、今Javaをあえて選ぶとしたらどういう点なんでしょうか?私はJavaが一番得意なのでJavaを選びたいのですが、だからといって新しいことをやらないのも何なので個人的なプロジェクトではPythonを使ってみたりもしています。
結局「Javaを選ぶ」ことに対する強い理由はなくなったのかなっていうのが感想でした。