プロジェクト

全般

プロフィール

Java史

1996年に最初の正式バージョンがリリースされてからのJavaの歴史をメモします。

Javaリリース履歴

Javaメジャーバージョンのリリース履歴

Javaのメジャーバージョンのリリース時期と、その頃のコンピュータスペックを次の表に記します。

年月日 JDKバージョン 自宅使用コンピュータ
1996-01-23 1.0 Apple PowerMacintosh 7500(CPU:PowerPC601/100MHz, MEM:16MB)
1997-02-19 1.1
1998-12-08 1.2
2000-05-08 1.3 自作(CPU:Pentium III/500MHz, MEM:128MB)
2002-02-06 1.4 自作(CPU:Pentium III/500MHz, MEM:384MB)
2004-09-30 1.5 自作(CPU:Athlon XP 2500+/1.8GHz, MEM:512MB)
2006-12-11 1.6 自作(CPU:Athlon 64X2 4200+/2.2GHz, MEM:2GB)
2011-07-28 1.7 自作(CPU:PhenomII X6/2.8GHz, MEM:8GB)
2014-03-18 1.8 自作(CPU:PhenomII X6/2.8GHz, MEM:16GB)

JDK 1.1およびJRE 1.1

JDK 1.2およびJRE 1.2

  • 音声ファイル(au以外の形式対応:aiff, wav, rmf, midi)
  • JITコンパイラ搭載(Windows/Solaris)
    Classic VM + Symantec JIT
  • ネイティブスレッド

JDK 1.3およびJRE 1.3

  • HotSpot Client/Server VM
    Classic VMもあるが対応JITコンパイラは含まれない
    世代別GC
  • RMI/IIOP

JDK 1.4およびJRE 1.4

  • 64bit VMの提供
    • SPARC Solaris版は1.4.0
    • Intel Linux/Windows版は1.4.2
  • Java Web Start

JDK 5.0およびJRE 5.0

JDK 6およびJRE 6

  • JavaScriptエンジン Rhino

JDK 7およびJRE 7

JDK 8およびJRE 8

  • JavaScriptエンジン Nashorn

言語仕様の変化

JDK 1.1

  • インナークラス
  • JNI
  • 国際化
    [ライブラリ]Calendar、DateFormat、TimeZone
  • リフレクション
    [ライブラリ]java.lang.reflect
  • [ライブラリ]JDBC
  • [ライブラリ]RMI

JDK 1.2

  • [ライブラリ]strictfp : 厳格なIEEE 754演算
  • [ライブラリ]コレクション API
  • [ライブラリ]CORBA
  • [ライブラリ]Swing
    • undo/redoフレームワーク
    • ドラッグ&ドロップ
    • Accessibility
    • Input Method Framework
    • 印刷
    • フォント対応(システムのフォントをほぼすべて利用可能)
    • BufferedImage
  • [ライブラリ]Java 2D

JDK 1.3

  • [ライブラリ]Timer API
  • [ライブラリ]JNDI
  • [ライブラリ]Java Sound API
  • [ライブラリ]TCPハーフクローズ、キープアライブ
  • [ライブラリ]
  • [ライブラリ]

JDK 1.4

  • assert文
  • 例外連鎖
  • JVMシャットダウンフック
  • [ライブラリ]正規表現
  • [ライブラリ]ロギングAPI
  • [ライブラリ]イメージI/O
  • [ライブラリ]XML処理(SAX, DOM, XSLT)
  • [ライブラリ]Preferences API
  • [ライブラリ]NIO
  • [ライブラリ]フルスクリーン、マウスホイール、VolatileImage、Robot
  • [ライブラリ]JCE
  • [ライブラリ]JSSE(SSL, TSL)
  • [ライブラリ]印刷サービス

JDK 1.5

  • ジェネリクス
  • オートボクシング
  • enum
  • 可変長引数
  • アノテーション(メタデータ)
  • 拡張for文
  • [ライブラリ]concurrentユーティリティ

JDK 6

JDK 7

  • try-with-resource構文
  • 例外のマルチキャッチ
  • リテラル改良(アンダースコア、2進リテラル)
  • switch文でString型の分岐
  • リスロー
  • [ライブラリ]NIO.2

