IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

スーパーエンジニアの独り言

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第1回 Java SE 7 登場 2011年7月

 今回から始まったスーパーエンジニアの独り言。
 最初の話題は、7月28日にメジャーバージョンアップの正式リリースが予定されている「Java SE 7 (JDK 7)」の話題です。

 新機能として搭載が予定されている主要な機能は以下が挙げられます。

  • もっと新 I/O ("NIO.2") (JSR 203)
  • 細かな構文変更 (Project Coin) の一部 (JSR 334)
  • JVMの動的型付け言語のサポート (JSR 292)
  • G1ガベージコレクタの導入 (Garbage-First GC)
  • クラスローダの拡張
  • Unicode 6.0
  • etc ...

 ライブラリでの機能拡張の目玉として "NIO.2" で非同期入出力サポートであるjava.nio.channels パッケージが用意されます。

 これには "AsynchronousSocketChannel" など4つの非同期チャネルがあり、バッファ(ByteBuffer)を取得し、それに対して読み取り/書き込みすることで、処理が非同期で行われます。非同期チャネルによって下位のファイルやソケットは、隠蔽され抽象化されます。また実行プラットフォームの対応次第では、ネイティブな非同期機能が利用されることで、実行速度の向上も見込めます。

 次に「言語仕様の細かな変更(Project Coin)」と題されている新機能では、コーディングでの記述構文の一部が変更されて簡略表記が可能になりました。
(「細かい」ので、コインなんだそうです。)

 例えば、Genericsでの例を挙げますと、従来では

  | Map<String, Collection<Integer>> map
  |     = new LinkedHashMap<String, Collection<Integer>>();

と書いていましたが、Java SE 7 では、

  | Map<String, Collection<Integer>> map
  |     = new LinkedHashMap<>();

と、右辺の型指定が省略できるように構文が改良されました。
(これを "Diamond Syntax" と呼ぶようです。省略された "<>" が、ダイヤモンドに見えるからだそうです。)

 他にも構文変更では、"switch" 構文での条件式に "String" オブジェクトを使えるなどといった細かな変更が多数ある様子です。

 プログラマにとってだけでなく、メインテナンスでの互換性の問題も含めてシンタックスが変わるのは結構悩ましいことですが、簡略化できるという事で可読性が落ちない様に、コーディングすることが重要になるでしょう。

 他の新機能についてのご紹介は、機会があればまたいずれ。

 今回の新機能で搭載が期待されており、大きな話題であったクロージャ(Project Lambda) は、結局 Java SE 8 へと持ち越しになりました。

 Java SE 6 で仕様確定の際に実現を見送った機能が、次期に盛り込まれる予定でJava SE 7 では長期にわたり新機能への取り組みがなされてました。紆余曲折を経た末に全てを盛り込む事が出来ず、再度 Java 8 へと申し送りされました。
 今後は Java 自体の方向性として Java 8 を注視するのが肝要となるでしょう。

 現在、最もポピュラーなプログラミング言語であり、アプリケーションの実行環境としてもデファクトスタンダードの位置を確保しているのが "Java" です。単なるプログラムではなく実行処理系としてJVMがシステムの重要な位置を占めているのは既知であり、将来を見越しても当面その座は揺るがないでしょう。
Java VMに於ける「動的型付け言語のサポート」こそが、JRubyを代表とする処理系の誘致を示しているのであり、そこからも計り知れます。

 まさにクラウドコンピューティングに於いても開発言語としてだけではなく実行環境及びシステム/サービス間のインターフェースとして必須の知識です。

 "Java 5" で文法自身に大きな変更が加えられたのは知っているものの、いわゆる"Java 2" までの理解で完了していて現在進行している動向に追従できていない方々が(筆者を含めて)大勢いることかと思います。
 あらゆるシステムが、仮想化/クラウドサービス化されていくのを機会に、Java 関連の棚卸しするために知識の習得/再確認されるのは如何でしょうか?
(トレーニングコースも順次、新バージョンにアップデートされる予定です。)

 >> Javaの関連コース
 >> クラウド・仮想化の関連コース

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes