タグ

javaに関するterazzoのブックマーク (697)

  • Java 8 で Base64 エンコーディング機能が導入されたらしいので使ってみた

    「何をいまさら」な感じの機能追加だけど、Java 8 から 標準のクラスライブラリで Base64 エンコーディング できるようになった。これはこれで嬉しいことなので、使い方とそのパフォーマンスをメモっておく。 使い方 まずはデモコードから。 エンコーダは以下のメソッド呼び出しで得られる 3 つの種類がある。 Base64.getEncoder() Base64.getUrlEncoder() Base64.getMimeEncoder() 対応するデコーダがそれぞれ用意されている。 Base64.getDecoder() Base64.getUrlDecoder() Base64.getMimeDecoder() Base64.getUrlEncoder() で得られるエンコード文字列は、普通の Base64 エンコーディングではファイルパスや URI での利用時に問題となりうる +/

    Java 8 で Base64 エンコーディング機能が導入されたらしいので使ってみた
    terazzo
    terazzo 2014/09/11
  • A quick and dirty guide to finding Java memory leaks (evanjones.ca)

    terazzo
    terazzo 2014/09/05
    実行ユーザが違うとダメらしい
  • Java クラスファイルの構成 その1 - Qiita

    class_file { magic // 0xcafebabe minor // 2 byte major // 2 byte constants modifiers // 2 byte thisClass // 2 byte superClass // 2 byte interfaces fields methods attributes } クラスファイルの先頭には必ず 0xcafebabe (カフェベイビー) が入っています。 minor, major はクラスファイルのバージョン番号が入っています。 バージョン番号の次は 定数プール と呼ばれる構造体です。 定数プールはクラスファイルの大部分を占めており、クラスファイルの様々な場所から参照されます。 modifiers はクラスのアクセス修飾子等を表現するフラグの集合です。 thisClass に入っている値は定数プールのインデッ

    Java クラスファイルの構成 その1 - Qiita
    terazzo
    terazzo 2014/08/31
  • JDK8からあるちょっと嬉しいGCログオプション - n-agetsumaの日記

    JDK8およびJDK8u20では、GCログに関連する2つの便利な機能が追加されている。いずれの機能も2014/8現在最新のJDK7 update 67 には含まれていないが、JDK7u80にてバックポートされる予定。 GCログにpidと日付を含める (JDK8より) JAVA_OPTS="$JAVA_OPTS -Xloggc:/var/log/wildfly/gc_%p_%t.log" => 実際のファイル名例 : gc_pid31455_2014-08-31_14-20-16.log.0GCログのフォーマットに%pを入れるとpid形式のプロセスIDが付与される。また%tを付与すると"_2014-08-31_14-20-16"のようにGCログファイルを作成した日付時分秒が追加される。かつてGCログはJavaを再起動すると同じファイルが上書きされて消えてしまうため、出力先を-Xloggc:g

    JDK8からあるちょっと嬉しいGCログオプション - n-agetsumaの日記
    terazzo
    terazzo 2014/08/31
  • 「Javaの鉱脈」でJVMオプションの記事を書きました | さにあらず

    WEB+DB PRESS の Vol.82 に、かなり気合いの入った JVM オプションの記事を書いたので、是非読んで頂きたい。 2014/8/23 発売ですので、既に購入頂いてる方も多いと思います。 電子書籍版もありますので物理的な媒体に興味がない方は PDF を買って下さい。 WEB+DB PRESS Vol.82@Gihyo Digital Publishing今回の記事における対象読者について#今回の記事は、ターゲットとして Java に余り時間をコミットしていないけども便利なので JVM 上で動くアプリケーションをウッカリ運用している人をイメージしながら書きました。 例えば、OSS ものだと Hadoop や ZooKeeper、Lucene や Solr、商用製品だと Stash とか JIRA とか confluence とかそういうものですね。 僕の観測範囲だと、PHP

    「Javaの鉱脈」でJVMオプションの記事を書きました | さにあらず
    terazzo
    terazzo 2014/08/26
  • コールバックと上手に付き合う - Qiita

    コールバック、よく使いますよね。 非同期処理の結果を受け取るには、必ずと言っていいほど付き合うことになるコールバックですが、UI のようにライフサイクルを持つオブジェクトと共存するには、考慮すべきことがいくつかあります。 ここでは、おおまかに、上手にコールバックと付き合う方法を見ていきます。 基となるポイント なんといってもまず抑えなければいけないポイントは、ライフサイクルを持つオブジェクトとの共存です。世に出回っている様々なコールバック管理のためのライブラリは、このライフサイクルを持つオブジェクトとの共存をいかに楽に、あるいは直感的にするか、ということをもとに作られています。 ライフサイクルとはつまり、オブジェクトが生成されてから消滅するまでの一連の流れのことです。 newしたりallocしたりしたタイミングでオブジェクトが生成され、GC に回収されたりdeallocしたりするタイミン

    コールバックと上手に付き合う - Qiita
    terazzo
    terazzo 2014/08/26
  • MySQL Connector/J (JDBC ドライバ)の罠まとめ - ~saiya/hatenablog

    MySQL JDBC ドライバ(MySQL Connector/J)、JavaMySQL といえばまずコレだが、これまた地味に罠が多い(そして多くの人が踏んで苦しむ)のでまとめてみた。 (2015/03/19) こちら のコメント欄でご指摘ただいた wait_timeout の件について記事修正いたしました。 Summary 以下、いずれもプログラム設計時に理解しておかないと、開発中は大丈夫そうでも実用した途端に苦しまされれてしかも設計から治す羽目になる要注意な罠である: SELECT 結果は全部メモリに載ってしまう (デフォルト設定で) 大量 SELECT する場合は FetchSize, ResultSetType を要設定 利用時には制約があるので、設計段階から考慮しなければならない (後述) idle 時間の「合計で」コネクションが切られる 前回のクエリ処理から一定時間以上経

    MySQL Connector/J (JDBC ドライバ)の罠まとめ - ~saiya/hatenablog
  • Javaの型システムとコンストラクタ - プログラマーの脳みそ

    今回はJavaの型システムのコンストラクタについて考えてみたい。 Javaの型システム、あるいはJavaのオブジェクト指向において、コンストラクタという存在は特殊な存在だ。 コンストラクタ内からはそのクラスのインスタンスフィールドにアクセスできる。これは通常のインスタンスメソッドと同等のスコープであってstaticメソッドのそれとは異なる。しかし、コンストラクタを呼び出すにあたってはインスタンスのメソッドという体ではなく、staticメソッドのように(インスタンスではなく)クラスに属するものとして呼び出すことになる。(もっともnewという専用のキーワードを用いるのでそうは見えないかもしれないが) クラスやinterface、つまりJavaの「型」によるポリモフィズムの世界を考えるとき、コンストラクタはのけものである。継承関係を持つクラスであってもコンストラクタは継承されないし、オーバーライ

    Javaの型システムとコンストラクタ - プログラマーの脳みそ
    terazzo
    terazzo 2014/08/20
  • Java 9の新機能(予定)がオラクルから早くも発表に

    今年の3月にJava 8が正式公開され、次のJava 9はおそらく2年後の2016年に登場すると予想されますが、そのJava 9に搭載される予定の新機能がオラクルから発表されたとInfoQの記事「Oracle Announces First Java 9 Features」が報じています。 InfoQが報じたJava 9の新機能は、JDK Enhancement Proposals(JEP)のインデックスページの中からバージョン9の予定になっているものとしても見つけられるようです。主なものをリストアップしました。 HTTP 2 Client HttpURLConnectionを置き換える予定で、HTTP 2.0とWebSocket対応 Light-Weight JSON API RFC7159に準拠したJSONデータの生成と読み込みを行うライトウェイトAPIを提供する Process AP

    Java 9の新機能(予定)がオラクルから早くも発表に
    terazzo
    terazzo 2014/08/20
  • Java VMの改善案が楽しそう - きしだのHatena

    なんか、Java VMの改善案がでてますね。 すげー楽しそうです。 http://cr.openjdk.java.net/~jrose/pres/201407-JVMEvolution.pdf プロジェクトValhallaとプロジェクトPanamaがあります。 http://openjdk.java.net/projects/valhalla/ http://openjdk.java.net/projects/panama/ Valhallaは、Value TypesとSpecialization、PanamaはArrays 2.0とLayoutsがあります。 概要をまとめてみますが、かなり適当な解釈で書いてたりするので、細かいことはちゃんと原文みてください。 Value Types 簡単にいえば、新しい基型を定義できるようにするというものです。 http://cr.openjdk.ja

    Java VMの改善案が楽しそう - きしだのHatena
    terazzo
    terazzo 2014/08/12
  • ありがとう、ジャバ

    This website is not endorsed by or affiliated with Oracle and the products sold here are not warranted by Oracle.

    terazzo
    terazzo 2014/08/10
  • 内海 英一郎のブログ: Gig で始めるモダン Java Web アプリケーション開発

    高度に発達した Java は魔法と区別がつかないーーーこんな話をよく耳にします(どこで)。 元祖 Struts による MVC 2 アーキテクチャパターンの提案から始まる Java フレームワークの歴史は、数多くのプログラミング言語の中でも非常に古いものであると言っていいでしょう。最近の Java フレームワークは、プレーンなコンポーネントモデル(継承をベースにしたオブジェクト指向バリバリ密結合モデルの回避)、型システムの積極的な利用、アノテーションによる宣言的な記述と手続き的な記述とのバランス、アジャイルな開発をサポートする周辺ツールの拡充、といったトレンドに支えられてデザインと実用性のバランスを取りながら緩やかに進化しています。ここに言語仕様そのものやハードウェア自体の改善が加わり、今後はコード一行一行の表現力においても他言語のフレームワークと遜色のないものになっていくはずです。 そん

    内海 英一郎のブログ: Gig で始めるモダン Java Web アプリケーション開発
    terazzo
    terazzo 2014/07/30
  • IntelliJ IDEA 14 EAP 138.1029 リリース - Javaデコンパイラを内蔵 | Post Blog

    IntelliJ IDEA 14 EAPをお試しの方は是非最新のビルドをダウンロードしてください。まだお試しでないかたも、これを機に是非! 最新ビルドで注目の機能は内蔵のJavaクラスデコンパイラです。サードパーティプラグインをインストールすることなく、ソースコードがないライブラリ内でどのようなことが行われているのか確認することができます。Java 8のバイトコードや、非Javaクラスの場合はうまく働かない場合もありますが、改善を重ねてまいりますのでフィードバックを頂ければ幸いです。 他に注目して頂きたいトピックは以下の通りです: WindowsインストーラはJava 8 JREをバンドル JREバンドル版OS XインストーラはJava 7 Update 60を使用 STSプロジェクトをインポートする際、Spring bean configurationもインポート ウェルカムスクリーンの

    IntelliJ IDEA 14 EAP 138.1029 リリース - Javaデコンパイラを内蔵 | Post Blog
    terazzo
    terazzo 2014/07/13
  • 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
    terazzo
    terazzo 2014/07/09
    NetBeansすごすぎる/IntelliJ IDEAのコピペするとJavaコードがScalaコードになるの以来の衝撃
  • そろそろJavaみなおしてもええんやで

    Rubyist started to learn Groovy - things important to leran new LL

    そろそろJavaみなおしてもええんやで
    terazzo
    terazzo 2014/07/09
  • JVM の並行性: Java 8 での並行処理の基礎

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    JVM の並行性: Java 8 での並行処理の基礎
    terazzo
    terazzo 2014/07/04
  • DalvikバイトコードのMethod数65k制限について - Islands in the byte stream (legacy)

    Androidアプリケーションにはアプリケーションのメソッド数が65kを超えられないという制限があるのだけど、その詳細を知らなかったので調べた。 参考: Does the Android ART runtime have the same method limit limitations as Dalvik? まとめると メソッド数制限の実体は(VMとしての)DalvikではなくDalvik bytecodeのinvoke系で使うmethod idが16bit intであること つまり、アプリケーションで定義したメソッド数が65kを超えるかどうかではなく、ひとつのdex fileで参照しているメソッド数が65kを超えるときに問題が起きる ARTもDalvik bytecodeを一旦介する以上、同じ制限をもつ という感じか。さらに手元で試してみたところ、問題が起きるケースではdx(1)が例外

    DalvikバイトコードのMethod数65k制限について - Islands in the byte stream (legacy)
    terazzo
    terazzo 2014/07/04
    Javaって1.0αのころ1クラス256個までって制限なかったっけ。
  • javac コマンドの-source, -target オプションのルール変更について

    javac コマンドの-source, -target オプションのルール変更について 2014年7月2日 at 12:55 午後 1件のコメント Java SE 5 以前の Java のソース・コードを Java SE 7, Java SE 8 の環境でご利用頂いている皆様に、今後の JDK における仕様変更(予定)のご案内をさしあげます。 ※ この情報は 2013 年 4 月 14 日に開発者 (Joseph D. Darcy) からアナウンスされた情報です(ご参照:Changing Sources and Moving Targets: Evolving the javac command line )。また、JEP(JDK Enhancement Proposal) 182 としてリストされている内容です。 今まで、javac のコンパイラ・オプションで “-source”, “-

    javac コマンドの-source, -target オプションのルール変更について
    terazzo
    terazzo 2014/07/03
  • コンパイル時警告に注意 - プログラマーの脳みそ

    http://aoking.hatenablog.jp/entry/20100427/1272326219での主張は public class Sample { public static void main(String[] args) { List<Integer> list = getList(); System.out.println(list); } public static <T> List<T> getList() { List<T> list = new ArrayList<T>(); list.add((T)"string"); list.add((T)Integer.valueOf(1)); list.add((T)new Object()); return list; } } といったように型変数Tにキャストを行った場合に「このコードはコンパイルエラーは発生しない。

    コンパイル時警告に注意 - プログラマーの脳みそ
    terazzo
    terazzo 2014/06/30
  • Log4j2を試してみる - CLOVER🍀

    Javaのロギングライブラリですが、 java.util.logging(JUL) Log4j Commons Logging(+Log4j) SLF4J+Logback と種々あり、最近ではSLF4J+Logbackが主流な気がするのですが、自分の周りでは長らくLog4j、またはCommons Loggin越しにLog4jのパターンが多かったです。というか、今もですが。 Log4jの上に、自作のロギングライブラリを作ることになることも、多々…。 まあ、そんな感じで昨今のJavaのロギング事情にだいぶ置いていかれているのですが、ここでちょっとLog4jの後継であるLog4j2を試してみたくなりまして。 Apache Log4j2 http://logging.apache.org/log4j/2.x/ なんでも、パフォーマンスがかなり良くて有名?らしいのですが。 The Logging O

    Log4j2を試してみる - CLOVER🍀
    terazzo
    terazzo 2014/06/29