JDK 8

  • ラムダ式、メソッド参照式、コンストラクタ参照式
  • インタフェースのstaticメソッド実装、defaultメソッド実装
  • [ライブラリ]Streams API
  • [ライブラリ]日時API
  • [ライブラリ]JavaFX

Java勉強史

Javaを使い始めた1996年から、Javaプログラミングに関して調べたことをノート(Java勉強ノート)に手書きで残しています。
20冊近く溜まってきたので、随時ノートのトピックをメモ。

JavaノートⅠ(1996-08~1998-04)


書籍「Java言語入門 アプレット、AWT、先進的機構」を読み始めるときにノートを取りながら、ついでにJavaについて学んだことをいろいろノートに書くようになったのがJava勉強ノート開始のきっかけです。

  • Mac用のJava開発環境調査
    Roaster、Symantic Cafe、Code Warriorなどの名前がノートに記載されています。
  • JEEVES Java HTTPサーバー
    クライアント接続をマルチスレッドで捌くコネクション指向のサーバーフレームワーク、いわゆるサーブレットです。
  • Javaの文法
  • Javaアプレット
  • イベント処理(mouseDown/mouseUp/mouseDrag/mouseMove/keyDownなど)
  • java.utilパッケージのObservable/Observer
  • 分散オブジェクト技術(HORB、CORBA、RMI)
  • PSE(Persistent Storage Engine)、トランザクション
  • Java開発ツール
    Rational Rose、Eleven、Parts for Java、Diva2000、Jamba、Javelin Pro、JPad Pro、Mojo、Netcraft、SuperCede for Java、VisualAge for Java、Visual J++、WinCafe/VisualCafe、Java WorkShop、JBuilder、JFactoryなど
  • JDK 1.1の新イベントモデル~デリゲーション
    いわゆるリスナーモデルです
  • Windows NT 3.51へのJDK 1.1.2インストール
    この頃は、日本語化パッケージを別インストールしてました。またJavaVMはインタプリタのみで、JITコンパイラは別途インストール(Java Performance Pack、Symantic製のJITコンパイラ)を入れていました。
  • Netscape IFC
    AWTは割とシンプルなGUIなので、本格的GUIを作るには役不足でした。そこでNetscape IFCがオープンソースで開発されていました。これは後にSwingへ進化しました。
  • このころ日本語でJavaプログラミングについて発信していたのが浅海 智晴さんの「じゃばじゃば」サイトでした。
  • Smalltalk風開発環境teikade
  • モバイルエージェント Voyager
  • VisiBroker for Java
  • JGL(Java Generic Library)
  • JavaVMのオプションでヒープサイズの指定、スタックサイズの指定
  • モバイルエージェント Aglets
  • Swing
    JDK 1.2で標準搭載のSwingは、JDK 1.1で動く開発途上版が
  • JDK 1.1の日付(Calendarクラス)
  • AWT 1.1
    軽量コンポーネント、レイアウトマネージャ
  • オブジェクトシリアライゼーション

