Java

JJUG CCC 2016 Fall の時間別タイムテーブル(セッション一覧)を勝手に作りました

JJUG CCC の「時間別」タイムテーブル(セッション一覧)が欲しかったので、前回同様に調整したページを作りました。JJUG CCC 2016 Fall - Timetable (非公式) GitHub のページとして公開していますので、もっとこうした方がいいよ!というのがありましたら…

技術系の勉強会のスライドをツイートするbot @tech_slideshare を作りました!

勉強会スライドbot @tech_slideshare を作りました! ぜひ、ご利用ください! なにこれ? 技術系の勉強会だと、大変ありがたいことにたくさんの方があとでスライドを公開してくれています。 そこで、そんなスライドをまとめてツイートしてくれる bot があっ…

Javaのメソッド名の長さは、65535文字まで(正確には、UTF8でコード化したときの長さが65535byteまで)

Java のメソッド名の最大長は、以下のように規定されていました。 *1 アルファベットのみだと65535文字、日本語だとその半分以下になるようです。結構長いですね…。 フィールド名、メソッド名、フィールド・ディスクリプタ、メソッド・ディスクリプタ、その…

JJUG CCC 2016 Spring ( #jjug_ccc ) - セッション資料の一覧

JJUG CCC 2016 Spring に行ってきました! 今回は、改善系のネタを中心に聞いていました。 この手の話はやっぱり、勉強会っぽくて、そして自分の世界が広がる(そんなやり方があったのか!っておどろく)のでとても好きです。 最近、自分の仕事がプロジェク…

JJUG CCC 2016 Spring の スマートフォン用 タイムテーブル(セッション一覧)を勝手に作りました

JJUG CCC のタイムテーブル(セッション一覧)が、スマートフォンだと見づらかったので、スマートフォン用にレイアウトを調整したページを作りました*1。 JJUG CCC 2016 Spring - Timetable (非公式) GitHub のページとして公開していますので、もっとこうし…

Java で C# の out パラメータみたいなことをやってみる

Java で C# の out パラメータみたいなことができないかということを考えてみたので、ざっとまとめてみます。 そもそも、C# の out パラメータって? C# の out パラメータは、戻り値だけでなく、引数から値を返したいときに使います。例えば、文字列を数値…

JJUG CCC 2015 Spring ( #jjug_ccc ) - セッション資料の一覧 - 地平線に行く

JJUG CCC 2015 Spring に行ってきました! 今回、印象的だったのが「Java 8、私たちはこういう風に使っています!」という話が多数出てきたこと。 去年の JJUG CCC Spring だとまだ言語仕様の紹介程度だったので、この一年で一気に広がったんだなぁというの…

Java SE 8 の日本語 Java doc (API) のURLが変わっていました。

Java SE 8 の日本語 Java doc (API) のページが変更になっていました。 変更前 https://docs.oracle.com/javase/jp/8/api/ 変更後 http://docs.oracle.com/javase/jp/8/docs/api/ いつごろかわからないのですが、Twitter で検索してみた限り2015年3月7日頃?…

Java SE 8 Update 31 で、ByteArrayOutputStream のサイズ上限が拡大していました

ByteArrayOutputStream は、配列を出力ストリームとして扱うクラスです。 なので、このストリームのサイズ上限はシステムの配列サイズの上限に等しい…、はずでした。 しかし、Java SE 8 Update 25 まではそうなっていなかったようです。 [#JDK-8055949] Byte…

JJUG CCC 2014 Fall ( #jjug_ccc ) - セッション資料の一覧

JJUG CCC 2014 Fall に行ってきました! 今回は、前回とちょっと変わって、技術的な話だけでなくビジネス的な話もあってすごい面白かったです! (JJUG CCC なのに、Javaの話はあんまりないですよーw っていうお断りをたびたび聞きましたw)ちょっと意外でし…

Java8 で java.lang.Object#hashCode() の生成アルゴリズムが変更されていました。

java.lang.Object#hashCode()の性質という記事で書いたのですが、Java の Object#hashCode() の値はただの乱数となっています。 この乱数のアルゴリズムが、Java SE 8 で「線形合同法」から「XORシフト方式」に変更になっていました。 といっても、変更され…

JJUG CCC 2014 Spring ( #jjug_ccc ) - セッション資料の一覧

JJUG CCC 2014 Spring に行ってきました!最初はフルに参加すると時間が長くてしんどいかなーと思ったんですが、そんなのが気にならないぐらい感覚的に短い一日でした。 ブログや本で読むよりも濃くて新しい話が聞けてとても楽しかったです。 (個人的に、JV…

Java8 で StringBuilder/StringBuffer クラスがリファクタリングされていました。

ついに Java SE 8 がリリースされました! そこで、早速ダウンロードして、Java 8 のソースコード(src.zip)を Java 7と比較してみたところ、公表はされていないのですが、ちょこちょことリファクタリングされていることがわかりました。そこで、そのうち Str…

Java8 で String クラスに join メソッドが追加されていました

Java8 で String クラスに、static な join メソッドが追加されていました。 使い方はとってもシンプル。 String message = String.join("-", "Java", "is", "cool"); // message には "Java-is-cool" が代入されています。 引数に、任意の数の CharSequence…

Java 7 Update 40 で修正されたバグ

2013年9月10日に出た Java 7 Update 40 は Limited Update (セキュリティ修正を含まないバグ修正と新機能のリリース) でした。 そのリリースノートを見てみると、いくつか面白い(?)バグがあったので、調べてみました。 EnumMap: クローン時のバグ修正 En…

JavaとC#で、フィールドの初期化順序が違う (JavaプログラマーがC#でプログラムを書いて引っかかったところ その5)

C# の本を読んでいたら、クラスのフィールドの初期化順序が Java と違っていてびっくりしました。 Java のフィールド初期化順序 Java でインスタンスを作成した場合、親クラスのフィールド初期化 → 親クラスのコンストラクタ実行 → 子クラスのフィールド初期…

Java の配列要素数の上限

Java で配列を生成する際に、どこまで大きい要素数を指定できるかは、Java VMの実装によるみたいです。 なので、Oracle の Java VM ではメモリが十分にあっても、次のコードは必ずエラーになります。 int[] max = new int[Integer.MAX_VALUE]; じゃあ、メモ…

「null」をフラグとして使うのは、やめた方がいい

null をフラグとして使うのは、やめた方がいいと思います。 null は、ただ変数が初期化されていないことを表しているだけです。 この意味以外で、null を使わない方がいいと思います。 null をフラグとして使う 「null をフラグとして使う」というのは、「nu…

Java7 の例外ハンドリングの改善による非互換性

ひとつ前の記事で紹介した Java SE 7 and JDK 7 Compatibility - Oracle のなかに、面白い非互換性がありました。 Synopsis: Improved Exception Handling May Cause source Incompatibility 概要: 例外ハンドリングの改善が原因のソース非互換性 Java SE 7 …

Java6 と Java7 の互換性

Java6 のサポート期限が今月末(2013年2月)で切れます。 その前に、Java6 から Java7 への移行をしなくてはなりません。 そこで参考になるのがこのページ。 Java SE 7 and JDK 7 Compatibility - Oracle 基本的に Java は上位互換があるので、 Java6 と Jav…

JavaとC#で、文字列と null を結合したときの結果が違う (JavaプログラマーがC#でプログラムを書いて引っかかったところ その4)

Java と C# で、文字列と null を結合したときの結果が違います。 // Java System.out.println("abc," + null); // C# Console.WriteLine("abc," + null); Java の場合、結果は「 abc,null 」です。 C# の場合、結果は「 abc, 」です。 文字列と null を結合…

Java で活性エラーが起きたときの x86 アセンブリコードを見てみました。

Effective Java の「項目66 共有された可変データへのアクセスを同期する」で、活性エラー*1について記載があります。 この現象が起こった時の x86 アセンブリコードを見てみました。 なお、アセンブリコードの出力は以下を参考にさせていただきました*2。 J…

Java7 Update6 で String クラスがさらにリファクタリングされていました

2012年8月14日に登場した Java SE 7 Update6 で、またしても String クラスがリファクタリングされていました! そこで、そこがどういう風に変わったのかを詳しく調べてみました。 フィールド変数 count と offset が削除されました Stringクラスにあった4つ…

Java6 と Java7 の挙動の違いは、バグではありませんでした。

前回の記事(「Java6 と Java7 の挙動の違い(バグ?)」)に、id:expf さんからコメントをいただきました。 おそらく、最初のprintStackTrace呼び出しではStackOverflowErrorが出ていると思います。 その後、1つ前のTest.mainがcatch→printStackTrace呼び…

Java6 と Java7 の挙動の違い(バグ?)

Java6 と Java7 で挙動が違ったところがありました。 再現コードは単純で…。 public class Test { public static void main(String[] args) { try { main(args); } catch (Error e) { e.printStackTrace(); } } } 無限再帰するだけのコードです。 最終的には…

Java SE API(JavaDoc)日本語訳は、オンラインで読めます。

各所で、Java SE API(JavaDoc)日本語訳のオンライン公開終了が話題になっています。 rip-sun.com - Togetter 新しい Java SE API リファレンスの入手先について « 寺田 佳央 – Yoshio Terada しかし、今のところ以下のURLからオンラインで読めます(2012/03/…

java.lang.Object#hashCode()の性質

この前、ふと Object クラスの JavaDoc を見ていたら、こんな記述がありました。 できるかぎり、Object クラスで定義される hashCode メソッドは、異なるオブジェクトについては異なる整数値を返します。 Oracle Technology Network for Java Developers | O…

Java7 の Frok/Join Framework を使って、しりとりをしてみました。

この前、「最も長く続くしりとり何か」という問題は再帰で解けることに気づきました。 そして、再帰なら Java7 の Fork/Join Framework です! というわけで、書いてみました! しりとりのアルゴリズム 「最も長いしりとりは何か」という問題は、再帰を使っ…

Javaの実行速度を調べるなら、ClientVM/SeverVM の違いを考慮しておくべきでした。

先日のJava7 で ArrayList の foreach が速くなった理由を調べてみました。 - 地平線に行くについて、お詫びと訂正です。 上記の記事の中で、「ArrayList の foreach文(拡張for文)がJava6 → Java7 で約2.5倍速くなっていました。」という実験結果を記載し…

Java7 で ArrayList の foreach が速くなった理由を調べてみました。

Java7でList/TreeMap/TreeSetのIteratorがかなり早くなって、 ArrayListのforeach文(拡張for文)も、普通のfor文より早くなりました。 コレクションの細かい話、だが面白い! - 谷本 心 in せろ部屋 そうなんですか!? …と思って試してみたところ、ArrayLi…