SlideShare a Scribd company logo
1 of 30
Download to read offline
昔の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 を使いこなすとさらに速くなります
※ ここで言う「開発速度」とは作る速さだけじゃな
く、テスト・保守まで含めた全体的なスピード
おわり

More Related Content

What's hot

Rails5クイックスタート
Rails5クイックスタートRails5クイックスタート
Rails5クイックスタートHirata Tomoko
 
WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築Hirata Tomoko
 
2012/11/03Hiroshima.rb
2012/11/03Hiroshima.rb2012/11/03Hiroshima.rb
2012/11/03Hiroshima.rbUeki Kouji
 
よこはまクラウド勉強会 01
よこはまクラウド勉強会 01よこはまクラウド勉強会 01
よこはまクラウド勉強会 01basyura
 
Cocoa Binding 童貞だけど解説してみる
Cocoa Binding 童貞だけど解説してみるCocoa Binding 童貞だけど解説してみる
Cocoa Binding 童貞だけど解説してみるTakkiiii
 
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考えるRailsのフロントエンド開発を考える
Railsのフロントエンド開発を考えるHirata Tomoko
 
Xamarinは辛いよ
Xamarinは辛いよXamarinは辛いよ
Xamarinは辛いよTakkiiii
 
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!Yasuyuki Ogawa
 
Rails+Markdownでなにかつくる
Rails+MarkdownでなにかつくるRails+Markdownでなにかつくる
Rails+MarkdownでなにかつくるHirata Tomoko
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Takuya Mukohira
 
20160727 jaws ug-kobe_short_speak_alexa
20160727 jaws ug-kobe_short_speak_alexa20160727 jaws ug-kobe_short_speak_alexa
20160727 jaws ug-kobe_short_speak_alexaDaiki Mori
 
2013 08-19 jjug
2013 08-19 jjug2013 08-19 jjug
2013 08-19 jjugsk44_
 
Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Kanako Kobayashi
 
Spring Boot Introduction
Spring Boot IntroductionSpring Boot Introduction
Spring Boot Introductionchibochibo
 
C#とRubyをつなぐ
C#とRubyをつなぐC#とRubyをつなぐ
C#とRubyをつなぐ107steps
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話Naoto Koshikawa
 

What's hot (20)

Rails5クイックスタート
Rails5クイックスタートRails5クイックスタート
Rails5クイックスタート
 
WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築
 
2012/11/03Hiroshima.rb
2012/11/03Hiroshima.rb2012/11/03Hiroshima.rb
2012/11/03Hiroshima.rb
 
よこはまクラウド勉強会 01
よこはまクラウド勉強会 01よこはまクラウド勉強会 01
よこはまクラウド勉強会 01
 
Cocoa Binding 童貞だけど解説してみる
Cocoa Binding 童貞だけど解説してみるCocoa Binding 童貞だけど解説してみる
Cocoa Binding 童貞だけど解説してみる
 
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考えるRailsのフロントエンド開発を考える
Railsのフロントエンド開発を考える
 
Xamarinは辛いよ
Xamarinは辛いよXamarinは辛いよ
Xamarinは辛いよ
 
Walking front end
Walking front endWalking front end
Walking front end
 
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
 
Kyakusaki.rb
Kyakusaki.rbKyakusaki.rb
Kyakusaki.rb
 
Rails+Markdownでなにかつくる
Rails+MarkdownでなにかつくるRails+Markdownでなにかつくる
Rails+Markdownでなにかつくる
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
 
片手間JS on Rails
片手間JS on Rails片手間JS on Rails
片手間JS on Rails
 
20160727 jaws ug-kobe_short_speak_alexa
20160727 jaws ug-kobe_short_speak_alexa20160727 jaws ug-kobe_short_speak_alexa
20160727 jaws ug-kobe_short_speak_alexa
 
2013 08-19 jjug
2013 08-19 jjug2013 08-19 jjug
2013 08-19 jjug
 
Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207
 
Spring Boot Introduction
Spring Boot IntroductionSpring Boot Introduction
Spring Boot Introduction
 
C#とRubyをつなぐ
C#とRubyをつなぐC#とRubyをつなぐ
C#とRubyをつなぐ
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
 
Js async
Js asyncJs async
Js async
 

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