昔の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 に出会う (2)
Eclipse の機能。
・自動Import文作成
・CVS連携
・メソッドヒント(Ctrl+Space, Alt + /)・リファクタ支援・ネイティブで高速な開発環境
Java は知らないことだらけ
2002/7/22
・HashMap が返すキーの順番は適当だった!
・独自クラスをキーにすると、get で値が取れない…・FileWriterはバッファリングしなくてもそれなりに使える
・ひたすらJavaのソースを読んで勉強
EJB に出会う
2002/7/23EJB(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/3Pure Java によるRuby実装。
しかし…実行速度は Pure Ruby の 1/45
jikes に出会う
2003/1/8IBM がオープンソースで公開している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/15Javaで最も使われているWebアプリケーションフレームワーク。
・最初の印象は「まぁまぁ使えそう」・しかし本格的に調べていくうちにその恐ろしく難解な作りに唖然とする・公式ページにあるドキュメントも相当わかりにくい
SWT に出会う
2003/5/13Eclipse で使われているグラフィックライブラリ。
・ネイティブ実装なので高速・機能はSwingに劣る
・Eclipse Plugin を作るには欠かせない
・Eclipse RCP とか
Java 1.4 に出会う
2003/5/15・パフォーマンスが相当上がってるらしい・New I/O API・コレクションクラスの拡張
衝撃の一言
2003/7/17Java はもはやインタプリタ言語なんかじゃない※ 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 Hibernate2005/3/8 Groovy2005/3/16 DWR2005/6/24 Spring Framework2005/11/6 Ehcache
その他色々と出会う(2)
2007/11 WebWork2007/11 Struts22007/11 iBatis…2011/12 Scala2012/2 dbflute
最後に
・Java 環境は今でも進化し続けています
・慣れてくれば、開発速度はかなり速いです・Eclipse を使いこなすとさらに速くなります
※ ここで言う「開発速度」とは作る速さだけじゃなく、テスト・保守まで含めた全体的なスピード
おわり