昔のJavaを振り返る
Java に出会ってから12年
自己紹介
岩見 直樹
株式会社ビズリーチ エンジニア
・学生時代はBASIC, アセンブラ、C++ など
・仕事では C++, Java, VB など
・趣味でいくつかプログラム書いてます
- Limy Eclipse Plugin, ER Master改 とか
・プログラム系のサイトも公開してます
http://www.limy.org/program/
https://github.com/naoki-iwami
今回のLTは…
・Javaに出会ってから今に至るまでの話
・昔Javaってこんなだったんだよって話
・当時書いてた日記を元に振り返ってみた
※かなーり昔の話です
Javaとの出会い
2001/7/13
一冊の本を買う。
『やさしいJava』
Javaとの出会い (2)
本を読んだ最初の感想。
『C++ と一緒じゃん!』
・ポインタ意識しなくて使えるのは楽
・でもインタープリタだから処理速度は遅い
・最初は Javaアプレット をやってみた
 - 当時公開してたHPで公開(内容は覚えてない…)
Java をさらに勉強したあとの印象
2001/9/22
・中身はC++と大分違う
・インターフェイスの概念に慣れない
・実行スピードがかなり犠牲になる
※ 当時の Java は 1.3
Java のデザインパターン
2002/4/30
本を買う。
『Java言語で学ぶデザインパターン入門』
・資源の再利用
・しかし実際にはそううまくいかない
Java を仕事で使う
2002/5/28
初めて仕事でJavaを使うことになりました。
・しかしプログラムの内容は「バッチ処理」
・Javaでバッチ処理なんてできんの?
・JDBCは便利
Eclipse に出会う
2002/7/8
・当時の現場ではIBMの Visual Age を使用
・IDEなんて使いにくいというのが定説
・でも Eclipse は違った
Eclipse の機能。
・自動Import文作成
・CVS連携
・メソッドヒント(Ctrl+Space, Alt + /)
・リファクタ支援
・ネイティブで高速な開発環境
Java は知らないことだらけ
2002/7/22
・HashMap が返すキーの順番は適当だった!
・独自クラスをキーにすると、get で値が取れない…
・FileWriterはバッファリングしなくてもそれなりに使える
・ひたすらJavaのソースを読んで勉強
EJB に出会う
2002/7/23
EJB(Enterprise JavaBeans)
・これからはEJBらしい
・分散するらしいよ
でも設定ファイルを見てみると…
<![CDATA[SELECT OBJECT(a) FROM AccountBean AS a WHERE a.balance > ?1]]>
Swing Look&Feel
2002/7/31
・Swing のショボい見た目を自由にカスタマイズできる!
でも実際にカスタマイズするには…
・総計30個超、500KBにも及ぶJavaプログラムを自作しなければ
ならない
結論: ゼッタイに無理!
JBoss と出会う
2002/8/27
やっぱりあった、オープンソースのEJBサーバ。
開発者の Marc Fleury 氏はこんな事を言ってました。
「Linux, Apache の次に来るもの。それをJBossにしたい」
Javaパフォーマンスチューニング
2002/11/4
当時のJavaはあまり速くなかったので、課題はパ
フォーマンスチューニング。
実際、現場のプロジェクトでもパフォーマンス問題
が発覚。
Javaパフォーマンスチューニング (2)
現状: 約10000件の配賦処理に6時間掛かる
原因: 全てのデータ入出力がDB経由。チューニング無。
改善1: データ入出力は最初と最後だけDB経由で、後は全てメ
モリ内で処理するように変更。
結果1: 6時間 → 30分に短縮
改善2: データストアを HashMap から TreeMap に変更。
結果2: 30分 → 2分に短縮
JRuby に出会う
2002/12/3
Pure Java によるRuby実装。
しかし…
実行速度は Pure Ruby の 1/45
jikes に出会う
2003/1/8
IBM がオープンソースで公開しているJavaコンパイラ。
・コンパイル速度は本家 javac の約5倍
・jsp コンパイルは jikes でやるのが当時の流行
・実際、相当速くなった
※ 2004年で開発終了
MIDP に出会う
2003/1/17
携帯端末上で動くJavaアプリケーションの規格。
・当時は Docomo の i-mode が主流
・MIDP を使えば、どの端末でも動く
・しかし実際には各社独自の規格を上乗せ
EJB EntityBean に出会う
2003/1/24
いわゆる O/R マッピング機構。
・Beanのフィールド値を変更すれば自動的にDB書込
・サーバ再起動してもフィールド値はそのまま使える
・DBを意識する必要が無い!
・しかし実際には超遅くて使い物にならない
Struts に出会う
2003/2/15
Javaで最も使われているWebアプリケーションフレームワーク。
・最初の印象は「まぁまぁ使えそう」
・しかし本格的に調べていくうちにその恐ろしく難解な作りに唖
然とする
・公式ページにあるドキュメントも相当わかりにくい
SWT に出会う
2003/5/13
Eclipse で使われているグラフィックライブラリ。
・ネイティブ実装なので高速
・機能はSwingに劣る
・Eclipse Plugin を作るには欠かせない
・Eclipse RCP とか
Java 1.4 に出会う
2003/5/15
・パフォーマンスが相当上がってるらしい
・New I/O API
・コレクションクラスの拡張
衝撃の一言
2003/7/17
Java はもはやインタプリタ言語なんかじゃない
※ Javva the Hutt のコラムより
・HotSpot により、実行速度は最適化される
・C言語がアセンブラに取って代わったように、JavaがC言語に
取って代わる
http://www.javanews.jp/javap/ Javaパフォーマンスチューニング(日本語版)
Java 5.0 に出会う
2004/6/30
・Generics の導入  List<String>
・AutoBoxing の導入  Integer count = 0;
・Enum
・可変長引数  func(String... args)
・Annotation   @Autowired
・拡張forループ文  for (value : values)
AspectJ に出会う
2004/10/8
・アスペクト指向 という概念を初めて知る
・オブジェクト指向と組み合わせて使う
・Spring Framework でも使ってる
その他色々と出会う
2005/2/9 Hibernate
2005/3/8 Groovy
2005/3/16 DWR
2005/6/24 Spring Framework
2005/11/6 Ehcache
その他色々と出会う(2)
2007/11 WebWork
2007/11 Struts2
2007/11 iBatis
…
2011/12 Scala
2012/2 dbflute
最後に
・Java 環境は今でも進化し続けています
・慣れてくれば、開発速度はかなり速いです
・Eclipse を使いこなすとさらに速くなります
※ ここで言う「開発速度」とは作る速さだけじゃな
く、テスト・保守まで含めた全体的なスピード
おわり

渋谷Java#2 昔のJavaを振り返る