30
昔のJavaを振り返る Java に出会ってから12

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

Embed Size (px)

Citation preview

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

昔のJavaを振り返る

Java に出会ってから12年

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

自己紹介

岩見 直樹株式会社ビズリーチ エンジニア

・学生時代はBASIC, アセンブラ、C++ など

・仕事では C++, Java, VB など

・趣味でいくつかプログラム書いてます - Limy Eclipse Plugin, ER Master改 とか・プログラム系のサイトも公開してます

http://www.limy.org/program/

https://github.com/naoki-iwami

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

今回のLTは…

・Javaに出会ってから今に至るまでの話

・昔Javaってこんなだったんだよって話

・当時書いてた日記を元に振り返ってみた

※かなーり昔の話です

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

Javaとの出会い

2001/7/13一冊の本を買う。『やさしいJava』

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

Javaとの出会い (2)

本を読んだ最初の感想。

『C++ と一緒じゃん!』

・ポインタ意識しなくて使えるのは楽

・でもインタープリタだから処理速度は遅い・最初は Javaアプレット をやってみた  - 当時公開してたHPで公開(内容は覚えてない…)

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

Java をさらに勉強したあとの印象

2001/9/22

・中身はC++と大分違う

・インターフェイスの概念に慣れない・実行スピードがかなり犠牲になる ※ 当時の Java は 1.3

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

Java のデザインパターン

2002/4/30本を買う。『Java言語で学ぶデザインパターン入門』

・資源の再利用・しかし実際にはそううまくいかない

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

Java を仕事で使う

2002/5/28初めて仕事でJavaを使うことになりました。

・しかしプログラムの内容は「バッチ処理」

・Javaでバッチ処理なんてできんの?

・JDBCは便利

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

Eclipse に出会う

2002/7/8

・当時の現場ではIBMの Visual Age を使用

・IDEなんて使いにくいというのが定説

・でも Eclipse は違った

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

Eclipse に出会う (2)

Eclipse の機能。

・自動Import文作成

・CVS連携

・メソッドヒント(Ctrl+Space, Alt + /)・リファクタ支援・ネイティブで高速な開発環境

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

Java は知らないことだらけ

2002/7/22

・HashMap が返すキーの順番は適当だった!

・独自クラスをキーにすると、get で値が取れない…・FileWriterはバッファリングしなくてもそれなりに使える

・ひたすらJavaのソースを読んで勉強

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

EJB に出会う

2002/7/23EJB(Enterprise JavaBeans)・これからはEJBらしい

・分散するらしいよ

でも設定ファイルを見てみると…

<![CDATA[SELECT OBJECT(a) FROM AccountBean AS a WHERE a.balance > ?1]]>

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

Swing Look&Feel

2002/7/31・Swing のショボい見た目を自由にカスタマイズできる!

でも実際にカスタマイズするには…・総計30個超、500KBにも及ぶJavaプログラムを自作しなければならない

結論: ゼッタイに無理!

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

JBoss と出会う

2002/8/27やっぱりあった、オープンソースのEJBサーバ。

開発者の Marc Fleury 氏はこんな事を言ってました。

「Linux, Apache の次に来るもの。それをJBossにしたい」

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

Javaパフォーマンスチューニング

2002/11/4当時のJavaはあまり速くなかったので、課題はパフォーマンスチューニング。

実際、現場のプロジェクトでもパフォーマンス問題が発覚。

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

Javaパフォーマンスチューニング (2)

現状: 約10000件の配賦処理に6時間掛かる

原因: 全てのデータ入出力がDB経由。チューニング無。

改善1: データ入出力は最初と最後だけDB経由で、後は全てメモリ内で処理するように変更。結果1: 6時間 → 30分に短縮

改善2: データストアを HashMap から TreeMap に変更。

結果2: 30分 → 2分に短縮

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

JRuby に出会う

2002/12/3Pure Java によるRuby実装。

しかし…実行速度は Pure Ruby の 1/45

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

jikes に出会う

2003/1/8IBM がオープンソースで公開しているJavaコンパイラ。

・コンパイル速度は本家 javac の約5倍・jsp コンパイルは jikes でやるのが当時の流行

・実際、相当速くなった

※ 2004年で開発終了

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

MIDP に出会う

2003/1/17携帯端末上で動くJavaアプリケーションの規格。

・当時は Docomo の i-mode が主流

・MIDP を使えば、どの端末でも動く

・しかし実際には各社独自の規格を上乗せ

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

EJB EntityBean に出会う

2003/1/24いわゆる O/R マッピング機構。

・Beanのフィールド値を変更すれば自動的にDB書込

・サーバ再起動してもフィールド値はそのまま使える・DBを意識する必要が無い!

・しかし実際には超遅くて使い物にならない

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

Struts に出会う

2003/2/15Javaで最も使われているWebアプリケーションフレームワーク。

・最初の印象は「まぁまぁ使えそう」・しかし本格的に調べていくうちにその恐ろしく難解な作りに唖然とする・公式ページにあるドキュメントも相当わかりにくい

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

SWT に出会う

2003/5/13Eclipse で使われているグラフィックライブラリ。

・ネイティブ実装なので高速・機能はSwingに劣る

・Eclipse Plugin を作るには欠かせない

・Eclipse RCP とか

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

Java 1.4 に出会う

2003/5/15・パフォーマンスが相当上がってるらしい・New I/O API・コレクションクラスの拡張

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

衝撃の一言

2003/7/17Java はもはやインタプリタ言語なんかじゃない※ Javva the Hutt のコラムより

・HotSpot により、実行速度は最適化される

・C言語がアセンブラに取って代わったように、JavaがC言語に取って代わる

http://www.javanews.jp/javap/ Javaパフォーマンスチューニング(日本語版)

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

Java 5.0 に出会う

2004/6/30・Generics の導入  List<String>

・AutoBoxing の導入  Integer count = 0;

・Enum・可変長引数  func(String... args)

・Annotation   @Autowired

・拡張forループ文  for (value : values)

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

AspectJ に出会う

2004/10/8

・アスペクト指向 という概念を初めて知る

・オブジェクト指向と組み合わせて使う・Spring Framework でも使ってる

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

その他色々と出会う

2005/2/9 Hibernate2005/3/8 Groovy2005/3/16 DWR2005/6/24 Spring Framework2005/11/6 Ehcache

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

その他色々と出会う(2)

2007/11 WebWork2007/11 Struts22007/11 iBatis…2011/12 Scala2012/2 dbflute

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

最後に

・Java 環境は今でも進化し続けています

・慣れてくれば、開発速度はかなり速いです・Eclipse を使いこなすとさらに速くなります

※ ここで言う「開発速度」とは作る速さだけじゃなく、テスト・保守まで含めた全体的なスピード

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

おわり