タグ

ブックマーク / bitter-fox.hatenadiary.org (12)

  • JavaFXを直接実行できるjshellを作った - きつねとJava!

    この記事はJavaFX Advent Calendar 2015の6日目の記事です. 昨日はy_q1mさんの「JavaFX と ScriptEngine を組み合わせた学習用アプリケーションを作る - Qiita」でした. 明日はaoetkさんです. まえがき 現在JDK9に向けてOpenJDKではREPLツールであるjshellが作られています. jshellでは簡単にJavaのプログラム要素を実行させることが出来ます. そこで・・・ まぁ,そうなりますよね. JavaFXをjshellから叩きたくなる. ただ,残念ながら今のjshellからJavaFXのウィンドウを出そうとすると・・・ JavaFXが初期化,スタートアップされていない旨の例外が出てしまいます. JavaFXの初期化,スタートアップにはいくつかの方法があります. そのうちの一つに,com.sun.javafx.appli

    JavaFXを直接実行できるjshellを作った - きつねとJava!
  • 最年少(?)OpenJDKコミッタになりました! - きつねとJava!

    日付(米時間では5/7)でOpenJDK(Project Kulla)のコミッタになりました.*1 Project KullaはJavaのREPLツールを作るプロジェクトなのですが,主に補完回りの実装をお手伝いしています. 今後もJDK 9への導入に向けてお手伝いをしていきます.*2 ちなみにですが,OpenJDKでは詳しい統計は取っていないので確実ではないですが,恐らく最年少だと思います.*3 MLとかでも大学生らしい人は見かけないですし*4 これも偏に色んな人の手助けがあったからです,これまでありがとうございました. 特に非常に大きな助言と後押しをしてくださった,@yasuenagさんには感謝しきれないです. あくまで通過点であり,これからもMAKE THE FUTURE JAVA(古い?)していきますので,引き続きよろしくお願いします. 最後に,祝ってやろうという方は例のあれを置い

    最年少(?)OpenJDKコミッタになりました! - きつねとJava!
    waman
    waman 2015/05/08
  • Streamの平均を求める処理が精度が高かった件(総和も) - きつねとJava!

    昨日,JavaDayTokyo2015でProject Lambdaのハンズオンのお手伝いをしてきました. その中で,Collectors#averagingDoubleやDoubleStream#averageの実装が優秀だということが分かったので,まとめておきます. 結論を先に言うとStreamAPI*1が優秀なので,それを使おうという話です. *2 普通の実装の話 よくサンプルで出てくる,ある数列から平均値を求める処理は以下のようになっていると思います. また,おそらく普通のプログラマに平均値を求める処理を書かせても同様なコードを書くと思います.*3 double[] array = {...}; double sum = 0; for (int v : array) { sum += v; } double ave = sum / array.length;実はこれは精度が低く,実

    Streamの平均を求める処理が精度が高かった件(総和も) - きつねとJava!
  • とっても簡単なJava REPLの始め方 - きつねとJava!

    以前,JavaのREPLを試してみる記事を書きました. 以前の記事ではJDKをビルドしたり,jline2をビルドしたりしていて大変でしたが,今回はより一層簡単なREPLの始め方を紹介します. JDK9-eaをダウンロードして展開する JDK 9 Releases 上記サイトより,環境にあったJDK9-eaをダウンロードして展開してください. 展開したディレクトリを/JDK9/とします. この場合,javaコマンドは/JDK9/bin/javaにあるものとします. Kullaのナイトリービルドをダウンロードする https://adopt-openjdk.ci.cloudbees.com/view/OpenJDK/job/langtools-1.9-linux-x86_64-kulla-dev/ 上記サイトより,最新のビルドをダウンロードしてください. この例では,/Downloads/ku

    とっても簡単なJava REPLの始め方 - きつねとJava!
    waman
    waman 2015/04/22
  • REPLで遊ぼう - きつねとJava!

    こちらもご覧ください -> とっても簡単なJava REPLの始め方 - きつねとJava! 現在OpenJDKではJavaのREPL(Read-Eval-Print Loop)の実装を進めています. そこで,REPLをビルドして,実行して,いくつかのプログラムを実行するところまで紹介します. ビルド 環境としてLinux系列を想定します.Macも似た感じでビルドできます. Windows環境では仮想環境でLinuxを使うかWindowsを手放してLinuxをインストールするのが良いと思います. まず,リポジトリを取ってきます. $ hg clone http://hg.openjdk.java.net/kulla/dev ~/kulla $ cd ~/kulla $ sh ./get_source.shその後,JDK全体をビルドします. $ sh ./configure $ make i

    REPLで遊ぼう - きつねとJava!
    waman
    waman 2015/04/07
    『タブ補完とドキュメント表示も現在鋭意実装中です』
  • Valhallaの話 - きつねとJava!

    この記事はJVM Advent Calendar 2014 - Qiitaの22日目(?)の記事です. 9日目の記事かもしれません. さて,今日はProject Valhalla上の特殊化のバイトコードレベルでの実装とかの話を書こうかと思っていました. こうしたプロジェクトの概略はState of the XXXといったドキュメントでまとめられています. 特殊化(Specialization)も同様に「State of the Specialization」というドキュメントでプロジェクトリードのBrian Goetz氏がまとめています. これに基づいて書いていく予定だったのですが,なんとつい先日*1にドキュメントがアップデートされてしまいました. まだ深く読み込めていないので,ここではガッツリ紹介するというよりも,いくつか参考になるドキュメントと,実装がどうなりそうなのかを軽く紹介しよう

    Valhallaの話 - きつねとJava!
  • New Version-String Scheme(新しいJavaのバージョン表記体系) - きつねとJava!

    新しいJavaのバージョン表記体系がJEP 223で提案されています. 概要 Javaのバージョン表記をメジャー,マイナーバージョンに加えてセキュリティアップデートにも対応できるような体系を作るJEPです. また,今まで混在していたバージョン表記を統一して一つの体系として再構築していきます. 今後使われるバージョン表記は新しいバージョン表記体系で記述されます. すでに使用されている過去のバージョン表記については変更しないようです. バージョン表記のセキュリティアップデート対応 今までのJavaのバージョン表記はマイナーアップデートしてuXXやUpdate XXという風に記述していました. ここではJDK7のXXというupdateには「JDK 7 Update XX」と表記していきます. さて,JDK 7 Update 60とJDK 7 Update 55とを比較してみましょう. この時に一

    New Version-String Scheme(新しいJavaのバージョン表記体系) - きつねとJava!
  • OpenJDKのAuthorになりました! - きつねとJava!

    こんにちは. ここ数ヶ月で色々ありました.JavaOneに行ったり,共著で書籍を書いたり.徐々にそれらをまとめていきたいと思います. さて,先日付でOpenJDKのAuthorのリクエストが承認され,Authorになれました. http://openjdk.java.net/census#shinyafox 日では@YaSuenagさんだけ(?)だったようで, もしそうだったら二人目ということになりますね.光栄です! 日の大学生としては初ということですかね. そもそもOpenJDK Authorって? ところで,OpenJDK Authorとはどういった立場の人なのでしょう. OpenJDK AuthorはOpenJDKの開発者としての最低限の権限を持っている人のことです. ちなみにその上にはCommiter,Reviewerという人がいます. OpenJDK Authorの持つ権限と

    OpenJDKのAuthorになりました! - きつねとJava!
    waman
    waman 2014/11/08
  • JavaSE8リリース記念!CGに載っていないマイナーなIncompatibilityを紹介してみる - きつねとJava!

    さてさて,JavaSE8がリリースされてから1週間以上経ちましたね. 多くの企業がJavaSE8への移行を検討しているかと思います. そういう企業が移行の際に気に掛けるものが非互換性(Incompatibilities)ではないでしょうか. Javaは互換性を第一に考えているものの少なからず非互換性があります. そして,それらはCompatibility Guide for JDK 8(以下,CG)としてまとめられています. 今回はそのCGに載っていないマイナーな非互換性を一つ紹介したいと思います.*1 ちなみに,この非互換性はjavacのコードベース自身にも影響があったという少し面白い逸話があります^^; フォーマットはCGのパロディです. JDK8とJDK7との非互換性 このセクションではjavacやHotSpot,Java SE APIのJDK8の非互換性について述べます. いくつか

    JavaSE8リリース記念!CGに載っていないマイナーなIncompatibilityを紹介してみる - きつねとJava!
    waman
    waman 2014/03/28
    まぁ、もともと this 付けるようにしてたが。
  • JavaSE8リリース記念!マイナーな言語仕様を紹介してみる(交差型キャスト,レシーバパラメータ(仮引数にthis)) - きつねとJava!

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

    JavaSE8リリース記念!マイナーな言語仕様を紹介してみる(交差型キャスト,レシーバパラメータ(仮引数にthis)) - きつねとJava!
    waman
    waman 2014/03/19
    おぉ!
  • ProjectLambda・第2版・2部(ラムダ式(実質的にfinal・スコープなど)〜メソッド・コンストラクタ参照) - きつねとJava!

    ←1部(関数型インターフェース〜ラムダ式) ここで使用されているサンプルは、lambda-8-b84-03_apr_2013に基づいて作成されています。現在の仕様とは違っている点があるかもしれませんので注意してください。 キーワードとしての"_"(アンダーバー) 交差型キャスト ラムダ式と実質的にfinal ラムダ式のスコープ メソッド・コンストラクタ参照 メソッド・コンストラクタ参照の書き方 staticメソッド参照 インスタンスメソッド参照 コンストラクタ参照 静的ネストクラスコンストラクタ参照 インナークラスコンストラクタ参照 配列コンストラクタ参照 メソッド・コンストラクタ参照と型引数 メソッド・コンストラクタ参照とオーバーロード 前回はJavaのラムダ式がどういう物か、またその表記法を理解し、実際に使ってみました。 今回はラムダ式の導入に伴って変更される言語仕様やラムダ式と匿名ク

    ProjectLambda・第2版・2部(ラムダ式(実質的にfinal・スコープなど)〜メソッド・コンストラクタ参照) - きつねとJava!
    waman
    waman 2013/06/09
  • ProjectLambda・3部(デフォルト実装) - きつねとJava!

    ←2部(ラムダ式(実質的にfinal・スコープ)〜メソッド・コンストラクタ参照) →4部(例外ジェネリクス)→5部(Tips)ここで使用されているサンプルは、lambda-8-b25-05_feb_2012に基づいて作成されています。現在の仕様とは違っている点があるかもしれませんので注意してください。 デフォルト実装 デフォルト実装とabstract デフォルト実装とインターフェースの継承 デフォルト実装と多重継承 デフォルト実装とダイアモンド継承 デフォルト実装の使いどころ 1.誰が実装しても同じような実装になるとき 2.任意のオペレーションのメソッドを定義する時 3.既存のインターフェースに新しいメソッドを追加する時 ここまでラムダ式とメソッド参照・コンストラクタ参照について見てきましたが、今回はインターフェースのデフォルト実装についてです。 デフォルト実装(別名:拡張メソッド/デフォ

    ProjectLambda・3部(デフォルト実装) - きつねとJava!
    waman
    waman 2013/05/09
  • 1