こんにちは。
キャスレーコンサルティング SI(システム・インテグレーション)部の北見です。

Java9については、来年リリースが予定されています。
Java8の新機能の中で目玉機能の一つであった、「java.util.stream」へ新しくメソッドが追加予定となっております。
今回は、新しく追加予定のメソッドについて、試してみたいと思います。

Java9インストール

まずは、Java9のインストールです。
※詳細なインストール手順は割愛させて頂きます。

Java9ダウンロード・インストール

以下のサイトより、環境にあったJDKのダウンロードを行い、「jdk-9-ea+140_windows-x64_bin.exe」を実行しインストールします。
今回インストールしたJDKは、「JDK9 build140」となります。
https://jdk9.java.net/download/

java9_01

環境設定

インストールしたJDKについてパスの設定を行います。
・「コントロールパネル」⇒「システムとセキュリティ」⇒「システム」⇒「システムの詳細設定」⇒「環境変数」を選択し、環境変数の設定画面を表示します。
・「システム環境変数」より「JAVA_HOME」「Path」へ、今回インストールしたJDKのインストール先のパスを設定します。
java9_02

インストールおよび環境設定の確認

コマンドプロンプトにて「java -version」と記載して「Enter」を選択します。
実行結果として、インストールしたJavaのバージョンが表示されれば、インストール、環境設定は完了です。
java9_03

java.util.streamの新機能

Stream機能は、Java8で追加された機能となりますが、
Java9では新しく以下の3つのメソッドが追加予定となっております。

追加予定のメソッド一覧となります。
java9_04
※詳細については、http://download.java.net/java/jdk9/docs/api/index.htmlをご参照ください。

では、各メソッドについて、Java8(Stream不使用)、Java8(Stream使用)、Java9を比較しながら試していきたいと思います。
Streamについては、ラムダ式の使用が前提となっています。

ラムダ式、Streamってなに?という方は、以下のキャスレー技術ブログをご参照ください。
ラムダ式:【初心者向け】今更聞けない?Java8のラムダ式について知ろう!
stream:【初心者向け】Java8 Stream APIについて知ろう

① takeWhile

本メソッドは特定の条件に一致している間のデータを対象とします。
以下のコードは、リスト内の文字列が7文字未満である間のデータを対象に出力します。

Java8では、対象外要素のスキップや取得対象の要素数の特定(条件に一致している間の要素数)を行い処理を行う必要がありました。
Java9では、takeWhileへ対象とする条件(本ケースでは7文字未満)を指定するだけで対象データ(条件一致している間)の処理が可能となりました。
要素数の特定、スキップ処理が不要となるためコードも減り、本メソッドへ条件指定することで、何をしたいのかがより分かり易くなりました。

・Java8 – Stream不使用
java9_05

・Java8 – Stream使用
java9_06

・Java9
java9_07

・実行結果
java9_08

② dropWhile

本メソッドは特定の条件に一致している間のデータを対象外とし、それ以降のデータを対象とします。
以下のコードは、リスト内の文字列が7文字未満である間のデータを対象外とし、それ以降のデータを対象に出力します。

Java8では、対象外要素のスキップや取得対象の要素数の特定(条件に一致するまでの要素数)を行い処理を行う必要がありました。
Java9では、dropWhileへ対象とする条件(本ケースでは7文字以下)を指定するだけで対象データ(条件一致以降)の出力が可能となりました。
takeWhileと同様に要素数の特定、スキップ処理が不要となるためコードも減り、本メソッドへ条件指定することで、何をしたいのかがより分かり易くなりました。

・Java8 – Stream不使用
java9_09

・Java8 – Stream使用
java9_10

・Java9
java9_11

・実行結果
java9_12

③ ofNullable

本メソッドは、対象のデータがnullではない場合は、Streamを返送。nullの場合は、空のStreamを返送します。
以下のコードは、mapの要素よりlistに一致するキー情報がある場合のみ、そのVALUE値を出力しています。
Java8では、null判定を実施する必要がありました。
Java9では、本メソッドを使用することで、該当データが存在する(nullでない)場合のみ処理を行うことができます。
Optionalと同様にnullを安全に使用するためのメソッドと思われます。

