タグ

javaとjava8に関するtarchanのブックマーク (15)

  • Java8 Streamから学ぶOptionalモナドとEitherモナド。

    Java8 Stream, Optional, Either and Try.md Java8 Stream, Optional, Either and Try. Java8 Stream の使い方を覚えたら、Optional や Either もすぐ使えるようになるよ!編 Stream リスト要素の有無を意識せずに処理することができる Integer result = Arrays.asList(1, 2, 3) .stream() .filter(n -> n > 5) //この時点で要素がなくなる .mapToInt(n -> n * n) //そんなことは意識せずに処理したいことを記述する .sum(); ⇒処理するにあたり、リストの要素があろうとなかろうと意識する必要がない リスト要素に対する処理結果がリストであっても問題ない //戻り値がリストとなる処理があったとして、 Lis

    Java8 Streamから学ぶOptionalモナドとEitherモナド。
  • Java日付時刻APIメモ(Hishidama's Java8 Date and Time API Memo)

    概要 JDK1.8で新しい日付時刻API(Date and Time API)(java.timeパッケージ)が導入された。 これまで日付時刻に使っていたjava.util.Date・java.util.Calendarやjava.text.SimpleDateFormatとは全くの別物。 新APIでは従来のDateやCalendarは一切出てこない。 新旧APIの対比 内容 説明 値の保持 旧

  • 第七回 #渋谷java に行ってきました - たけぞう瀕死ブログ

    弊社オフィスにて@seri_kさんの主催で月一回程度の頻度で開催されている #渋谷java という勉強会に行ってきました。今回が第七回目の開催となります。 http://shibuya-java.connpass.com/event/7060/ 実は@seri_kさんは先月で弊社を退職されてしまったのですが、 #渋谷java の開催は続けてくださるそうですw 以下、個人的に気になったセッションについてまとめておきます。 Date and Time API におけるタイムゾーンの扱い @btnrougeこと蓮沼さんのセッション。TimeZoneとOffsetの使い分け方について説明されていました。 個人的にはもちろんZonedDateTimeとOffsetDateTimeの違いは理解はしていたのですが、使い分けはさほど意識したことなかったので(ZonedDateTimeなら夏時間をいい感じに

    第七回 #渋谷java に行ってきました - たけぞう瀕死ブログ
  • Java8 日付時刻APIを試してみた - ひしだまの変更履歴

    ひしだまHPの更新履歴。 主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲーム音楽です。 前回までのあらすじ ジャバ八村でStreamを手に入れた俺たちは、次の目的であるDate and Time APIを探し始めた。 という訳で、Java8のStream(やラムダ式・メソッド参照)と並んでもうひとつの目玉である日付時刻APIを試してみた。 (軽く見るだけのつもりが、3連休をほとんど全部使ってしまったorz) 細かいことをやりだすともっと調べないといけなさそうだが(Clockの使い方とか、これで合ってるんだろうか?)、基的な使い方はとりあえず充分かな。 DateTimeFormatterも、評判どおりSimpleDateFormatより便利そうだし、速度も速そう。 まぁともかく、Java8で事前に調べたいと思っていたところはだいたい終わった。 日付時刻API

    Java8 日付時刻APIを試してみた - ひしだまの変更履歴
  • Java8のStreamを使いこなす - きしだのHatena

    さて、Java8で関数型っぽいことをやって遊んでみたわけですが、実際はそんな書き方しませんよね。 Java8で実際に使うのは、Streamです。 ということで、Streamの使い方をひととおり見てみます。 ※5/17 仕様変更があったので、修正しました 基 まずは、Iterableインタフェースに用意されたforEachメソッドを見てみましょう。 List<String> names = Arrays.asList("hoge hoge", "foo bar", "naoki", "kishida"); names.forEach(s -> System.out.println(s)); これで次のように表示されます。 hoge hoge foo bar naoki kishida いままでの拡張forだと次のように書いてました List<String> names = Arrays.a

    Java8のStreamを使いこなす - きしだのHatena
  • Java8のStreamの目的と書きやすさや可読性、並行処理の効果について - きしだのHatena

    さて、前回Java8のStreamの使い方をざっと見てみたのですけど、はてなブックマークのコメントで「Javaが使われている領域でこんな言語拡張は必要か」「可読性が損なわれていて単なる自己満足ではないか」のようなコメントがついていました。 実際どうなのか考えてみます。 Java8のStreamの目的 では、いまJavaが使われている領域を考えてみましょう。 Javaがいまよく使われているのは、クライアントサイドではなくサーバーサイドです。とくに、直接アクセスをうけつけるサーバーではなく、分散データ処理のためのHadoopやHBase、全文検索エンジンのLuceneなど、バックエンド処理を行う製品のシェアが大きいように見えます。 TwitterGoogleでも、Javaで書かれたバックエンドが動いているようです。Facebookも分析系ではJavaを使っているようです。 大手サービスでバッ

    Java8のStreamの目的と書きやすさや可読性、並行処理の効果について - きしだのHatena
  • JAWS-UG三都物語で「そろそろJavaみなおしてもええんやで」というプレゼンしました - きしだのHatena

    夏のJAWS-UG 三都物語 2014というイベントで「そろそろJavaみなおしてもええんやで」というプレゼンしてきました。 Javaのイベントではなかったので、Javaを使ってない人を想定したプレゼンでしたが、実際会場のほとんどがJavaメインではなかったようです。 for(int num : nums){ if(num > 10) continue; sum += num * 2; } というコードが、NetBeansの「関数操作を使用」というリファクタリングで sum = nums.stream().filter((num) -> !(num > 10)).map((num) -> num * 2).reduce(sum, Integer::sum); になったところがハイライト。 ここまでできるとは思ってなかった。 そろそろJavaみなおしてもええんやで from なおき きしだ

    JAWS-UG三都物語で「そろそろJavaみなおしてもええんやで」というプレゼンしました - きしだのHatena
  • Java 8 & 機械学習の視点でみる Spark 1.0 リリース - ALBERT Engineering Blog

    はじめに さる 5/30、今か今かと待ち望まれていた Spark 1.0 が 遂にリリース されましたね! その前日 5/29 には都内で 実際のところ Spark ソースコードリーディング だった Hadoop ソースコードリーディング #16 が開催されるなど、 Spark についての注目度が俄然高まってきているように思えます。 そんなわけで、0.9.1 からの変更点や機能追加について、Java機械学習に携わるエンジニアの視点で 今回の 1.0 リリース内容をまとめてみました! 何が変わったのか? Spark : Java 8 のラムダ式サポート Java エンジニア的に今回の一番の変更点は、何と言っても Java 8 のラムダ式への対応、ですね。 今年 3 月の Java 8 正式リリース後、主に Stream API の周辺においてラムダ式を書く機会が徐々に増えつつあるかと思い

    tarchan
    tarchan 2014/07/10
    >ラムダ式サポートによって JavaRDDLike などのインタフェースが変更されており、0.9.1 までの Spark アプリケーションが 1.0 ではコンパイルエラーとなることがあります
  • Java8で強化されたMapと、書きやすくなったメモ化再帰 - きしだのHatena

    Java8のlambda構文の話を書くと、旧来の書き方でいいというコメントがつくのですが、それでも便利になったMapの恩恵を受けることは多いんじゃないかと思います。 ※ 2018/5/31 Java9からはメモ化再帰には使えなくなっています ※ 2019/2/15 なんか問題ない? Mapには、lambda式を使ったメソッドが多く追加されていますが、たとえばgetOrDefaultメソッドのようなlambda式を使わないメソッドも追加されていて、これも便利です。 そして、このようなlambda式を使わないメソッドも、間接的にはlambda構文サポートでの言語拡張のおかげです。 Mapはインタフェースなので、Java7までの構文でメソッドを追加しようとすると、Mapを実装しているすべてのクラスに新しいメソッドの実装を追加する必要がありました。そしてそれは現実的に不可能なので、今までMapなど

    Java8で強化されたMapと、書きやすくなったメモ化再帰 - きしだのHatena
    tarchan
    tarchan 2014/04/04
    >Java8では、桁あふれで例外がでるような演算メソッドがMathクラスに用意されているので、これを使えば桁あふれが検出できるようになっています。
  • JavaSE8リリース記念!マイナーな言語仕様を紹介してみる(交差型キャスト,レシーバパラメータ(仮引数にthis)) - きつねとJava!

    さて,日未明JavaSE8がリリースされましたね!アメリカ時間では18日でしたが,日では19日になってました. 無事リリースされたのでJavaSE8で導入されたマイナーな言語仕様を2つ紹介してみたいと思います. メジャーな言語仕様は誰かが紹介してくれると思うので・・・ 交差型キャスト レシーバパラメータ(仮引数にthis) 交差型キャスト 一つ目はProject Lambdaで導入された交差型キャストです. まず,Javaには交差型、あるいは合成型と呼ばれるものがあります。 今まではジェネリクスの型境界にだけ使えていた「Type1 & Type2」のように型を&でつないだものです。 これがJavaSE8からはキャスト式で利用できるようになります。 例えば次のようなものです。 (Type1 & Type2) expr; &で繋げられる型は3つでも4つでも問題ないです. ただし,一つ目の型

    JavaSE8リリース記念!マイナーな言語仕様を紹介してみる(交差型キャスト,レシーバパラメータ(仮引数にthis)) - きつねとJava!
  • Java8でのプログラムの構造を変えるOptional、ただしモナドではない - きしだのHatena

    ※ 5/29 3:23 追記:なんかモナドになったかも。最下部参照 さて、Java8での拡張をいろいろ見てきたわけですが、ではアプリケーションプログラムでFunctionを受け取るメソッドをがんがん定義するかというとそういうことはあまりなく、フレームワーク的な部分で数個定義する感じになると思います。もちろん数個でも効果はでかいのですが。 また、おそらくStreamを受け取ったり返したりするメソッドを定義することは、めったにないのではないかと思います。 Mapでの拡張も、メソッド内部での処理記述がかわる話で、メソッドの引数や戻り値はMapのまま変わりありません。 Javaでのプログラムの構造というのは、メソッドの引数や戻り値の型がなんであるかで決まると言うことができます。その意味では、lambdaやStreamというのは処理の記述は変わるけどプログラムの構造は変わらないとなります。 けれども

    Java8でのプログラムの構造を変えるOptional、ただしモナドではない - きしだのHatena
    tarchan
    tarchan 2013/11/07
    >Optionalがモナドであるための条件のひとつとして、次のflatMapメソッドのようなシグネチャで、値を別の値に変換してOptionalでくるんで返すメソッドが必要です。
  • Java8のOptionalがモナドになったよ! - きしだのHatena

    Java8にはOptionalクラスが導入されたのですが、5月にエントリを書いた時点ではモナドではありませんでした。 Java8でのプログラムの構造を変えるOptional、ただしモナドではない それが、5月末にどうもソースにモナドに必要なメソッドが追加されたらしいということになって、いつ使えるようになるか待っていたら、いつの間にか使えるようになっていました。 Optional (Java Platform SE 8 b101) こちらからダウンロードできます。 JDK8 Early Access Releases ― Project Kenai 他にもいくつか便利メソッドが追加されたおかげで、このようなコードが書けるようになりました。 String str = "abcd"; Optional.ofNullable(str) .map(st -> st.toUpperCase()) .f

    Java8のOptionalがモナドになったよ! - きしだのHatena
  • Java8でDuckTyping的なこと - yojikのlog

    Javaのラムダ式のついでに導入されたメソッド参照がなかなか便利な感じです。メソッド参照をつかってDuckTyping的なことができます。 HasName という関数型インタフェースを受け入れるGreeterクラスの定義*1 public class Greeter { /** 関数型インタフェースの定義 */ @FunctionalInterface interface HasName { String getName();} /** 「名前を持っているオブジェクトに挨拶をしてもらう」メソッド */ public void greet(HasName... targets) { for(HasName it : targets) { System.out.println(it.getName()); }; } } 「HasNameの関数型インタフェースと同じシグネチャを持つメソッド」を持

    Java8でDuckTyping的なこと - yojikのlog
    tarchan
    tarchan 2013/03/12
    >Greeter::greetメソッドにメソッド参照を渡す
  • Java の語彙で Maybe を説明してみる - ぐるぐる~

    java-jaで例外処理の話をしてきました - 西尾泰和のはてなダイアリー を読んで。 Maybe は値があるかないかを型で表すことができます!そう、直和型なんです!とか言われてもイミフだと思うのです(リンク先のエントリがそう説明してるわけではないですが)。 Java の語彙で Maybe の説明をできたら嬉しい人もいるんじゃないかなぁ、とかなんとか。 ただし、書いてたら結構長くなりました。時間がある人はどうぞ。 Maybe? null より安全に「値がないこと」が扱えるものだよ スタート地点としてはこれでいいでしょう。 以降で、「なんで安全なの?」という全うな疑問に答えてみたいと思います。 問題点 int で説明すると煙に巻いてしまうような気がしたので、User クラスを見てみます。 import java.util.*; class User { final String name;

    Java の語彙で Maybe を説明してみる - ぐるぐる~
  • Java 8、Java 9はどうなるのか。JavaOneの基調講演で示された方向性。JavaOne 2011

    Java 8、Java 9はどうなるのか。JavaOneの基調講演で示された方向性。JavaOne 2011 7月に登場した「Java 7」に続くバージョンとして開発中の「Java 8」「Java 9」。 オラクル Java Platformチーフアーキテクト Mark Reinhold氏は、サンフランシスコで先週、10月4日から開催された「JaveOne 2011」の基調講演で、「Java 8」の機能として予定されている、マルチコアプロセッサへの対応を目的とした「Project Lambda」、大規模プログラミングへの対応を目指す「Project Jigsaw」の紹介を行いました。 さらに「Java 9」の構想としてビッグデータ、マルチテナント対応などがあることを明らかにしました。 記事は「「Java 7」とはどんなリリースだったのか、チーフアーキテクトが解説。JavaOne 2011

    Java 8、Java 9はどうなるのか。JavaOneの基調講演で示された方向性。JavaOne 2011
  • 1