タグ

javaに関するNagiseのブックマーク (463)

  • Eclipseデバッガを活用する31のTips - Fly me to the Luna

    Eclipseデバッガを活用するための31のtips from Hiroki Kondo speakerdeckに貼ろうかどうか迷ったけれども、どこかで話したわけではないのでslideshareに。 Eclipseのデバッガを活用すると開発が捗ります。自宅ではIntelliJを使い始めてみて、さくさくコードが書ける事を体感しているのですが、デバッグはEclipseの方がやりやすいです。で、自分の知っているノウハウをチームで共有するために作りはじめたんですが、広くみんなに公開したほうがいいと思っておすそ分け。調べてみると、結構知らなかったネタがゴロゴロでてきました。Run to Lineとかお手軽で強力な機能だと思う。 「こんなネタ知りたい」とか、フィードバックを是非お寄せください。調査して追記していきますので、コメントとかよろしくお願いします。

    Eclipseデバッガを活用する31のTips - Fly me to the Luna
  • JavaのGenericメソッドで、匿名クラスを引数にする場合の型解決講座

    Ktz @ktz_alias えーJavaって、List<Hoge> list = Arrays.asList(new Hoge {{ ... }})できないのー? 2013-09-03 14:00:37

    JavaのGenericメソッドで、匿名クラスを引数にする場合の型解決講座
  • Java8におけるindyとLambdaの絶妙な関係、もしくはSAMタイプを継承する内部クラスの.classファイルはどこへ行ったの? - uehaj's blog

    JJUG CCC 2013 Springのさくらばさんのセッションで「Java 8の怖い話」として、Lambda式をJVM上で実行するにあたり、 invokedynamicを使っている Lambda式の仕様は、意味的にはSamタイプを継承する内部クラスのインスタンスのはずだが、lambda式を使っているJavaソースをコンパイルしても、内部クラスに対応する.classファイルが生成されない という話を聞きました。Lambdaの実行に、内部的にバイトコードを生成して使っている、という話だったのですが、indy使ってるってのは、良く考えると解せないです。Lambdaになんらかの動的な側面があるんでしょうかね??? ということで、調べてみました。 [:contents] 結論 結論から書くと、OracleJava8のJDKのJavacは、Lambda式の体を、SAMタイプを継承する内部クラス

    Java8におけるindyとLambdaの絶妙な関係、もしくはSAMタイプを継承する内部クラスの.classファイルはどこへ行ったの? - uehaj's blog
    Nagise
    Nagise 2013/08/18
  • Java 8は関数型なのか

    ITproの読者には既にご存じの方も多いと思うが、2014年3月に「Java SE」の次期版「Java SE 8」(以下、Java 8)がリリース予定である。国内のエンタープライズ分野では「レガシーJava」が多いとされ、現行版の「Java SE 7」に移行しているユーザーすら少数派と聞く。Java 8といっても遠い話のように感じる方も多いかもしれない。 しかし、Java 8はJavaにとって一つの大きなマイルストーンとなる。関数型プログラミングに由来する「ラムダ(lambda)式」なる構文が導入されるのだ。 Javaをよく知る技術者の方の中には、「いや、Java 8のラムダ式は関数型プログラミングのために導入されたのではない」と主張される方がいるだろう。この点については後ほど触れたいと思うが、「ラムダ式が何のために導入されたか」はさておき、ラムダ式という記法そのものが「関数型に由来する」

    Java 8は関数型なのか
    Nagise
    Nagise 2013/07/17
    煽り記事かと思って読み始めたが、裏話が面白かった
  • from old Java to modern Java

    Let's reconsider about collecting logs. Plus, visiting elastic@Moutain View!心 谷

    from old Java to modern Java
    Nagise
    Nagise 2013/06/26
  • 「日本のJavaコミュニティと世界をつなぐ架け橋に」~寺田佳央氏・日本オラクルシニアJavaエバンジェリスト

    「なんでエバンジェリストをやっているのですか」とインタビューの際に素朴な疑問をぶつけてみた。 寺田佳央氏は笑いながら「よくその質問をされます。Javaがオープンで心底好きな技術だからです」と答えてくれた。 寺田氏は開発言語Javaのエバンジェリストである。日Javaコミュニティといえば日Javaユーザーグループ(JJUG)が有名。その参加者で寺田氏を知らない人はいない。 2013年5月に開催された開発者向けのイベント「Java Day」や、小規模なセミナー「JJUGナイト・セミナー」などを寺田氏は企画し、運営している。 もっとも寺田氏ほどの技術力を持っていれば、コミュニティの運営よりも、最前線のエンジニアとして活躍することもできるだろう。これが冒頭の質問をした理由であった。 寺田氏は、Javaのオープンなところに惹かれているという。Javaのコミュニティには、興味があればだれでも入る

    「日本のJavaコミュニティと世界をつなぐ架け橋に」~寺田佳央氏・日本オラクルシニアJavaエバンジェリスト
    Nagise
    Nagise 2013/06/17
  • JavaEE 7 登場 - しんさんの出張所 はてなブログ編

    次の数年を支える技術の登場です。 RI(参照実装)であるGlassfish 4がでています。 また、Glassfish4を同梱したNetBeans7.3.1も出ていますので、試す場合はJavaEE版のNetBeansをDLするのが一番手軽でよいでしょう。 注目する技術はやはりJAX-RS 2です。フィルターやクライアントなど今までは実装依存の技術が必要でしたがこれが標準化されました。これにより、サーバーのみならずHTTPクライアントもApacheHttpなどではなくJAX-RSを使うのが普通になるでしょう。フィルター等もはいったことによってサーブレットAPIを扱わないでほぼすべてのことが可能になります。 JAX-RSというとすぐRESTがどうだとか説明が出てくると思いますが、無視して結構です。こいつはアクションベースの処理>Viewレンダリングをするためのものなので、つまりWeb用フレーム

    JavaEE 7 登場 - しんさんの出張所 はてなブログ編
    Nagise
    Nagise 2013/06/13
  • JavaSE 7でメソッド名に使えなくなった文字 | 株式会社エイチ・オー・エス

    パッケージJava製品開発担当の大です。こんにちは。 朝晩はだいぶ肌寒くなって、秋らしい空気になってきましたね。 前回も書いたとおり、現在HOSでは製品のJavaSE 7での動作検証を進めています。JavaSE 7で早く使いたい方、申し訳ありませんがいましばらくお待ちください。 さて、検証している上でちょっと困ったことが出てきました。従来動いていたテストコードの一部が、JavaSE 7ではコンパイルもできなくなってしまったのです。これはJavaSE 7の不具合か?と思い、調査してみました。 日語のテストメソッド名 製品のクラス名やメソッド名では使いませんが、開発時のユニットテストのメソッド名やクラス名は、最近は、基的に日語で書くようになりました。これまで日語メソッド名で特に問題が起こっていなかったことと、テストのレポートの出力がアルファベットのキャメルケースに比べ圧倒的に見やすいか

    JavaSE 7でメソッド名に使えなくなった文字 | 株式会社エイチ・オー・エス
    Nagise
    Nagise 2013/06/11
    関係ないけど1.1とか1.2ぐらいの時代にはベンダによって使える文字が違った気がする
  • Java8で最もインパクトのある構文拡張、デフォルトメソッド - きしだのHatena

    Java8でのラムダの使い方などを説明してきたのですが、構文拡張自体には触れていなかったので、改めてここで簡単に説明しておこうと思います。 まずは、Java8で実際に最もインパクトがある言語拡張、インタフェースのデフォルトメソッドです。 デフォルトメソッドとデフォルト実装 いままでインタフェースには実装をもつことができませんでしたが、Java 8からはインタフェースが実装をもてるようになります。 実装をもつメソッドを定義するときには、キーワードdefaultをメソッドの前につけます。 interface Foo{ void print(String s); default void twice(String s){ print(s); print(s); } } twiceメソッドが実装をもっています。この実装をデフォルト実装といいます。 デフォルトメソッドを実装するクラスで、デフォルトメ

    Java8で最もインパクトのある構文拡張、デフォルトメソッド - きしだのHatena
    Nagise
    Nagise 2013/06/11
  • マルチコア時代のCPUリソースを有効活用--Java EE 7で進化した並列処理を理解する - builder by ZDNet Japan

    Javaはバージョン1からマルチスレッドに対応しているが、最初から用意されていた並列処理機能は、今となっては時代遅れの感は否めない。そうした状況の中、この6月にリリースされるJava EE 7では、新たな並列処理機能として「Concurrency Utilities for Java EE」が搭載された。 ここでは、5月の「Java Day Tokyo 2013」で行われたセッション「エンタープライズ環境における並列処理の実装方法について」で語られた、この新しい並列処理機能について紹介する。 Java EEの並列処理を刷新するJSR-236 Javaにおける新機能、特に言語仕様的な拡張は、まずJava SEに投入された後、エンタープライズ向けの改良を施してからJava EEに導入されるというのが典型的な流れになっている。 Javaの並列処理機能も、この流れに沿っていて、Java SE 5で

    Nagise
    Nagise 2013/06/10
  • compile java online

    //Title of this code //'main' method must be in a class 'Rextester'. import java.util.*; import java.lang.*; class Rextester { public static void main(String args[]) { for( int i‮ = 0; i‮++ < 100; ) System.out.println( ( i‮ % 3 < 1 ? "Fizz" : "" ) + ( i‮ % 5 < 1 ? "Buzz" : i‮ % 3 < 1 ? "" : i‮ ) ); } } Compilation time: 0.84 sec, absolute running time: 0.26 sec, cpu time: 0.12 sec, memory peak: 11

    Nagise
    Nagise 2013/06/07
    読めないFizzBuzzのJava版。RTLでググろう
  • OTN Japan マニュアル

    お探しのものを見つけるために、以下の項目を試してみてください。 キーワード検索のスペルを確認してください。 入力したキーワードの同義語を使用してください。たとえば、「ソフトウェア」の代わりに「アプリケーション」を試してみてください。 新しい検索を開始してください。

    OTN Japan マニュアル
  • 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
    Nagise
    Nagise 2013/05/24
  • 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
    Nagise
    Nagise 2013/05/22
    クロージャの定義の議論はだいたいいつも紛糾してる気がする
  • Java SE7API日本語版提供開始

    2013年5月14日 at 7:47 午後 6件のコメント 2013 年 5 月 14 日、日オラクルより新しい発表を行います。日 5 月 14 日に日語版 Java SE API ドキュメントを正式公開しました。 「Java Platform, Standard Edition 7」の最新情報を記載したドキュメント類の日語版を日公開しました。 公開先URL:http://www.oracle.com/technetwork/jp/java/javase/documentation/ ・日公開した「Java Platform, Standard Edition 7」の最新ドキュメントは、2011年7月に提供開始した「Java Platform, Standard Edition 7 (Java SE 7)」が提供する機能紹介、コンポーネント一覧を記載した参照資料です。Java

    Java SE7API日本語版提供開始
    Nagise
    Nagise 2013/05/15
  • JSON用標準JavaAPI

    原文(投稿日:2013/04/26)へのリンク JSR-353、JSON処理(JSON-P)用のJava APIは、今月の最終承認投票にいたった。JSON-Pは(JAXPに似た)ストリーミングAPI(StAXのに似た)とオブジェクトモデルのAPI(DOMに似ている)で構成されている。リファレンス実装であるjsonpは、現在ベータでCDDL v1.1 と GPL v2の下でオープンソースした。JSON-Pは、今後のJava EE 7の一部となり、そのデフォルトのJSON実装のためにJAX-RSによって使用される。このAPIは、JSONデータバインディング(JAXBに似た)含んでおらず、より人気のあるJSONPすなわと"パディングのあるJSON"とは無関係ではあることに注意して欲しい。 JSON (JavaScript Object Notation) は軽量のデータ交換フォーマットで、Web

    JSON用標準JavaAPI
    Nagise
    Nagise 2013/05/10
  • 文字列でswitchするときはif-else switchイデオムを使うほうが安全 - きしだのHatena

    Java SE 7から、switch構文で文字列が使えるようになりました。 public void hoge(String s){ switch(s){ case "a": System.out.println("AA"); break; case "b": System.out.println("BB"); break; default: System.out.println("Other"); } } ところが、残念なことに、sがnullの場合はdefaultには飛ばず、ぬるぽが発生します。 そこで、null判定は事前にif文で行うことになるので、次のようなif-else switchイデオムを使うと便利です。 if(s == null){ System.out.println("Null!"); }else switch(s){ case "a": System.out.printl

    文字列でswitchするときはif-else switchイデオムを使うほうが安全 - きしだのHatena
    Nagise
    Nagise 2013/04/26
    Enumをswitchするときもですねー。if-else-switch 大流行の予感 :-P
  • リフレクションで、ジェネリクスの情報にアクセスする - CLOVER🍀

    Infinispanでもうちょっと遊ぶ予定だったのですが、オフィシャルサイトのWikiがなんか途中で落ちてしまったので、別のネタで遊ぶことにしました。 *このネタがだいたい終わった頃には、復旧していましたが… 今回は、パラメータ化された型に関する情報をリフレクションを使ってアクセスしてみようと思います。ちょっと前からやってみたかったのです。 ジェネリクスの情報は、ClassクラスやField、Methodなどからアクセスできるのですが、それぞれ以下のような方法で取得できます。 クラス メソッド 取得できる情報 Class getTypeParameters クラス定義において宣言された型変数の情報 Field getGenericType フィールドに適用された型変数の情報 Constructor getGenericParameterTypes コンストラクタのパラメータに関する型変数の

    リフレクションで、ジェネリクスの情報にアクセスする - CLOVER🍀
    Nagise
    Nagise 2013/04/04
    書こう書こうとしている間に良エントリが書かれてた
  • Java に対するさまざまな貢献について

    2013年3月21日 at 1:50 午後 1件のコメント Java に対して貢献したいのですが、どういった貢献が必要とされているのか、どのような貢献ができるのか、貢献をするためには何処から、何を始めたらいいのか?とご質問を頂きました。そこでエントリでは Java における貢献の種類や方法についてまとめて紹介したいと思います。まず、始めにお伝えしたい事は、貢献は様々な種類がありますが、全てにおいて気構える事なく、自分で可能な範囲とお時間で貢献をして頂ければ幸いです。 それでは、Java における貢献とはどのような種類があるのでしょうか。数多く有りすぎて全てを列挙できないかもしれませんが、今思いつく所だけでも下記のような内容があります。上から下に向けて難易度は難しくなるかと思います。 ご自身のブログ、もしくは記事の執筆、書籍の出版、各種技術セミナーでご登壇 (ご自身でできる事) 日全国、

    Java に対するさまざまな貢献について
    Nagise
    Nagise 2013/03/21
    少しでもやれることをやろう
  • 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
    Nagise
    Nagise 2013/03/12