・Java8 – Stream不使用
java9_13

・Java8 – Stream使用
java9_14

・Java9
java9_15

・実行結果
java9_16

最後に

今回は、Java9インストール、Streamの新機能について試させて頂きました。
私の現場はJava7のため、ラムダ式、Streamは、ほぼ初めて動かしてみましたが、コード量も削減され、可読性も良くなりました。
現時点で3メソッドのみの追加予定ですが、今後ますます便利になっていくと思います。

次回は、Java9のその他機能について、試してみたいと思います。

ご一読頂き有難うございました。


MyBatisを使ってみよう その2

Posted on 10月 19, 2016

こんにちは。
キャスレーコンサルティングSI(システム・インテグレーション)部の西川です。

前回に引き続きMyBatisを使ってDBアクセスするプログラムをご紹介していきたいと思います。
前回の記事で構築した環境がある前提で進めてまいりますので構築手順などは前回の記事を参照くださいませ。
(前回の記事はコチラ

今回は以下のテーマでMyBatisを動かしてみたいと思います。
・Mapping機能を使用してDB検索結果をエンティティクラス(Java)の構造に沿って格納されるようにする
・自動生成されたMapperのInsert/Update/Deleteを使ってみる
・動的SQLを使って複数行のInsertができるようにする

それでは早速始めていきましょう。 (続きを読む…)


MyBatisを使ってみよう

Posted on 06月 15, 2016

こんにちは。
キャスレーコンサルティングSI(システム・インテグレーション)部の西川です。

すでに沢山の解説サイトがあるなかでいまさら・・・とか言われそうですが、
今回はJavaのO/RMapperフレームワークであるMyBatisを使ってDBにアクセスしてみたいと思います。

DB関連の学習ってテーブル用意して・・・データ用意して・・・といった若干面倒な準備が必要なので
既存のDBなどを使って簡単に動かす方法ないかなと思ったことはありませんか?

既にMyBatisの使い方を解説されているサイトはたくさんありますが、
今回は以下のテーマでMyBatisを動かしてみたいと思います。

  • MyBatisが動くEclipseプロジェクトを時間をかけずに作る
  • サンプルや既存のDB環境をそのまま流用する

MyBatisの真価はマッピング機能や動的SQL、SpringFrameworkなどといったDIコンテナとの連携で発揮される
とは思いますが、まずは入門編ということでご了承ください。 (続きを読む…)


jOOXでjQueryライクにXML操作

Posted on 04月 20, 2016

こんにちは、キャスレーコンサルティングのSD(システム・デザイン)部ヤマナです。

今回はjOOXというjavaのライブラリを紹介させて頂きます。
jQueryライクなAPIでXMLの読取り/書込みが可能です。

今回は以下の操作についてjOOXのサンプルソースをご紹介します。

  • ファイル読取
  • Webからの読取
  • ゼロから作成
  • 既存XMLの変更

ファイル読取

まずは読取りの例から。

(続きを読む…)


[JavaFX] FXMLの使い方

Posted on 11月 25, 2015

こんにちは。SI部の吉原です。

以前、Swingに取って代わりJAVA標準GUIとなったJavaFX 2.0について記事を書きました。
前回はSwingとJavaFXの違いを見るために、JavaFXプログラミングによる画面描画の記事でしたので
今回はJavaFXの一番の目玉とも言えるFXMLについて書こうと思います。

FXMLとは

まず始めにFXMLについて簡単に説明します。
FXMLはJavaFXに用意されているXMLベースのGUI記述言語です。
「言語」と言っても、XMLベースのマークアップ言語ですので、Javaコードより記述は非常に簡単で分かり易くなっています。

利用するコンテナやコントロールの内容をXMLベースで記述するだけでGUIがデザインでき、
FXMLで定義した情報をJava側にて読み込むコードを記述するだけで画面描画が可能となります。
要するにプログラム内でシーン(Scene)グラフを構築するのではなく、FXMLファイル内で構築できるのです。

FXMLを使用すれば、あらゆるユーザー・インタフェースを作成できますが、FXMLは、大規模で複雑なシーン・グラフ、フォーム、データ・エントリまたは複雑なアニメーションが備わったユーザー・インタフェースを作成する際に特に役立ちます。
また、FXMLにスクリプトを含めることで動的なレイアウト作成も可能となっているのです。 (続きを読む…)


前回、Java8のラムダ式について記事(【初心者向け】今更聞けない?Java8のラムダ式について知ろう!
を書きました金巻です。
今回も引き続きJava8の新機能についてご紹介したいと思います。

Java 8では新たに導入される機能で特に注目を浴びている「Stream API」というものがあります。
こちらについて今回はご紹介いたします。

Stream APIについて

Stream APIはJava8で導入された機能の中で特に注目されている機能で、配列やCollectionなどの集合体を扱う為のもので、値の集計やデータを使った処理などが出来る便利なAPIです。

Streamの種類としては幾つかのインタフェースが用意されています。
よく使われるものとしては以下のものがあります。

インタフェース 概要
Stream<t> 要素がTのインスタンスのStream
IntStream 要素がintの値のStream
LongStream 要素がlongの値のStream
DoubleStream 要素がdoubleの値のStream

プリミティブ型にはそれに応じたStreamインタフェースが用意されています。
JavaはStringをプリミティブ型ではないとしているのでStringStreamはありません。

昔はAとBの処理を同時に実行するには2台のPCにそれぞれの処理を振り分けて実行することで
時間の短縮をしていました。これは分散処理と言われています。
これは1つのPCに1つのCPUしかなかったからでした。 (続きを読む…)


こんにちは、キャスレーコンサルティングSI部の清水です。

プロジェクト内に一人ぐらいは物凄いコーディングが早い方がいるものですが、そのような方は決まってショートカットキーの達人だったりします。
今回はすでにご存じのものが多いかもしれませんが、私が独断でEclipseで使えると思うショートカットを10個挙げてみました。
ショートカットキーはおぼえるというより、身に浸み込ますようなものです。
日ごろから積極的に使用し、ショートカットキーマスターを目指しましょう。

補完機能を利用する [Ctrl + Space]

変数名やメソッド名、クラス名等を途中まで入力し「Ctrl + space」を押すと、それ以降のキーワードを検索しを補完してくれます。

(続きを読む…)


はじめまして。SD部のヤマナです。

Javaエンジニアの方なら、一度はJUnitでテストケースの実装を行ったことがあると思います。

一度作ってしまえば便利ですよね。
実装した処理を手元で手早く確認したり、リファクタリング前後での挙動変化が無いことを確認したり。
そう、一度作ってしまえば便利。でも、一度作るまでが大変なんです。

結局、カバレッジを通すだけのテストケースになってしまって十分なassertが書かれていなかったり、
本質的な確認を行うテストケースになっていなかったり・・・。

そんなテストケースくらい、楽して書きたいものです。

そこで、「Better Java」なGroovyの出番です。
流行りのgradleにも利用されていますね。

(続きを読む…)


Swing と JavaFXの比較

Posted on 07月 01, 2015

こんにちは。SI部の吉原です。

Java8の導入に伴い今までJavaの標準GUIとして使われてきた Swing に代わり、JavaFXが標準GUIに取って代わる事となりました。
そこで、今回は長らくJavaの標準GUIとして使われてきたSwingと、JavaFX 2.0の違いについて書こうと思います。 (続きを読む…)


こんにちは。SI部の満石です。

今回はJava SE 8限定となりますが、安全なパスワードを生成する方法についてご紹介します。 (続きを読む…)



  • Profile
    キャスレーコンサルティングの技術ブログです。
    当社エンジニアが技術面でのTips、技術系イベント等についてご紹介いたします。
  • CSV社長ブログ
  • チーム・キャスレーブログ