タグ

関連タグで絞り込む (167)

タグの絞り込みを解除

javaに関するtyruのブックマーク (325)

  • Project LoomでJavaでの継続(Continuation)を試す - きしだのHatena

    Project Loomは、Javaで継続(Continuation)やFiber(軽量スレッド)、末尾呼び出し最適化なんかを実現するプロジェクトです。 OpenJDK: Loom そのLoom、ながいことどうやって動かすかもよくわからない感じだったのが、先日のJVMLSにあわせてプロトタイプが公開されてました。 http://mail.openjdk.java.net/pipermail/loom-dev/2018-July/000061.html ビルド方法はこんな感じです。 $ hg clone http://hg.openjdk.java.net/loom/loom $ cd loom $ hg update -r fibers $ sh configure $ make imagesたりないパッケージはconfigureのときに教えてくれるので、それに従って入れていけばいいです。

    Project LoomでJavaでの継続(Continuation)を試す - きしだのHatena
    tyru
    tyru 2018/08/10
  • JEP 330: Launch Single-File Source-Code Programs

    Summary Enhance the java launcher to run a program supplied as a single file of Java source code, including usage from within a script by means of "shebang" files and related techniques. Non-Goals It is not a goal to change either the Java Language Specification (JLS) or javac to accommodate shebang files. Likewise, it is not a goal to evolve the Java language into a general purpose scripting lang

    tyru
    tyru 2018/05/02
    .java 付きで (ファイル名で) 指定したらコンパイルから実行までやってくれるやつかな
  • Java10のDocker対応について - Qiita

    数字的には節目となるJava10が公開され、Java界隈は久々の春を満喫しつつ、これから始まるアップデートレースに戦々恐々としていると思います。 Java10の新規フィーチャーはいろいろなブログで紹介されていますが、個人的に気になっていたDocker対応について、少し調べてみました。 Java10のリリースノート :  http://www.oracle.com/technetwork/java/javase/10-relnote-issues-4108729.html Dockerについては3つほど対応が書いてありますが、気になるのがこちらです。 Improve docker container detection and resource configuration usage The following changes have been introduced in JDK 10 t

    Java10のDocker対応について - Qiita
    tyru
    tyru 2018/03/31
    へー
  • JEP では語れない Java SE 10

    今日リリースされる Java SE 10 の注目機能といえば var の導入ですね。 var の導入などの機能は、OpenJDK の JEP (JDK Enhancement Proposals) で管理されています。たとえば、var の導入は JEP 286 です。 Java SE 10 では 12 の JEP が機能として導入されます。 ところが、JEP になっていない変更といのが、けっこうあるのです。そこで、このエントリーでは、JEP になっていない機能をまとめてみました。 JEP になっていないぐらいなので、かなり細かいです。 廃止になった API Java SE 9 で、@Deprecated アノテーションに forRemoval が追加されました。この値が true なものは、ほんとに削除されることになっています。 Java SE 10 では Java SE 9 で forR

    tyru
    tyru 2018/03/31
  • Java 10 で変わる Java のバージョン表記 - 地平線に行く

    Java は、バージョン 10 以降タイムベースリリースに変わりました。 それに合わせて、バージョン表記がまた変わったので概要をまとめました。*1 詳細は JEP 322: Time-Based Release Versioning を参照。 バージョン番号 $FEATURE.$INTERIM.$UPDATE.$PATCH という4つの表記になります。 具体的には、 10.0.1.2 のような表記です。 (Java 8 までの Update 〜 という表記はなくなりました) 意味 タイミング 次回予定 内容 $FEATURE 機能リリース 半年ごと 2018年3月 内容にかかわらず半年ごとにリリース 機能追加や互換性のない変更、機能の削除*2を含む $INTERIM 中間リリース 予定なし - 互換性のあるバグ修正と機能強化*3 (標準APIの変更を含まない) $UPDATE アップデート

    Java 10 で変わる Java のバージョン表記 - 地平線に行く
    tyru
    tyru 2018/03/31
  • Java 10新機能まとめ - Qiita

    Java 10が出ますね。Java 9なんてなかった! しかしながら、どんな機能があるかよくわからないので、まとめてみます。 ここに並んでいるJEPを簡単に紹介する感じで。 http://openjdk.java.net/projects/jdk/10/ APIの追加など、JEP以外の変更はこちらにまとめました。 Java10のJEP以外の変更まとめ - Qiita すべての変更点はこちらにまとまってます。 109 New Features In JDK 10 - Azul Systems, Inc. OpenJDKのダウンロードはこちら JDK 10 GA Release Oracle JDKのダウンロードはこちら Java SE Development Kit 10- - Downloads 286: Local-Variable Type Inference おそらく、コードを書く上

    Java 10新機能まとめ - Qiita
    tyru
    tyru 2018/03/30
  • Java10のvarをどう使うか - きしだのHatena

    Java 10でvarが追加されました。が、いろいろ使い方は悩ましい気がします。 いろいろ議論をしたので、そこで考えたことをまとめておきます。 JShellでは読むことを考えなくていいのでガンガン使いましょう。 あと、OpenJDKのStyle Guidelinesも見ておくとよさげ。 Style Guidelines for Local Variable Type Inference in Java ローカルメソッドの定義にvarを使う 通常の変数定義でのvarの使い分けは長くなりそうなので、最初にこれだけ書いておきます。 いままで、メソッド内で使えるローカルメソッドを使おうと思うと、Functional Interfaceを使うくらいしかありませんでした。 Function<Integer, Integer> twice = x -> x * 2; println(twice.appl

    Java10のvarをどう使うか - きしだのHatena
    tyru
    tyru 2018/03/27
  • arnoldというJavaのbuilderライブラリを書いた - その手の平は尻もつかめるさ

    今時builderライブラリも無いだろという感じですが,書いたのです. github.com Motivationにも書いているのですが,普通に作ったJavabuilderは不完全なインスタンスを作成できる可能性を孕んでいます.注意深くコードを書けば問題ないかもしれませんが,えてして我々 (主語が大きい) はミスを犯しがちです.そしてNPEがやってきて……我々はしぬ. というわけで今回作ったのがarnoldです. 端的にいうと「必要なすべての要素を取りこぼさないbuilder」であり,「そのジェネレータ (annotation processor)」でもあります.Basic usageにあるように, import net.moznion.arnold.annotation.ArnoldBuilder; import net.moznion.arnold.annotation.Requir

    arnoldというJavaのbuilderライブラリを書いた - その手の平は尻もつかめるさ
    tyru
    tyru 2018/03/26
    なるほど
  • Java 10が本日付で正式リリース。ローカル変数の型推論、ガベージコレクタが入れ替え可能、不揮発性メモリ対応など。Java 9は早くもサポート期間終了

    Java 10が日付で正式リリース。ローカル変数の型推論、ガベージコレクタが入れ替え可能、不揮発性メモリ対応など。Java 9は早くもサポート期間終了 昨年9月に登場したJava 9から、Javaは6カ月ごとのタイムベースによるアップデートサイクルが採用されました。そしてその最初のワンサイクルが経過し、今日3月20日付けでJava 9の次のメジャーバージョンアップとなるJava 10が登場する予定です。 おそらくJava 10の正式な発表は米国時間の3月20日、日時間では休日となる明日の午前中あたりになると思われます。 Java 10の新機能:ローカル変数の型推論、ガベージコレクタが入れ替え可能など Java 9では、通称「Project Jigsaw」と呼ばれるJavaのモジュール化機能が入り、Javaに対する大きな変更が行われました。しかし今回のJava 10では、それほど大きな機

    Java 10が本日付で正式リリース。ローカル変数の型推論、ガベージコレクタが入れ替え可能、不揮発性メモリ対応など。Java 9は早くもサポート期間終了
    tyru
    tyru 2018/03/20
  • NetBeansのJDK10対応がマージされた - きしだのHatena

    リリースは まだですが、NetBeansのmasterブランチにJDK10対応がマージされました。 割と早くから作業は されてたのですけど、このプルリクにまとめられて、ようやくマージされました。 Merge jdk18_3 ("var" support) branch to master by jlahoda · Pull Request #445 · apache/incubator-netbeans というか、まあNetBeansの開発もGithub上で行われるようになって見やすくなったなーという感じもありますね。 もちろん、まだリリースは されていないので、開発版をダウンロードする必要があります。 このJenkinsでビルドされているのでダウンロードできます。 incubator-netbeans-release [Jenkins] これまた、NetBeansのビルドがJenkins

    NetBeansのJDK10対応がマージされた - きしだのHatena
    tyru
    tyru 2018/03/17
    変数名には var 使えるのか。互換性考えたら当たり前だけど、なるほど >var は特殊型
  • ジェネリクスと配列 - プログラマーの脳みそ

    Javaのジェネリクスは一般に配列と混ぜてはいけないとされるが、混ぜて用いた場合に何が問題となるのか。 歴史的な問題 Javaが1995年に登場した当時、Javaに配列はあったがジェネリクスはなかった。 ジェネリクスを含む型システムの理論的な整備は、1990年代から2000年代にかけてのJavaのバージョンアップの時期に並行して行われていた。これは1995年当初のJavaになぜより良いジェネリクスを搭載した形でリリースされなかったのか?ということにひとつの答えを示すだろう。つまり、1995年当時にはジェネリクス(Java5に搭載されたような変性を含むもの)は未来の技術であって、まだ理論的に固まっていないものであった、というわけだ。 Java言語仕様にも記述されているが Historically, wildcards are a direct descendant of the work b

    ジェネリクスと配列 - プログラマーの脳みそ
    tyru
    tyru 2018/02/18
  • 今のうちに知っておきたい、かゆい所に手が届くJava9の新機能7選 - Qiita

    サイバー・バズの@kashira2339です。 Java9の正式公開が迫っていますね!(何度か延期されていますが。。。) サイバー・バズでは、Javaを使ったプロダクトがいくつか開発されています。 なので、社員一同Java9へのアップデートにウキウキしています! 今回は先取りして、 Java8でムズムズしていた部分を解決するJava9の新機能の数々を 同じくJava9の新機能であるJShellを使って試していきたいと思います。 今回はMac OSXでの実践です。 ことはじめ 1. JDK9のインストール 手順 図

    今のうちに知っておきたい、かゆい所に手が届くJava9の新機能7選 - Qiita
    tyru
    tyru 2018/01/31
  • Amberで検討されているJava構文の変更 - Qiita

    Amberとは Java言語を拡張するプロジェクトです http://openjdk.java.net/projects/amber/ Amberのブランチ records データ保持用のクラスです sealed-types シールドタイプ newesapes line blockのエスケープ対応 patterns パターンマッチの全体的な開発 patterns-deconstruction パターンマッチでのデコンストラクション patterns-stage-1 instanceofのみのパターンマッチ pattern-runtime パターンマッチのランタイム? local-methods ローカルメソッド lambda-leftovers ラムダで_使えるようにする concise-method-declarations メソッド定義の簡略化 enhanced-enums 拡張enu

    Amberで検討されているJava構文の変更 - Qiita
    tyru
    tyru 2018/01/25
  • JavaでもC#みたいなオブジェクト初期化子書けるんですよ - C Sharpens you up

    コンストラクタが特に何もしてくれず、インスタンス作ってから初期化しないといけないタイプのクラスってありますよね。シリアライズのためだったりJavaBeansだったり、あとはふつーのArrayListだから作ってから内容詰め込みます、みたいに。 オブジェクト作ってreturnしたいだけなのに、作ったあとに初期化しないといけないから一時変数作るのがいつも一手余分で、一行で書けるラムダ式がブロックラムダになったりするといらいらもたまるというものです。 C#にはオブジェクト初期化子があるのでその余分な一手が省けますね。 return new Person { Name = "Alice", Age = 20 }; return new List<int> { 1, 1, 2, 3, 5, 8, }; return new Dictionary<int, String> { { 200, "OK"

    JavaでもC#みたいなオブジェクト初期化子書けるんですよ - C Sharpens you up
    tyru
    tyru 2018/01/24
    あーなるほど。これ特別な構文ではなく匿名クラスの初期化と初期化ブロックの組み合わせなのか。面白い。
  • Java でもa == 1 && a == 2 && a == 3でtrueって出力させたい - Qiita

    import java.io.PrintStream; public class Main { public static void main(String[] args) { int a = args.length; if (a == 1 && a == 2 && a == 3) { System.out.println("true"); } else { System.out.println("false"); } } static { PrintStream org = System.out; System.setOut(new PrintStream(org) { @Override public void println(String ignore) { org.println(true); } }); } } Register as a new user and use Qii

    Java でもa == 1 && a == 2 && a == 3でtrueって出力させたい - Qiita
    tyru
    tyru 2018/01/24
  • Javaバージョン番号のひみつ - yohhoyの日記

    プログラミング言語Javaのバージョン番号付与ルールについてメモ。 Java 1.0〜1.4までと、Java (SE) 5〜9ではバージョン番号の付与ルールが異なる。Java 5以降は一般に product version で呼称されるが、内部的には 1.N.0 のような developer version が付与されている。 Both version numbers "1.5.0" and "5.0" are used to identify this release of the Java 2 Platform Standard Edition. Version "5.0" is the product version, while "1.5.0" is the developer version. The number "5.0" is used to better reflect

    Javaバージョン番号のひみつ - yohhoyの日記
    tyru
    tyru 2018/01/01
  • サイボウズ Live アクセス障害の裏で起こっていたこと - Cybozu Inside Out | サイボウズエンジニアのブログ

    どうも!アプリケーション基盤チームの@yokotaso です。 2017/11/13 にサイボウズLiveの長時間にわたる障害が発生しご迷惑をおかけしました。 技術的な調査が一段落し、対応を進めております。 障害にいたった原因と対応のお話をさせていただきます。 簡単なまとめ Java8u152以降で、CPU負荷が高まる現象 Java標準のデシリアライズとSecurity Managerの相性が悪くなった 解決策は現時点では存在しない。サイボウズLiveでは、Java標準のデシリアライズをやめる準備段階 障害発生時の状況 障害発生の数時間前に、運用マシンのメンテナンスを行っておりました。 Javaのマイナーアップデート カーネルのアップデート その他、設定ファイルなどの更新 障害発生時には次のような現象が見られました。 JavaプロセスがCPU高負荷状態 MySQLに大量のロック及びエラーが

    サイボウズ Live アクセス障害の裏で起こっていたこと - Cybozu Inside Out | サイボウズエンジニアのブログ
    tyru
    tyru 2017/12/29
  • JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc

    2. 問題 • +演算子による文字列結合は最終的に どのような処理になる? private static String test(String str, int value) { return "ABC” + str + value; } 3. Java 8 までは • コンパイル時に StringBuilder を使った処理に なる private static String test(String str, int value) { return new StringBuilder() .append("ABC") .append(str) .append(value) .toString(); } 4. Java 9 では • InvokeDynamic で、実行時に処理を作る private static String test(String str, int value) { r

    JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
    tyru
    tyru 2017/12/16
    + での結合は StringBuilder が使われていたが Java 9 から byte 配列をアロケートして突っ込んでく方法に変わった。1〜3倍程度速くなるとのこと
  • Javaにおける動的Mixin - Qiita

    黒魔術(バイトコードをいじること)なしに、Javaで動的にMixinします。 Background ミドルウェアパターンの実装などにおいて、とあるミドルウェアを追加したら、リクエストオブジェクトにメソッドを追加したい、ということがあります。 これを多重継承のできないJavaで実現しようとすると、最終的に必要となるメソッドを全部実装したクラス(またはその親子関係)が必要になります。 必要なメソッドだけ、必要なときに足したいですよね。Mixin! Mixin! インタフェースのデフォルト実装 JavaでMixinを実装したいと思っていた人たちには、Java8でインタフェースにデフォルト実装を持てるようになったのは歓迎すべき出来事だったようです。 Java8のインタフェース実装から多重継承とMixinを考える Java8でmixinをがんばってみる - yojikのlog こんな感じのデフォルト

    Javaにおける動的Mixin - Qiita
    tyru
    tyru 2017/12/07
  • Java Generics Hell - ジェネリクスの構文 - プログラマーの脳みそ

    Java Generics Hell アドベントカレンダー 6日目。 前回(5日目) パラメタライズドタイプ 読者の推奨スキルとしてはOCJP Silverぐらいを想定している。 ここまで話の簡単のためにいろいろ端折って書いてきているのだが、徐々に詳細を書かねばなるまい。同時に取り漏らしも回収して行かなければならない。 スコープ Javaのジェネリクスの型変数には2種類のスコープがある。 メソッドの範囲で有効な型変数 クラスのインスタンスの範囲で有効な型変数 List<String>といった例でバインドされているのは後者のクラスのインスタンスを範囲としたもの。よく目にするのがこちらだろう。 前者のメソッドの範囲の型変数は入門書ではあまり取り上げられていないかもしれない。しかし、話としてはメソッドスコープの方が単純なのできっちりやるならメソッドスコープから導入したほうがわかりやすいのではない

    Java Generics Hell - ジェネリクスの構文 - プログラマーの脳みそ
    tyru
    tyru 2017/12/07