タグ

jvmに関するcactusmanのブックマーク (9)

  • Javaのクラスファイルをjavapとバイナリエディタで読む | DevelopersIO

    はじめに こんにちは、虎塚です。 この記事はJava Advent Calendar 2014 の22日目の記事です。昨日はすふぃあ (@empressia) さんの「JavaEEなWebアプリケーションを作ろうとしたときのお話: すふぃあの記憶」でした。 この記事では、「Javaクラスファイルの読み方・増補版」と題しまして、12月20日(土)に開催したJavaクラスファイル入門という勉強会でお話しした内容の補足をお届けします。なお、勉強会のターゲットは、 Javaプログラムは書いたことがあるけど、JVMのことは全然知らない Javaクラスファイルのバイナリを見たことがない といった初心者の方や新人さんでした。なので、Javaに興味さえあれば、どなたでもお読みいただける内容かと思います。 JVM仕様とは JavaとJVM Javaプログラム(.java)をコンパイルすると、中間コードと呼ば

    Javaのクラスファイルをjavapとバイナリエディタで読む | DevelopersIO
  • mainメソッドの無いクラスを実行した際にスタティックイニシャライザが呼ばれるのは仕様では無かった - 発火後忘失

    昨日のエントリ 『mainメソッドの作成なしでのプログラムの実行』はJava7では動かなかった: 雪羽の発火後忘失 で、mainメソッドが無いクラスをjava.exeで呼んだ時の挙動がときの挙動がJava6とJava7で変わっている、と書きました。また、最後に だからなんだ、と言われると困りますが。 というように書いたのですが、その後この一言が何故か頭から離れませんでした。 モヤモヤを解消するため考えを整理することにしました。私は昨日の時点では以下のような認識でした。 static initializerは、クラスがロードされた時点で実行される 。 java.exe Starter というコマンドを実行した時点では、 当にStarterクラスにmainメソッドが含まれているかどうかわからない。 従って結果がどうであれStarterクラスをロードする必要がある。 実際にはmainメソッドが

    mainメソッドの無いクラスを実行した際にスタティックイニシャライザが呼ばれるのは仕様では無かった - 発火後忘失
  • 『mainメソッドの作成なしでのプログラムの実行』はJava7では動かなかった - 発火後忘失

    public enum Starter { 私の, 名前は, 中野です; private Starter(){ System.out.println(toString()); } } しかしどちらも、Java6では > java Starter 私の 名前は 中野です Exception in thread "main" java.lang.NoSuchMethodError: main のように文字列は表示されるのですが、Java7で実行しようとすると > java Starter エラー: メイン・メソッドがクラスStarterで見つかりません。次のようにメイン・メソッドを定義してください。 public static void main(String[] args) と、スタティックイニシャライザも働いてくれないようです。だからなんだ、と言われると困りますが。[追記: mainが無く

    『mainメソッドの作成なしでのプログラムの実行』はJava7では動かなかった - 発火後忘失
  • OpenTerracottaの紹介

    Productクラスは、商品の明細に関するデータを内包しています。商品名、SKU、そして価格です。 package example; import java.text.NumberFormat; public class ProductImpl implements Product { private String name; private String sku; private double price; public ProductImpl(String sku, String name, double price) { this.sku = sku; this.name = name; this.price = price; } public String getName() { return this.name; } public String getSKU() { return

  • 【ハウツー】JVMレベルでクラスタリングを可能に - OpenTerracotta (1) JVMレベルのクラスタリングって何? | エンタープライズ | マイコミジャーナル

    Open Terracottaは、複数のJVMをまたいでJavaオブジェクトをキャッシュすることができるクラスタリングソリューションだ。以前は商用製品であったものが、2006年末にオープンソース化された。ライセンスは、Mozilla Public LicenseをベースとしたTerracotta Public Licenseであり、商用プロダクトにも問題なく利用できる。 なぜTerracottaが必要か アプリケーションにとって「パフォーマンス」は重要だ。特にデータベースを使用するアプリケーションはデータベースへのネットワークアクセス、検索クエリの実行性能などに足を引っ張られてパフォーマンスが思うように出ないことも多い。 そこで考え付くのが検索結果をキャッシュして再利用することであるが、これには別の問題がある。一つは、キャッシュを利用すると将来的な拡張性を損ねる可能性があることである。例え

  • InfoQ: JVMで動く言語Ioke:分かりやすい構文で、LispとRubyの力を持つ言語

    Ola Bini氏(リンク)は、JRuby (リンク)開発の中心人物であり、Practical JRuby on Rails Projects(リンク)の著者である。その彼が、Ioke(リンク)というJVMの上で動く新しい言語を開発している。Iokeの型を重視し、非常に動的でプロトタイプベースのオブジェクト指向言語が目指すところは、素晴らしいぐらい小さい正規構文を持つLispやRubyを使用したときに得られる同等の力を開発者に授けることである。 Ola氏は、以下にIokeの質(リンク)に関する説明をしている。 Iokeは、強力な型付け言語であり、動的、プロトタイプベースのオブジェクト指向言語です。それは同図像であり、数種類のマクロがビルトインされています。Iokeに最も影響を与えた言語は、Io(リンク)、Smalltalk(リンク)、Self(リンク)、Ruby(リンク) そしてLisp

    InfoQ: JVMで動く言語Ioke:分かりやすい構文で、LispとRubyの力を持つ言語
  • JVMに関するNews

  • JVMをネイティブコードレベルでデバッグ - 川口耕介のブログ

    先日、JVMをネイティブコードのレベルでデバッグしないといけなくなったので、このブログはそのメモです。例によって、僕はJVMチームの一員じゃありません。もし、よりよい方法をご存知の方は教えて下さい。 さて、これをやるはめになったのは、MavenをHudsonからある特定の方法で起動するとMavenがハングする、というバグが懸案になっていたからです。デバッグを長くやっていると、誰しもある種の勘というかそういうものが身についてきて、これは性質の悪い、下位レイヤからくるバグだというのが分かる時がありますが、これはそういうバグでした(当はそんなアナログなものじゃなくて、脳内で症状に合致する仮説を組み立てようとした結果、妥当な仮説が存在しないというか、もっと検索的な感じなのですが)。 デバッガサポートをつけてJVMを起動するとバグは再現しないし、jconsoleをアタッチするとその途端に生き返り、

    JVMをネイティブコードレベルでデバッグ - 川口耕介のブログ
  • JITの出力するx64アセンブリを深追いしてみた - 川口耕介のブログ

    こないだ行ってきたThe Server Side Java Symposium 2008で、JITの出力するアセンブリコードを見る方法がわかったので、早速試してみました。 まず最初に注意事項。 僕はJVMのパフォーマンスの専門家じゃありません この手の結果を利用してJavaコードをばりばりチューニングするのは賢明ではありません。やめましょう。 要するに、VMは日々進化しているので、この結果が将来のJVMでも有効だとは限りません、ということです。でも、現在でもVMはこの程度の事は既にやっているんだ、という役には立つでしょう。 さて、この機能を利用するには、デバッグ版のJDKが必要です。このテスト走行ではJDK6 u10 b14を使いました。ここからダウンロードできます。 $ java -fullversion java full version "1.6.0_10-beta-fastdebu

    JITの出力するx64アセンブリを深追いしてみた - 川口耕介のブログ
  • 1