タグ

ブックマーク / torutk.hatenablog.jp (15)

  • JavaFXアプリケーションクラスにmainメソッドがなくてもよい訳 - torutkのブログ

    単独のJavaプログラムを起動するには、staticなmainメソッドを持つクラスをjavaコマンドに指定します。 public class Hello { public static void main(String... args) { System.out.println("Hello, world"); } } ~$ java Hello Hello, world ~$ところが、JDK 8でJavaFXアプリケーションを作った場合、mainメソッドがないのに実行できてしまいます。 import javafx.application.Application; import javafx.stage.Stage; public class HelloFx extends Application { @Override public void start(Stage stage) { s

    JavaFXアプリケーションクラスにmainメソッドがなくてもよい訳 - torutkのブログ
  • Windows 7、Java SE 8u20、NetBeans 8の組み合わせで落ちる - torutkのブログ

    【お知らせ】(2014-10-15)バグはJava SE 8u25で修正されました。 http://www.oracle.com/technetwork/java/javase/8u25-relnotes-2296185.html Windows 7 64bit版にJava SE 8u20 64bit版の上でNetBeans 8を動かしてJavaプログラムを記述していると、高頻度でNetBeansが消失、プロセスが異常終了してしまいます。 数回の操作でいずれも日本語入力中(Microsoft IME)で落ちてしまいました。 JavaVM異常終了時のhs_err_pid18024.log(数値部分は都度異なります)が生成されたのでJavaVMの異常終了です。 # # A fatal error has been detected by the Java Runtime Environmen

    Windows 7、Java SE 8u20、NetBeans 8の組み合わせで落ちる - torutkのブログ
  • forEach書いたら負け、for文禁止 - torutkのブログ

    日は日Javaユーザーグループ(JJUG)主催のクロスコミュニティカンファレンス2014春に参加してきました。今日の日記は、参加内容のまとめではなく、参加して得たことやそれをきっかけに考えたことなどをだらだらと書き連ねます。 Java SE 8では、forEach書いたら負け、for文禁止 日記のタイトルは、午前のセッション「K-1 詳説 Java SE 8 – CCC Edition」で出た話題です。手続き的なロジックを書いて、ネストが深く制御構造が複雑になってしまう人向けにはJava SE 8で導入されたラムダ式とStream APIを使って、内部イテレータと関数型プログラミングのエッセンスを取り入れた書き方をするといいよ、という話から出た言葉です。 実は昨日開催したJava読書会(「Java 8 Lambdas」を読む会)でも、「for文は禁止だ!」という話題が出てました。for

    forEach書いたら負け、for文禁止 - torutkのブログ
  • ソースコード管理ツールをSubversionからGitへ変更して感じたこと - torutkのブログ

    少人数チームでのソフトウェア開発でソースコードを管理するリポジトリにGitを適用して1,2ヶ月ほど経過しました。Gitを開発に使用するのは今回が始めてで、みなSubversionを使っていたメンバーです。 開発環境 OS Linux、たまにWindows 開発言語 Java プログラミングツール NetBeans 7.4 Gitクライアント NetBeans標準搭載のGit機能、たまにコマンドライン、WindowsではたまにTortoiseGit Gitサーバー apacheでgit-http-backend、Redmineと認証統合 現在の使用状況 Gitの共有リポジトリを、開発サーバー上にapache(HTTP)でホストしています。 共有リポジトリはmasterブランチで、各メンバーはローカルにcloneしたあとローカルのmasterで変更作業を実施し、適宜共有リポジトリのmast

    ソースコード管理ツールをSubversionからGitへ変更して感じたこと - torutkのブログ
  • Executors.newSingleThreadExecutor()が返すもの - torutkのブログ

    日のJava読書会「JUnit実践入門」において、次のサンプルコードからスレッドリークの有無が話題になりました。 public void invoke() { Executors.newSingleThreadExecutor().execute(task); } Executorはスレッドを内部に抱えるので、invoke()が何回も呼ばれ、shutdown()をしてあげてないこのコードではスレッドリークが生じるのでは?ということでした。 ここで生成されるExecutorインスタンスはメソッドスコープなので、すぐにGCされる対象となるのでは? という意見もありましたが、shutdownしないとスレッドが保持されたままでGCされないのでは、ということのようです。 で、jdk 7のライブラリのソースコード(jdkインストールディレクトリのsrc.zip)を調べてみました。 まず、Execut

    Executors.newSingleThreadExecutor()が返すもの - torutkのブログ
  • 年齢を計算する、java.util.Calendarとjava.time.LocalDateとで - torutkのブログ

    年齢を計算する方法を、Java SE 7までの標準APIであるjava.util.Calendarと、Java SE 8の新機能Date and Time APIで実装して比べてみようと思います。 オブジェクトにおける年齢の表現方法 オブジェクト指向プログラミングのチュートリアルやサンプルでみかける人物クラスと年齢属性(Personクラスとageフィールドなど)があります。あまりに単純なサンプルでは年齢を単なるintのフィールドで実装しています。 public class Person { private String name; // 名前 private int age; // 年齢 // 名前と年齢を指定してインスタンスを生成 public Person(String aName, int anAge) { name = aName; age = anAge; } // 年齢を取得す

    年齢を計算する、java.util.Calendarとjava.time.LocalDateとで - torutkのブログ
  • java.util.regexとString.substringの性能の違いはどれだけか(続) - torutkのブログ

    java.util.regexとString.substringの性能の違いはどれだけか - torutkの日記の続きです。 短い時間を測定するなら、大量にループして測定して割り算すれば・・・ 短い処理時間を測定するために、例えば1万回ループで繰り返し実行し、ループ回数で割り算するという方法も考えられます。 @Test public void 実行時間を測定() { long start = System.nanoTime(); for (int i = 0; i < 10000; i++) { timestamp.parse("2011-12-11 01:08:14"); } long stop = System.nanoTime(); System.out.printf("parse: %d [ns]%n", (stop - start)/10000); } CPUは命令キャッシュ・デ

    java.util.regexとString.substringの性能の違いはどれだけか(続) - torutkのブログ
  • java.util.regexとString.substringの性能の違いはどれだけか - torutkのブログ

    正規表現(java.uitl.regexパッケージ)を使った文字列切り出しと、Stringクラスのsubstringによる文字列切り出しとで性能比較をすると、感覚的には正規表現がかなり遅いと思っていました。 この2つの実行時間を測定して比べてみました。 背景 周期的に送られてくるデータを処理するようなコードでは、一つ一つの処理は短くても、積み上がってみると処理が追いつかずパンクするということがあります。 例えば、通信レコード1件に10種類のデータ項目が含まれ、1データ項目の受信処理に100usかかるとします。ここでデータ項目とは、日時、店コード、品名コード、などです。受信処理は通信フォーマット(ある規則の文字列、バイナリ)をプログラムで扱うデータ型に変換するようなものです。 1秒間に通信レコード1000件の要求が発生すると、受信処理時間は、1000*10*100usで1秒となります。受信処

    java.util.regexとString.substringの性能の違いはどれだけか - torutkのブログ
  • JavaFX 2関係資料 - torutkのブログ

    JavaFX 2に関して、今年に入ってJavaOne Tokyoや勉強会などがあり、日語での情報が充実してきています。それらの情報へのリンク一覧があると便利だなと思い、集めてみました。 個人ブログページも多く書かれているようです。参考になったページを今後随時追記していく予定です。 ITPro連載「JavaFX 2で始めるGUI開発」 櫻庭祐一さんの連載記事です。 JavaFX 2で始めるGUI開発 第1回 JavaFX 2とは | 日経 xTECH(クロステック) JavaFX 2で始めるGUI開発 第2回 シーングラフとFXML | 日経 xTECH(クロステック) JavaFX 2で始めるGUI開発 第3回 コントロール その1 | 日経 xTECH(クロステック) JavaFX 2で始めるGUI開発 第4回 コントロール その2 | 日経 xTECH(クロステック) JavaFX

    JavaFX 2関係資料 - torutkのブログ
  • ソフトウェア開発を考え直してみる - torutkのブログ

    火だるまプロジェクトの真っ最中では落ち着いて考えることができませんでしたが、2年がかりのプロジェクトがデリバリー(納入)を終え、カットオーバー(運用開始)となって四半期が過ぎ、いろいろとソフトウェア開発プロジェクトを振り返り考えるようになりました。 ソフトウェア開発を考え直すヒントを得る書籍 ちょうどプロジェクトが一段落したあとに読んだというタイミングもあるかもしれませんが*1、ソフトウェア開発を考えるヒントを与えてくれた2つのを紹介します。 ソフトウェア開発はなぜ難しいのか ~「人月の神話」を超えて (技評SE選書) 作者: 大槻繁出版社/メーカー: 技術評論社発売日: 2009/10/21メディア: 単行(ソフトカバー)購入: 1人 クリック: 59回この商品を含むブログ (12件) を見る ソフトウェア開発というのが、なぜ難しいかを正面から扱った稀有なです。プロジェクトマネージ

    ソフトウェア開発を考え直してみる - torutkのブログ
  • マルチスレッド下におけるログ出力性能測定 - torutkのブログ

    一つのJavaプログラムについて、処理をマルチスレッドで並行性を持つように記述し、複数CPU(マルチコア)上でそのプログラムを実行することにより並列処理を実現しようとした際、ログ出力が実行性能にどれだけ影響を及ぼすのかを把握したい、と考えています。 プログラムの開発(特にデバッグ)においては、ログが使えないと苦労します。ただし、ログを埋め込むと、性能に影響を及ぼします。また、ログレベルを抑制し、実際にはログ出力がなかったとしても、ログレベルの判定処理が動くことで、多少の影響はあります。 最近のログ出力ライブラリはスレッドセーフに作られていますが、それは内部で排他区間を持つことになるので、並列処理においては排他による性能への影響は無視できません。 そこで、同一プロセス内でマルチスレッドにより並行実行するプログラムを作成・実行し、複数スレッドからログを出力すると、実行性能にどれだけ影響を及ぼす

    マルチスレッド下におけるログ出力性能測定 - torutkのブログ
  • Javadocにクラス図 - torutkのブログ

    一昨日、id:torutk:20110119で、Javadocにシーケンス図を埋め込む方法を書きましたが、次はクラス図を埋め込みたくなります。 ということで、まずは調査フェーズから。 Javadocにクラス図を埋め込むツールを探す UMLGraph(BSDライセンス) APIviz(LGPL) UMLGraph http://www.umlgraph.org/ 定番と言えるツールで、あちこちで言及されています。 万人のためのオートメーション: プッシュボタンによるドキュメント作成 http://java.dzone.com/articles/reverse-engineer-source-code-u?page=1 日語が化ける問題があって回避方法の言及が以下URLにあります。 http://blog.livedoor.jp/fitskater/archives/20231.html

  • Javadoc生成ドキュメントにシーケンス図(Quick Sequence Diagram Editor) - torutkのブログ

    クラス仕様をJavadocでドキュメント化すると、ときおりシーケンス図を載せたくなる場合があります。 DoxygenではMscgen: A Message Sequence Chart Rendererというツールがあってコメント中にテキストでシーケンス図の定義を書くと、ドキュメント生成時に画像ファイルを生成しドキュメント中に画像リンクを追加してくれる機能がありました。 Javadocの場合は、Quick Sequence Diagram Editor - Summaryというツールがあり、Javadocコメント中にテキストでシーケンス図の定義を書くと、HTMLドキュメント生成時に画像ファイルを生成し、HTML中に画像リンクを追加してくれる機能があります。 Javadocのタグレットとして動作するので、Javadocコマンドのオプションで指定します。 http://sdedit.sourc

    Javadoc生成ドキュメントにシーケンス図(Quick Sequence Diagram Editor) - torutkのブログ
  • BTrace最初の一歩 - torutkのブログ

    id:torutk:20100704 で、ポストロギングAPIとして候補に挙げた一つがBTraceです。が、知名度がいまひとつなせいか、使い方の情報が少ないので、とっかかりでひっかかると挫折してしまいます。 入手と設定 まず、BTraceのホームページから、バイナリ一式をダウンロードします。 http://kenai.com/projects/btrace/pages/Home 上記URLのページを開き、左側メニューの"Documents & Files"をクリックします。 ダウンロード一覧から、"releases"フォルダのリンクをクリックします。 現時点で一番新しそうな"release-1.1"フォルダのリンクをクリックします。 btrace-bin.zipまたはbtrace-bin.tar.gzをクリックしダウンロードします。 ダウンロードしたファイルを適切なディレクトリに展開します

    BTrace最初の一歩 - torutkのブログ
  • ログとトレース - torutkのブログ

    システムにおける「ログ」の扱いは、思ったより重要度が高いのですが、システム設計時点ではなかなか掘り下げて設計されずに積み残ってしまいがちな機能です。アプリケーション開発者の気まぐれなデバッグログではなく、システムに発生しえる様々な障害(機能停止だけでなく、パフォーマンス障害、セキュリティ、ほか)の発生と後での障害切り分けに必要な情報をログに残すのは大変な作業です。 ロギングライブラリを使用する場合、開発中に、ログ採取ポイントを特定し、かつログ出力カテゴリやレベル、出力内容を設計し実装している必要があります。もしこの作業が十分でないと、後付でアプリケーションのソースコードをログ出力のためだけに修正し再配布しなければならなくなります。 C/C++なんかでは、アプリケーション側でログ出力文を埋め込まなくても、関数の呼び出しなどをトレース情報として残す仕組みを入れることがありました。Javaでも同

    ログとトレース - torutkのブログ
  • 1