タグ

Javaとjavaに関するYaSuYuKiのブックマーク (149)

  • Java8新機能 ラムダ式とデフォルトメソッドの導入理由 - Yuji Blog

    前々回に次回予告した内容ですw ラムダ式とデフォルトメソッドがどう関係あるのかということですが、まずはラムダ式が追加された経緯から読んでみます。 なぜJavaにラムダ式が追加されたのか Why are lambda expressions being added to Java? ラムダ式(とクロージャ)は最近の様々な言語で人気が出ています。これには様々な理由がありますが、Javaにとって最も差し迫った理由は、コレクションの処理を複数のスレッドで分散処理することです。 現在、ListやSetはCollectionから取得されたIteratorを使ってその要素が一つずつ順番に処理されるのが普通です。 もしそれぞれの要素を並列に処理しようとした場合、その責任を負うのはCollectionではなく、プログラマがそういったコードを書かなくてはいけません。 Java8では、様々な方法で要素を処理する

    Java8新機能 ラムダ式とデフォルトメソッドの導入理由 - Yuji Blog
  • LINQ to Objects と Java8-Stream API の対応表

    Java8 で filter や map が使えるようになったー! というわけで .NET の LINQ to Objects との対応表を作ってみました。 2018.2.7 - Kotlin も追記しました! LINQ - Enumerable クラス (System.Linq) Java8 - Stream (Java Platform SE 8 ) Kotlin - kotlin.collections, kotlin.sequences らへん の比較です。 kotlin.collections は遅延ではないので注意です。 Java の方は Collectors (Java Platform SE 8 ) も使います。 まだ試したものは少ないので間違ってるかもしれない & カテゴライズが適当 なので、編集リクエストしてもらえるとありがたいです。 機能 LINQ Java8 Kot

    LINQ to Objects と Java8-Stream API の対応表
    YaSuYuKi
    YaSuYuKi 2014/03/27
    「最初の実装」感が強い。何らかのライブラリーでAPIを増強しないと足りないところだらけだ
  • 社内Java8勉強会 ラムダ式とストリームAPI

    先週Java8がリリースされましたが、さっそく社内での開発でも使うことになりそうです。 というわけで、Java8の目玉機能であるラムダ式とストリームAPIについて、社内勉強会を開催しました。 普段の社内勉強会よりも参加者数が多くて、みんなの関心の高さが伺えますね。

    YaSuYuKi
    YaSuYuKi 2014/03/27
    StreamAPIはまだしも、ラムダの使い方が思い浮かばないとなると、Javascriptで無名関数を書いたこともないのだろうか
  • [速報]Java 8が正式公開。ラムダ式、新しい日時API、JavaFX8など。NetBeans 8.0も登場

    [速報]Java 8が正式公開。ラムダ式、新しい日時APIJavaFX8など。NetBeans 8.0も登場 米オラクルは3月18日(日時間3月19日早朝)、Javaの最新バージョンとなるJava 8を正式に公開しました。 #Java8 Now Available http://t.co/QymKlAtp99 — Java (@java) 2014, 3月 18 Java 8は当初はラムダ式を実現するProject Lambda、JDKをモジュラー構造にするProject Jigsawなどが主要な機能となる予定でしたが、Project Jigsawの実装はJava 9へ持ち越すことになったため、Java 8ではラムダ式が最大の新機能となりました。そのほか新しい日時APIJavaFX8なども含まれています。 Java 8に対応した統合開発ツールのNetBeans 8.0も公開されていま

    [速報]Java 8が正式公開。ラムダ式、新しい日時API、JavaFX8など。NetBeans 8.0も登場
    YaSuYuKi
    YaSuYuKi 2014/03/19
    Lamdaを駆使したORマッパーを作ろうとしている。DataMapperだと大変なのでActiveRecordパターンにしようと考えている段階(ORマッパー病発病中)
  • 大刷新リリース Java 8の新機能

    2014年3月18日(米国時間)、ラムダを筆頭に数多くの新機能が含まれるJava 8がいよいよリリースされる。 ここ数年、JavaOracleのSun買収による混乱、当初Java 7で実装されるはずだった多くの機能の先送り、さらにはJava 8のリリースの遅延など様々な要因によって強い停滞感があり、それが関数型言語の機能を取り入れたScalaなどJavaの代替となるJVM言語の台頭にも繋がった。 そうしたJavaプログラマの溜まりに溜まったモヤモヤを払拭するアップデートとして期待されているのが今回のJava 8だ。前述の通りラムダの導入による新たな構文からStream APIやTime APIといったライブラリの追加まで、非常に多くの新機能を含んでいる。 稿ではそのJava 8の主要な新機能についてサンプルコードを交えて紹介していく。Java 8の新機能を押さえるための参考になれば幸い

    大刷新リリース Java 8の新機能
  • Javaプログラマが酔っ払いながらJavaの質問答えるよ : IT速報

    1: 以下、名無しにかわりましてVIPがお送りします 2010/05/23 04:53:21 ID:rFXTeBJkP 宿題とかでもいいよ。 ちなみに代表作は麻呂の人工知能。 2: 以下、名無しにかわりましてVIPがお送りします 2010/05/23 04:55:04 ID:qeIYtIya0 java言語とjavascriptの違いを教えてください 4: 以下、名無しにかわりましてVIPがお送りします 2010/05/23 04:57:31 ID:rFXTeBJkP >>2 JavaはC言語の系譜から来た、メジャーな構成を持つ言語。 JavaScriptは「すべてがハッシュ」ていうシンプルな原理から作られた言語。 意外とぜんぜん違う。 3: 以下、名無しにかわりましてVIPがお送りします 2010/05/23 04:57:25 ID:e6F7GOne0 coffeeは好きですか 5: 以

    Javaプログラマが酔っ払いながらJavaの質問答えるよ : IT速報
    YaSuYuKi
    YaSuYuKi 2014/02/28
    落ちこぼれ同然だがMavenくらいはいくらなんでも自分の公開プロジェクトで使ってるぞ…
  • Ratpack: Lean & powerful HTTP apps for the JVM

    What is Ratpack?Ratpack is a set of Java libraries for building scalable HTTP applications. It is a lean and powerful foundation, not an all-encompassing framework. Want to know more? Check out the manual. More the bookish type? Get “Learning Ratpack” from O'Reilly Media. Have a question or problem? Discuss it now via the Ratpack Community Channel (powered by Slack). One time sign up is required.

    YaSuYuKi
    YaSuYuKi 2014/02/27
    RackやWSGI、PSGIに相当するものか。Javaで書いた場合の記述が冗長すぎるのが気になる
  • そのクソコード、Intellij IDEAでチェックできるよ

    愛知県でシステムエンジニアとして働く友人のMは、プロジェクトメンバの書くJavaのクソコードに苦しめられているそうです。Mはリードプログラマとして、プロジェクトメンバがあげてくる成果物(ドキュメントとコード)のレビューをする立場にあるらしく、提出されてくる数々のクソコードをTwitterでつぶやいていました。 Mを救うことはできるのでしょうか? もし、クソコードをすばやく見つけることができたら救えるのであれば、救える見込みはあるかもしれません。 コードの問題を見つける静的解析ツール クソコードとは、おおむね次のような問題のあるコードをさすようです。 潜在的バグ バグの可能性があるコード。 重複 機能追加やバグ修正を困難にしがちなコードの重複。 設計上の問題 クラスやパッケージ間の依存関係、多すぎるメソッド引数など。 慣習違反 プログラミング言語やライブラリの慣習、コーディング規約などに違反

    YaSuYuKi
    YaSuYuKi 2014/01/14
    ずいぶん前、仕事用の巨大なプロジェクトを試しに開いてみて、目当ての重複コード検出を実行したら、メモリー不足でクラッシュした。もっとメモリーがあるマシンなら行けたんだろうけど(増やすメモリーがなかった)
  • 祝 Java8 Project Lambda リリース!につき、ラムダ式コトハジメ - 倭マン's BLOG

    まだまだ夜は寒い季節ですが、新年度とともに Java の世界にも一足早く新しい風が吹いてきました。 Java5 でジェネリクスが導入されたときも結構インパクトがありましたが、Java8 でのラムダ式はそれ以上のインパクトがあり、プログラミングのパラダイム・シフトを余儀なくされることでしょう。 そうは言ってもラムダ式、関数オブジェクトは現代的なプログラミング言語では大抵サポートされている機能でもあるので、今更感の強い人もいることでしょう。 そういう方でも、多言語で実現されてた機能が Java8 ではどのように使うのか?ってことは確認しておく価値はあると思います。 ってことでラムダ式、関数オブジェクトに関して基的な事項を Java8 のコードで見ていきまする。 内容 ラムダ式 基的な記法 型推論 クロージャとしてのラムダ式 関数オブジェクト ラムダ式を既存の型に代入する メソッドの参照 メ

    祝 Java8 Project Lambda リリース!につき、ラムダ式コトハジメ - 倭マン's BLOG
  • JUnitのカスタムアサーションを簡単に実装できるcmtest | DevelopersIO

    渡辺です。 先日、「JUnitのオブジェクト等価比較を怠けたい!」というスライドが公開されました。「オブジェクトのカスタムアサーションをどのように実現するか」という問題は、ユニットテストを実践していくとよく発生します。この問題に関して、先日のJJUG CCCでも相談されました。また、簡単に書ける仕組みは共有した方が良いのですよね。そんなわけで、cmtestというライブラリにまとめましたので紹介したいと思います。 Objectクラスのequalsメソッド Javaではオブジェクト同士の比較にはObjectクラスのequalsメソッドを利用することが定石です。これはユニットテストのアサーションでも同様です。テストした結果に作られる実測値と、テストの期待値を比較する時、通常はequalsメソッドを利用します。equalsメソッドを使った比較を行うのであれば、定番のassertThat構文を利用で

    JUnitのカスタムアサーションを簡単に実装できるcmtest | DevelopersIO
  • https://mail-archives.apache.org/mod_mbox/maven-users/200810.mbox/%3C20262610.post@talk.nabble.com%3E

  • Seasar2を新規案件に採用するのはそろそろやめたほうがいい - きしだのHatena

    Seasar2の機能追加停止が宣言されてから、すでに6年弱たっています。 Seasar2.4に対する追加要望があれば、もちろん検討します。ただし、大きな変更や追加はもうないでしょう。 Seasar2の今後のロードマップ 2008-01-29 - ひがやすを blog 後継になる予定だったSeasar3も開発が中止されて3年たちました。 Seasar3開発中止 2010-08-06 - ひがやすを blog ここでSeasar2.5を出す方向で動くということでしたが、実現しませんでした。 あのころSeasar2に関わっていた人も、ScalaがメインになったりNode.jsをさわったり、不意ながらPHPをさわったり、さわってみるとPHPもそれほど悪くなかったり、やっぱりPHP気にわなかったりと、いろいろな道を進んでいます。 DIコンテナ自体の機能も時代遅れ感がでてきており、関連プロダクトも

    Seasar2を新規案件に採用するのはそろそろやめたほうがいい - きしだのHatena
    YaSuYuKi
    YaSuYuKi 2013/11/07
    既存のシステムに後から組み込んだが、今は逆に少しずつ外し、今1つ外す作業中。来年には最後の1つが利用されなくなる予定。その後はどうしよう
  • Java8日付時刻APIの使いづらさと凄さ - きしだのHatena

    いままでのJavaでは、日付時刻を扱おうとするとめんどくさい割に非常に低機能でした。 Java8では、新たに日付時刻APIが導入され、めんどくささが増しつつ非常に高機能になりました。 (以降、Java8で導入された日付時刻APIを単に「日付時刻API」と表します) もちろん、慣れてきて、ちょっとしたサポートメソッドを用意してやれば、結構使いやすいのですが、それは「このAPIは使いやすい」という評価にはなりません。 つまり日付時刻APIは、慣れないとぜんぜんわからないし、サポートメソッドがないと面倒なコードが必要ということです。 いろいろあってよくわからない 日付時刻では、時点を扱うInstantや期間を扱うPeriod、時間量をあらわすDurationなど多くのクラス・インタフェースが導入されています。 これらは、IDEの補完でAPIを探りながら機能を推測すれば、それなりにドキュメントなし

    Java8日付時刻APIの使いづらさと凄さ - きしだのHatena
  • マルチコア時代のプログラマは関数脳になろう〜Java8のススメ〜 - Tech-Sketch

    CPUのクロックアップに限界が訪れ、マルチコア化することで処理性能向上を目指す時代になりました。これからのプログラマには、マルチコアで処理性能が向上するプログラム=マルチスレッドで並列処理が可能なプログラムを書く能力が必要になります。今回は「関数型」でプログラムを書くことによって、いとも簡単に並列化ができることを実例を元に解説します。 関数型プログラミングと並列処理 「関数型でプログラムを書くことで簡単に並列化できる」と書きましたが、そもそもここで言う「関数」とは何なのでしょうか? 関数型プログラミングの特徴 関数型プログラミングの「関数」を理解するためには、数学における「関数」を想像するとわかりやすいでしょう。 例えば三角関数を用いた y=cos(x) という式を考えてみます。この式に入力値 x=0 を与えた場合、いつでも必ず結果は y=1 になります。x= π/3 の場合は y =

    YaSuYuKi
    YaSuYuKi 2013/08/13
    Webアプリケーションだと、並列化のために総計算量が増加することが受け入れられない場合もある。並列化しなければいいだけだが/確かにこれはSQLのSELECTっぽい
  • Java 9が1.5以前のソースコードのコンパイルを非サポートに

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Java 9が1.5以前のソースコードのコンパイルを非サポートに
    YaSuYuKi
    YaSuYuKi 2013/07/09
    翻訳がひどすぎて意味がよくわからないが、明示的に、古いバージョン向けのバイナリ生成をサポート外にする、ということに見える。原文を読んでもよくわからないので一概に訳が悪いとも言えないな
  • from old Java to modern Java

    16. from old Java to modern Java ∼ 職業プログラマに聞いて欲しいJava再入門 Acroquest Technology株式会社 JJUG / 関西Javaエンジニアの会 谷 心 ( @cero_t ) 19. private List m_list = null; private int process_file(String str_file_name) { String str_line; List list_lines = new ArrayList(); int i_result = read_file(str_file_name, list_lines); if (i_result == 0) { List list_record = new ArrayList(); for (int i = 0; i < list_lines.size(); i+

    from old Java to modern Java
    YaSuYuKi
    YaSuYuKi 2013/06/26
    Lesson3はしょりすぎ。Interfaceのメソッド実装に@overrideアノテーションを使えるようになったので、Interface実装するつもりが対応するメソッドが定義されてなかったという問題をコンパイル時にチェックできるとか
  • Struts1職人の朝は早い - きしだのHatena

    Struts1職人の朝は早い。 「毎日毎日DBとアプリサーバーが違う。機械ではできない」 「このstruts-config.xmlはダメだ。ほら、すぐ裂けてしまう」 ここ数年はLLとScalaに押されているという。 下町Struts1の灯火は弱い。だが、まだ輝いている。 「やっぱりアレですね、たいていの若い人はすぐやめちゃうんですよ」 「それを乗り越える奴もたまにいますよ。そういう奴が、これからのStruts1界を引っ張っていくと思うんですね」 今日も彼は、日が昇るよりも早くstruts-config.xmlの整形を始めた。明日も、明後日もその姿は変わらないだろう。 そう、Struts1職人の朝は早い。 夜も遅い。

    Struts1職人の朝は早い - きしだのHatena
    YaSuYuKi
    YaSuYuKi 2013/06/25
    上級職人になると、自力でセキュリティホールを塞いだりするのだろうか
  • http://www.jitu.org/~tko/cgi-bin/bakagaiku.rb?bakaid=20130604

    YaSuYuKi
    YaSuYuKi 2013/06/06
    しかし、Javaには正規表現リテラルがないので、正規表現はとても書きづらい
  • Java8のlambda構文がどのようにクロージャーではないか - きしだのHatena

    Java8にlambda構文が入りましたが、これはクロージャーではない、とされています。 では、どのように「クロージャーではない」のか、ちょっと見てみます。 まず、lambdaを返すメソッドを定義します。 public static Supplier<String> createMessenger(String name, String address){ return () -> { return String.format("私は%s、%sに住んでる", name, address); }; } 呼び出すと、こんな感じでSupplierを受け取ります。 Supplier<String> messenger = createMessenger("きしだ", "ふくおか"); このSupplierを実行すると、次のようになります。 System.out.println(messenger.

    Java8のlambda構文がどのようにクロージャーではないか - きしだのHatena
  • Javaのパフォーマンスについての9つの誤信

    JVMはプロファイリングを利用してコードの最適化を行います。対象は頻繁に利用されるコードパスのみですが,徹底的に行うことで大きな効果を上げています。JITコンパイルされたコードに関しては,現在では多くの場面において (その割合も増えつつあります) C++の実行速度を凌駕しています。 このような事実にも関わらずJavaが今でも低速なプラットフォームとして認識されているのは,おそらくは初期バージョンのJavaプラットフォームでの経験が,歴史的な負のバイアスとして働いているためでしょう。 早まった結論を出す前に,客観的な見地に立って,最新のパフォーマンス結果を評価するようにお勧めします。 2. Java コードの1行にはそれ自体で意味がある 次の短いコード行を考えてみてください: MyObject obj = new MyObject(); Java開発者ならば誰でも分かるように,このコードはオ

    Javaのパフォーマンスについての9つの誤信
    YaSuYuKi
    YaSuYuKi 2013/05/11
    結論は一つしかない。Javaにも限らない。「測れ」