JavaノートⅡ(1998-04~2001-03)

  • Info Bus
    LotusとSunが共同開発したデスクトップアプリケーション向けのコンポーネント間データ交換の標準。残念ながら広まらなかった。
  • java.ioパッケージの勉強
    最初はかなり悩んでいたようです。難しいですよね。
  • サーブレット
  • java.util.Properties
    アプリケーションの設定ファイルに使用しました。
  • JDKに含まれるjdbコマンドによるデバッグ
  • JDE for emacs
    エディタの双璧の一つemacsでJava開発を快適にする拡張パッケージです。一時期ずっと使っていました。
  • JDK 1.1の日付・時間をテキスト化(DateFormat)
  • 例外の使い方、エラーの種類
  • JDK 1.1をWindowsにインストールしたときのレジストリ設定を調べる
  • JDK 1.2のコレクションフレームワーク
  • リフレクション
  • 数値・文字の相互変換
  • JDK 1.2の-Xrunhprofによるプロファイリング
  • デバッグコードをJavaで入れるには
    条件コンパイル(#ifdef等)のないJavaでデバッグ時に有効なコードを入れる
  • RMIのレジストリサーバーへの登録
  • Java Plug-inとセキュリティ
  • java.net.URLクラス
  • Swingキーボードショートカット
  • XML
    このころからXMLが広まりました
  • Jlintでコード検証
  • SmartMakeによるjavaソースコードのビルド
  • StreamTokenizerの使い方
  • フリーのCORBA実装JavaORB
  • JUnit
  • Java 2でのサウンド
  • Swing/AWTのレイアウトマネージャGridBagLayout
    使い方が難しいGridBagLayoutに四苦八苦していた記録
  • JavaCC
    プロパティよりも複雑なデータをファイルに記述して読み込むのに使っていました
  • Xerces
    DOMツリーの読み書きをしていました。
  • Jikes
    IBMの高速なJavaコンパイラ
  • JDK 1.3とJDK 1.4での性能比較(Java2D)
  • フリーのCORBA実装系の調査
    このときはOpenORB、JacORBを見出しています。

JavaノートⅢ(2000-06~2001-10)

前のノートと時期が重なっている部分が多いので、この頃用途別に勉強ノートを分けようとしてやっぱり時間順にしたという試行錯誤が見られます。

  • Java読書会の議事メモ
    「Javaの格言」を読む会のメモがあります。
  • Javaの特徴を自分なりにまとめたメモ
    オブジェクト指向プログラミングの他、コンパイル時、実行時のエラー検出が強力な点、メモリ管理の自動化、ライブラリの動的ロード・リンクを挙げていました。
  • ファイルI/O
    ストリームの理解をするための工夫が残っています。
  • ネットワークI/O
    ソケットについてここで登場です。最初に分散オブジェクトから入ったので、TCP/IPレベルの通信は実はこの頃勉強し始めました。
  • JDBC
    ObjectStore、PSEなどのオブジェクトデータベースを最初に触っていたので、RDBMSは実はこの頃勉強し始めました。
  • 演算子の優先順位メモ
    いまだに迷います。ときどきノートに書いて理解をリフレッシュしています。
  • classの修飾子の記述できるもの、記述順序の整理
    Java言語仕様のBNFによる定義を持ち出して、理解に努めていました。
  • StringBufferの理解
  • ダブルディスパッチを考えるメモ
  • クライアント/サーバー・アーキテクチャの整理
    トランザクション、TPモニタといった概念について勉強し始めました。
  • アプレットからの印刷に取り組んだ形
  • CORBA製品Orbacusについて
  • IBM Logging Toolkit for JavaのAPIを詳しく調査
  • iContract調査
    DbC(Design by Contract)、契約による設計をサポートするツール(Javaのプリプロセッサ)
  • Java読書会の議事メモ
    「Javaスレッドプログラミング」を読む会のメモ。ダブルチェックロッキングは壊れているという記事の紹介がありました。
  • log4j 1.0.4をダウンロードして使ってみた形跡
  • 洋書「essential JAVA STYLE」を自分で読んで書くパターンをノートしていました

JavaノートⅣ(2001-10~2002-09)

  • 洋書「essential JAVA STYLE」のパターンをノートする続き
  • Java読書会の議事メモ
    「Java言語で学ぶデザインパターン入門」を読む会のメモ。
  • AspectJを使い始めました
  • Java 2 SE 1.4の新機能調査
  • Unicodeの調査
  • Java Web Startの調査
  • Java読書会の議事メモ
    「Effective Java」を読む会のメモ。
  • 時計プログラムの作成メモ
    新人向けのトレーニングテーマにしようと検討していた(と思う)
  • "JUnit best practice"を読んだメモ
  • 「Javaプラットフォームパフォーマンス」を読んだメモ
  • Javaランチャープログラムの作成
  • Java One 2002 Japan参加メモ
    Java SE 1.4、Jini、New I/O、Java Web Start、JFC/Swingパフォーマンス、パフォーマンスモニタリング、Java SEネットワーキング、リッチクライアント、プログラムパズラー、PersonalJavaとプロファイル、エクストリームプログラミング、パフォーマンスチューニング、HotSpotメモリ管理、Swingですばらしいクライアントを作成、J2EEチュートリアル、JXTA
    最終日の夜、Joshua Bloch氏、Neal Gafter氏とJava読書会BOFメンバーとでお寿司屋さんで会食

JavaノートⅤ(2002-11~2003-11)

  • Java読書会の議事メモ
    「リファクタリング」を読む会
  • 会社(職場)へのJava紹介ネタを検討するメモ
  • Javaコーディング標準の検討メモ
  • J2EE 1.4の調査
  • Eclipse 2.1の入手・インストールメモ
  • J2EE書籍調査
  • 「標準J2EEテクノロジー」の読書メモ
  • Java読書会の議事メモ
    「More Java Pitfalls」を読む会
  • SWTについて調査メモ
  • CORBAネーミングサービスのプログラミングメモ
  • Maven調査メモ
  • Java 2 SEのHelloプログラム作成(GUI版)
  • HTTPプロトコルの初歩調査メモ
  • 「アジャイルモデリング」を読んでのメモ
  • JNDI勉強メモ
  • JDCセミナー「ガベージコレクション in Java」受講メモ
  • C++のnew/deleteとJavaのnew/GC解放の性能の違いを調べたメモ
  • アサーション調査メモ
  • 「ソフトウェア再利用ガイドブック」読書メモ
  • Java Server Page勉強メモ

JavaノートⅥ(2003-10~2004-03)

  • エクストリームプログラミング
  • サーブレットのテストツール調査
    cactus、JUnitEE
  • Tomcat 4.1.x調査メモ
  • Antメモ
  • Oracle DBメモ
  • JFreeChartメモ
  • Java2Dメモ(座標変換、paint)
  • パターンワーキンググループ参加メモ
  • Windows版MySQL 4.0
  • Tomcat JNDIでJDBC接続する方法
  • HTML 4.0 strictメモ
  • Java SE標準ライブラリの鳥瞰図
  • Java読書会の議事メモ
    「EJBデザインパターン」を読む会のメモ
  • 「標準J2EEテクノロジー1」読書メモ
  • J2EE 1.4 RI SDKのサーバー起動・停止メモ
  • Sun Java Technology Conference参加メモ
    Faster Java Applications:How to tune the hotspot virtual machine、J2EE Webサービス、JSF、ワイルドカード(ジェネリクス)、J2SE 1.5 Tiger、Relaxerプロセス、コンポーネントベース開発、J2EE管理、JAXB
  • 「Mastering Enterprise Java Beans」を読んで
  • AspectJの書籍
  • Java SE パッケージのバージョン仕様
    java.lang.Packageクラス
  • Web+DB Press Vol.16 はじめようJBossを読んで

JavaノートⅦ(2004-03~2004-07)

  • J2EE 1.4 SDKメモ
  • 「EJB 第3版」を読んで
  • Eclipse 2.1.3インストールメモ(日本語化)
  • 例外の使い方
  • ガベージコレクション、HotSpot世代別GC
  • ソフトウェアパターンワーキンググループ参加メモ
    RAS、Enterprise Integration Patterns(著者降臨)
  • 職場でのJava勉強会ネタ準備メモ
  • J2EE 1.4 Tutorialのお勉強
  • 日経ソフトウェア主催 J2EEフレームワークとEJB参加メモ
  • AWT、Robotクラスによる画面キャプチャ
  • Java Web Startのプログラミング
  • JavaWorld Day参加メモ
  • Mavenメモ
    Firewall越え、JARのマニフェスト
  • 「ソフトウェアエンジニアリング An Object-Oriented Perspective」を読んで

JavaノートⅧ(2004-07~2005-02)

  • 「ソフトウェアエンジニアリング An Object-Oriented Perspective」を読んで(続き)
  • Java読書会の議事メモ
    「UMLモデリングの本質」を読む会
  • ソフトウェアパターン勉強会の参加メモ
  • Java World 2004.9 ソフトウェアテストを読んで
  • アスペクト指向技術セミナー参加メモ
  • 日経ITプロフェッショナル テストの技術 A to Zを読んで
  • プログラマ主役型プロジェクトのススメを読んで
  • Internet Week 2004でJava読書会を紹介する準備メモ
  • Java読書会の議事メモ
    「アジャイルソフトウェア開発の奥義」を読む会
  • 「Java 5.0 Tiger」読書メモ

JavaノートⅨ(2005-02~2005-07)

  • 「AspectJ in Action」読書メモ
  • 「Java Threads 3rd Edition」読書メモ
  • 「アジャイルソフトウェア開発の奥義」読書メモ
    Java読書会とは別に最初から読んでメモを作成
  • 「エンタープライズサービスバス」読書メモ
  • 丸山先生レクチャーシリーズ「CraigとLindaが語るJ2EE 5.0の最前線」参加メモ
  • Webサービス
  • SOAP
  • SOA
  • 「失敗の本質」を読んで
  • JBI:Java Business Integration
  • JNI:Java Native Interface
  • Java技術紹介資料作成メモ

JavaノートⅩ(2005-07~2006-03)

  • JBI Specificationを読んで
  • 「ソフトウェア開発の持つべき文化」を読んで
  • 「ビジネスはSOAで変革する」を読んで
  • 「Pragmatic Version Control」を読んで
  • BEA TechDay 2005参加メモ
  • 稚内北星短大サマースクール復習「J2SE 5.0とアノテーションプログラミング」
  • Java読書会の議事メモ
    「Java 2 Standard Edition 5.0 Tiger」を読む会
  • Java MEおよびMIDPの調査メモ
  • 「Effective Enterprise Java」翻訳メモ
  • Java読書会の議事メモ
    「オブジェクト指向のこころ」を読む会
  • 「Java魂」読書メモ
  • 検査例外の是非の調査検討メモ
    検査例外に積極的反対のEckel氏ら、消極的反対のJohnson氏ら、積極的賛成のSun、消極的賛成のBloch氏ら、という分類メモがあった
  • NetBeans調査メモ
    Ver.5.0について、ここではじめてNetBeansに触れている

JavaノートⅩⅠ(2006-03~2007-02)

  • JSR 82 Bluetooth API調査メモ
  • Swingのフォントサイズをシステムプロパティで指定
  • Model-View-Presenterパターンのメモ
  • 「Java Concurrency in Practice」読書メモ
  • 「Java魂」レジュメ(Java読書会朝の部)
  • JCE(暗号)メモ
  • Javaクラスファイル解析メモ
    クラスファイルのフォーマット仕様、構造体、JVM命令セット
  • JSR 296 Swing Application Framework調査メモ
  • Java読書会の議事メモ
    「Java並行処理プログラミング」を読む会
  • Javaナイトセミナー参加メモ

JavaノートⅩⅡ(2007-03~2007-12)

  • Javaナイトセミナー参加メモ
  • Java読書会の議事メモ
    「Java言語仕様(第3版)」を読む会
  • SwingWorkerの使い方まとめ
  • ブロッキングメソッドを呼び出す際のInterruptedExceptionの扱い方
  • 「Java並行処理プログラミング」を読んで
  • 「Javaネットワークプログラミングの真髄」を読んで
  • Desktop Patterns and Data Binding を読んで
  • developerWorks Tech Briefing参加メモ
    Scott W.Ambler氏の講演
  • Java Hot Topic参加メモ
  • SwingでDrag & Dropするメモ
  • JDK 6のJavadocメモ
  • Javaナイトセミナー JavaFX
  • 「Java Generics and Collections」を読んで
  • Javaのビット操作、16進文字列を整数型へ変換、整数型を16進文字列へ変換
  • NetBeans 6.0でJSR 296(Swing Application Framework)プログラムの作成
  • JavaBeansを今更調べる
  • StAXプログラミングメモ
  • 周期実行(java.util.concurrentを使って)のプログラミング
  • ガベージコレクション
    エルゴノミクス、世代別

JavaノートⅩⅢ

JavaノートⅩⅣ

JavaノートⅩⅤ

JavaノートⅩⅥ

JavaノートⅩⅦ

JavaNote01.png 表示 (52.1 KB) 高橋 徹, 2015/01/25 15:41

JavaNote02.png 表示 (51.9 KB) 高橋 徹, 2015/01/25 15:43

JavaNote03.png 表示 (39.3 KB) 高橋 徹, 2015/01/25 15:46

JavaNote04.png 表示 (38.5 KB) 高橋 徹, 2015/01/25 15:47

JavaNote05.png 表示 (40.8 KB) 高橋 徹, 2015/01/25 15:53

JavaNote06.png 表示 (39.7 KB) 高橋 徹, 2015/01/25 15:53

JavaNote08.png 表示 (42.3 KB) 高橋 徹, 2015/01/25 15:53

JavaNote07.png 表示 (41.6 KB) 高橋 徹, 2015/01/25 15:53

クリップボードから画像を追加 (サイズの上限: 1 GB)