DroidKaigi 2017 day 1, 17:10 JST
DroidKaigi 2017 day 1, 17:10 JST
Java SE 8で追加された新機能の中でも特に広い範囲に影響するのが「Date and Time API」、「ラムダ式」、「Stream API」だ。これらの機能の実態を、日本オラクルの伊藤智博氏がパフォーマンスの観点から検証した。 Java SE 8の新機能に対して開発者が抱く疑問 Java SE 8ではさまざまな新機能が追加されたが、それらの中でも特に広い範囲に影響するのは「Date and Time API」、「ラムダ式(Lambda式)」、そして「Stream API」の3つであろう。これらはJavaプログラムの基本的な構造を変えるものであり、使いこなせば強力な武器になる。だが、日本オラクルの伊藤智博氏(コンサルティング統括本部 プリンシパルコンサルタント)によれば、実際の現場では次のような疑問の声を聞くことが少なくないという。 Date and Time APIについて──「従
「大きく進化したJava SE 8は企業に多くのメリットをもたらす。プロジェクト・マネジャーやアーキテクトも、今すぐ移行に取り掛かるべき」と訴えるJavaエバンジェリストの寺田佳央氏。ラムダ式とストリームAPIを例にとり、Java SE 8によるプログラミングの特徴と利点を語った。 2014年3月にリリースされた「Java SE 8」の大きな変更点の1つは、新たな言語機能として「ラムダ式(Lambda Expressions)」が導入されたことだ。同機能を使うことで、開発者は従来よりも効率的にプログラムを書けるようになる。また、併せて導入された「ストリームAPI(Stream API)」を使用することで並列処理の実装が容易となり、マルチコア・プロセッサの能力を生かしたハイパフォーマンスなアプリケーションを迅速に作れるようになる。 日本オラクルのJavaエバンジェリスト 寺田佳央氏は、企業の
Java SE 8で導入されたラムダ式は、どのような仕組みで実現されているのだろうか? ラムダ式をより深く理解したいと考える読者にとって、これは気になるテーマの1つだろう。その秘密をお教えしよう。 Java SE 8で導入されたラムダ式は、Javaの言語仕様の歴史において最大級の変更だとされている。ただし、これはあくまでもJava言語の文法レベルの話であり、Javaプログラムを実行するJava仮想マシン(JVM)に新たな仕組みが導入されたわけではない。つまり、言語仕様に関する旧バージョンとの相違はコンパイラとランタイムが吸収し、バイトコードレベルでの互換性は保たれているということだ。 それでは、このような大きな変更を、既存のJVMの仕組みの中でどのように実現したのだろうか。それを知ることは、ラムダ式をより深く理解する手助けとなるかもしれない。Java SE 8のラムダ式実現の経緯と仕組みに
夜中に8/15頃のツイートが回ってきた。 Java 8u60 adds reflection on lambda param names DSLs https://t.co/cflxFK468e Hash-Literals https://t.co/5rOCrrckcB pic.twitter.com/NEzj4X3Bt1— Benjamin Weber (@benjiweber) 2015, 8月 16 曰く Java8u60でラムダのパラメーターの名前に対してリフレクションができるようになってるよ というわけで 早速、件のツイートにあったレポジトリーをダウンロードして(mavenレポジトリーにはない…(´・ω・`))、プロジェクトに追加して、試してみた。 コード import com.benjiweber.typeref.NamedValue; import java.util.Col
Java SE 8では、ラムダ式の導入に伴い、並列処理の実装を容易にする新APIとして「ストリームAPI」が追加された。その効果的な使い方を、前回の記事に続いて米国オラクルのスチュアート・マークス氏が解説する。 >> 前回の記事はこちら 前回は、米国オラクルでJava SEの仕様策定をリードするスチュアート・マークス氏によるラムダ式の基礎解説をお届けした。今回はその続編として、Java SE 8でラムダ式のサポートに伴って導入された新機能「ストリームAPI」に関するマークス氏の解説をお届けする。 ※本記事は、2014年5月に東京で開催された「Java Day Tokyo 2014」におけるスチュアート・マークス氏のセッション「Lambda式とストリームAPI、並列処理の詳細」を基に構成しています。 パイプラインや並列処理をスマートに実装できるJava SE 8の新機能「ストリームAPI」
本書はJava 8で追加された新機能のうちラムダ式とStream APIに焦点を絞り、これらを使った関数型プログラミングについて解説します。今までのJavaには存在しなかったこの新しいパラダイムに踏み込むことで、冗長さを排し、より簡潔なプログラミングを実現します。しかし、これを使いこなすためには、従来のJavaにおける考え方を一旦捨て去り、新たな考え方をもってプログラミングを行わなければなりません。 本書では、従来の手法と対比させつつ、APIの使用方法や設計手法を詳解し、基礎を固めます。遅延評価や再帰、そして並列化についてもサンプルコードを使って詳しく解説します。日本語版ではJava Championである櫻庭祐一氏による「日本語版まえがき」を収録。Java 8の特性を十分に生かしたプログラミングを行う技術者必携の一冊です。 まえがき はじめに 1章 Hello、ラムダ式! 1.1 考え方
DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ...............................................
札幌は大荒れ、の予想だったのですが、今のところ大変穏やかな天候です。こんにちは。こむろです。 この記事はJava Advent Calendar 2014の17日目になります。 昨日16日は@zephiransasさんの「Lambda-behaveでテストを書こう」でした。 Java8の素晴らしき世界 Java8を使ってプログラミングしていると、新しい機能を色々と使うことで簡潔で読みやすいコードを記述することが出来ます。これが思いの外楽しくるんるん気分でコードを書くことが出来ます。今までのように型をいちいち書かなきゃとかネスト地獄みたいなところを、少しだけ、でも大胆に改善することが出来、久々にJavaでコードを書いていて楽しいと思った時間でした。AndroidはJavaではn(ry 特にここ数ヶ月、Play for JavaでJava8を利用した開発をしていたのですが、その中でStream
今回はちょっと趣向を変えて、ストリームの機能ではなく、ストリームの実装について紹介していきます。 まず、ちょっとしたクイズです。リスト1のプログラムを実行すると、標準出力には何が出力されるでしょう。 public class StreamQuiz { public static void main(String... args) { IntStream.rangeClosed(0, 5) .filter(x -> { System.out.println("filter: " + x); return x%2 == 0; }) .map(x -> { System.out.println("map: " + x); return x/2; }) .forEach(x -> { System.out.println("forEach: " + x); }); } } IntStreamインタ
こんにちは。Java 初心者です。 Java 初心者、得に LL から Java に来た人にありがちな問題について社内向けに書いたものをオープンアンドシェアさせていただきます。 前提として、我々は Java 8 でガンガン攻めているということをご承知おきください。 また、自分がこの数ヶ月で「うわー。こうしとくべきだったのかー」と気づいたやつをドヤ顔で語っているということにもご注意ください。 【追記】 対象は中規模 B2C の場合です(中規模というのは facebook より小さいという程度の意味です) 例外を握りつぶさないようにしよう Eclipse が生成する以下のようなコードをそのまま残しているケース。 これは言うまでもなく良くないですね。デバッグが困難になります。 try { } catch (IOException e) { e.printStackTrace(); } Perl
今回も前回同様、従来の書き方からストリームに変換していく過程を紹介していきます。 前回は主にfilterメソッド、mapメソッド、forEachメソッド、collectメソッドの4種類のメソッドを使用しましたが、今回はそれに加えflatMapメソッドを使っていきます。 また、collectメソッドで、標準では提供されていない機能を独自のCollectorインタフェースの実装クラスを作成してみます。 今回も、前回同様、顧客を表すCustomerクラスを使用しましょう。Customerクラスは名前、取引額、グレードを保持するクラスです。それぞれgetNameメソッド、getTransactionValueメソッド、getGradeメソッドで取得できます。 今回はCustomerクラスに加えて、営業担当者を表すSalesPersonクラスをします。SalesPersonクラスは名前、担当エリア、
7. たまにみる実装 static Map<BigInteger, List<BigInteger>> cache = new HashMap<>; void doGet(…) { BigInteger n = …; List<BigInteger> result = cache.get(n); if (result == null) { result = PrimeFactor.divide(n); // 素因数分解 cache.put(n, result); } // … } 8. たまにみる実装 static Map<BigInteger, List<BigInteger>> cache = new HashMap<>; void doGet(…) { BigInteger n = …; List<BigInteger> result = cache.get(n); if (resu
前回まで、7回に渡ってストリームの機能について紹介してきました。 ところで、筆者はこれまで何度もProject Lambdaについての講演やハンズオンを行ってきました。そこで、よく言われるのが、「頭では分かっているけど、いざ書こうとすると書けない」、であるとか「APIは分かっていても、どこから書き始めればいいか分からない」ということです。 そこで、今回はStream APIのまとめとして、いくつかの例題をとりあげ、以前の書き方からストリームを使った書き方に変換していくということをやってみたいと思います。 public class Customer { // 顧客のグレードを表すenum public enum Grade { S, A, B } // 名前 private String name; // 取引額 private long transactionValue; // 顧客のグレ
Java SE 8以降の開発ではfor文の利用頻度が減る。ラムダ式とStream APIが中心に Java EE 7から、サーバ・サイドにおいてもスレッド(並列処理)の実装が可能になりました。具体的には、「Concurrency Utilities for EE 7」により、スレッドをアプリケーション・サーバの管理下で動かせるようになっています。また、Java SE 8では、並列処理の実装を支援するクラスとしてCompletableFutureが追加されました。これらのAPIを組み合わせることにより並列処理の実装がどう楽になるのかを、次の例題で考えてみます。 この処理をJava SE環境で実装するとしたら、一般的には次のようになるでしょう。 手順(1):固定長のスレッド・プールを持つExecutorServiceオブジェクトを生成する 手順(2):ExecutorCompletionSer
毎年6月にEclipse本体や関連プラグインなどがまとまって一斉にバージョンアップを宣言するEclipseのRelease Trainが今年も行われ、Eclipse 4.4、コード名Lunaがリリースされました。 Eclipse 4.4 Lunaの最大の目玉は3月に登場したJava 8への対応です。 ラムダ式や新しい日時APIなどのJava 8の新機能に対して、Eclipseのコードフォーマット、クイックアシスト、リファクタリング機能、コンパイラなど包括的に対応しています。そのほかの新機能は、OSGi R6サポート、Workbench UIでダークテーマの追加などの改善、PHP開発ツールパッケージのアップデートなど。 Eclipseの日本語化プラグインおよび日本語版ディストリビューションのPleadesも、すでにEclipse 4.4 Luna対応リリースを行っています。 Pleadesは
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く