タグ

Javaに関するsasashinのブックマーク (23)

  • ラムダ式でCommandパターンで書かれたコードをシンプルにする ~ ラムダ式使いへの第一歩

    Java SE 8では、新しい構文要素として「ラムダ式」が導入されました。これにより、これまで用いられたデザインパターンのいくつかは、特に意識しなくても同等のコードが書けるようになります。デザインパターンが解決しようとしていた問題が、ラムダ式によって素直に実装できるからです。連載では、デザインパターンを使って書かれたコードをラムダ式を使ったシンプルなコードに書き換えながら、ラムダ式の使いどころ・使い方を学んでいきます。 言語の洗練によってパターンは背景に退く まず、デザインパターンについておさらいしましょう。デザインパターンとは、オブジェクト指向言語を用いてプログラムを書くときに、頻発するプログラム設計上の工夫を「パターン」としてまとめたものです。ギャング・オブ・フォー(GoF)と呼ばれる4人の著者(エーリヒ・ガンマ、リチャード・ヘルム、ラルフ・ジョンソン、ジョン・ブリシディース)が執筆

    ラムダ式でCommandパターンで書かれたコードをシンプルにする ~ ラムダ式使いへの第一歩
  • 知らないなんてもったいない! 障害発生の原因を洗い出すOSSのJavaVM解析支援ツール「HeapStats」を使ってみよう

    避けるべき状況ですが、残念なことにこのようなことは珍しくありません。解析に必要な情報を漏らさず取得するためには、サービス開始前に入念な準備が必要ですが、現実にはそこまで時間をかけられない場合もあり、往々にして準備不足となる場合があるからです。 こういった不幸な状況を防ぐ手段の1つとして、稿では「HeapStats」というツールを利用した障害解析方法を紹介します。 HeapStatsとは 「HeapStats」は、NTT OSSセンタが開発を行い2013年にOSS(オープンソースソフトウェア)として公開したJavaVM障害解析支援ツールです。 Javaアプリケーションにおけるメモリ不足(OutOfMemoryError)やデッドロックといった障害を素早く解決することを目的として開発されました。特に、Javaヒープメモリ内の状態など、従来は高い負荷をかけて取得する必要があった情報を、低オーバ

    知らないなんてもったいない! 障害発生の原因を洗い出すOSSのJavaVM解析支援ツール「HeapStats」を使ってみよう
  • HPPC: High Performance Primitive Collections for Java

    Lists, Sets and Maps of all Java primitives. High performance and memory efficiency. Low-level data structures exposed for further performance tuning. HPPC provides template-generated implementations of typical collections, such as lists, sets and maps, for all Java primitive types. The primary driving force behind HPPC is optimization for highest performance and memory efficiency.

  • Hadoopの現実解「バッチ処理」の常識をAsakusaで体得

    Hadoopの現実解「バッチ処理」の常識をAsakusaで体得:ビッグデータ処理の常識をJavaで身につける(7)(1/4 ページ) Hadoopをはじめ、Java言語を使って構築されることが多い「ビッグデータ」処理のためのフレームワーク/ライブラリを紹介しながら、大量データを活用するための技術の常識を身に付けていく連載 “ビッグデータ”時代の「バッチ処理」 アプリケーション開発というと、システム利用者に一番近い画面系の開発が花形ですね。一方「バッチ処理」というと、何となく地味な感じがしますが、「バッチ処理」は縁の下の力持ち、これがないと、大概のシステムは稼働できません。 絶対に必要だけど、影の薄い「バッチ処理」でしたが、“ビッグデータ”への注目度が高まり、大量データを短時間に処理する「並列分散処理バッチ」が活躍する場面も増えてきました。 稿では、並列分散で「バッチ処理」を行う方法につい

    Hadoopの現実解「バッチ処理」の常識をAsakusaで体得
  • http://homepage3.nifty.com/anny/index.html

  • Groovyベースのビルド管理ツールGradleを使ってみる - 豆無日記

    Gradleってなに? 簡単に言えばMaven2のようなものですね。 あらかじめ様々な機能がプラグインとして用意されているビルドツールです。 勝手に選んだ主な特徴のトップ3は↓。 設定ファイルをXMLではなく、GroovyによるDSLで書く(build.gradleファイル) Groovyコードを含むプロジェクトの設定が非常に簡単 Maven2のディレクトリ構成を踏襲しているので、Maven2との同居も可能 といった感じで、とりあえずあっさりと流しておきます 入手・インストールなど ↓ダウンロードはこちらからどうぞ。 http://www.gradle.org/ 展開したディレクトリをGRADLE_HOME環境変数に指定して、PATHに$GRADLE_HOME/bin通すだけの、よくあるインストール方法です。 $ gradle --version ---------------------

    Groovyベースのビルド管理ツールGradleを使ってみる - 豆無日記
  • はてなブログ | 無料ブログを作成しよう

    ハリイカの焼売と中華炒め ハリイカをよく、見かけるようになりましたよ。生け簀で、泳いでいたものを一杯購入しました 立派な大きな墨袋や肝は冷凍保存して 柔らかな身は季節のお豆、お野菜と合わせて中華の炒めものに。新鮮なにんにくの茎は刻み、香り高く欲そそられますね 下足はミンチにし…

    はてなブログ | 無料ブログを作成しよう
  • JParsecで遊んでみる。 - 設計と実装の狭間で。

    まぁ、何と言うか、コンパイラ的なアレに興味があったりなかったりするので、 思いつきでコンパイラ作れそうな何かで遊んでみたくなってみたり。 JavaCCとかANTLRとか、SableCCとか、色々あるけど、 一際マニアックなのいってみようかって気分で、JParsecで遊んでみる事にする。 後さ、構文ファイルの記法覚えるのがタルいんだよねぇ…正直。 デバッガビリティが低すぎてさ…。 あんのかなぁ…ANTLRの構文ファイルをステップ実行できるツールとか。 家はHaskelで.NET版やRuby版の実装もあるので、知る人ぞ知るって感じなんだろうけども。 ちなみに、予防線を張っておくと、コンパイラに関しては、ワタクシほぼド素人デス。 書籍を斜め読みしたり、JavaCCのコード読んだり位はしてるけども、 何か数学的な話に対する理解はほぼ無いですなぁ。 っつうか、数学って高校二年の時以来それらしい事は

    JParsecで遊んでみる。 - 設計と実装の狭間で。
  • Windows7 64bit版のEclipseセットアップ - penultの日記

    Windows 7の64bit版を導入したので、JavaやEclipseもWindows/x64のものを試してみた。 JDK 6.0 update 17 Eclipse 3.5.1 みたいな環境。あと、普段は Pleiades で色々入ったものを一発セットアップしているので、できるだけその環境に近づけるのが目標。 Javaのインストール とりあえず32bit版JDKも色々な理由*1で必要なので、32bit版と64bit版のJDK 1.6.0_17 を両方入れる。なんとなく最後にインストールしたのがデフォルトJavaとして*2使われる気がするので、 32bit版のJDKをインストール(ダウンロードするときに "Windows" を選択) 64bit版のJDKをインストール(ダウンロードするときに "Windows x64" を選択) とした。32bit版は C:\Program Files

    Windows7 64bit版のEclipseセットアップ - penultの日記
    sasashin
    sasashin 2012/01/05
    バッドノウハウではあるが有用な情報。さっさとみんな64bitに移行してくれ。
  • 細かすぎて伝わらないJava7の変更点 - 都元ダイスケ IT-PRESS

    日のエントリーはJava Advent Calendarの25日目です。昨日は @mike_neck さんのmike、mikeなるままに…: hamcrestを拡張してmoreThanとか作ってみたでした。日はクリスマスですが、Advent Calendarはまだまだ続きます。明日はt.ogisawaさんのhttp://webinter.sakura.ne.jp/pbd/210です。 さて、今年はJava7がリリースされましたね。try-with-resources、diamond operator、invoke dynamic、Folk/Join framework…魅力的な新機能の数々が、多くの人によって紹介されています。が、Java7の変更はそれだけじゃないはず。小粒だが、キラリと光る変更がきっとあるはず。ということで、Java6とJava7のsrc.zipを比較してみました。小

    細かすぎて伝わらないJava7の変更点 - 都元ダイスケ IT-PRESS
  • JMeterを利用した負荷テストでどのようにスレッド数、Ramp-Up期間、ループ回数をどうやって決めるか考える - 基本へ帰ろう

    what 前回の測定は、Ramp-Up期間がすべて 1 という極端なものであり、あまりよろしくないと聞いた。 そのため、再度、負荷テストを行う。 今回行いたい測定は、前回同様「サーバの負荷限界値」である。 負荷計測環境 前回とほぼ同じだが、負荷テスト対象のWebアプリケーションのバージョンが少々あがっている。 妥当なRamp-Up期間の決定について JMeterで負荷テストするのはいいのだが、以下の数値をどのように決めるのに非常に悩む。 スレッド数 Ramp-Up期間 ループ回数 どうしたらよいものか、考えてみた。 itarchitect.jp 上記にテストシナリオ作成のヒントが書いてあるので読んでみた。「現実に即したテスト」という視点が非常に重要であると書いてある。 記事のヒット率の以下のようになる。 スレッド数が大きい場合は、Ramp-Up期間を「0」に設定すべきではない。(異常な状態

    JMeterを利用した負荷テストでどのようにスレッド数、Ramp-Up期間、ループ回数をどうやって決めるか考える - 基本へ帰ろう
  • JUnit のセカイ #JJUG - やさしいデスマーチ

    このエントリーは、@cero-tさんのエントリーの次で、Java Advent Calendar 2011の6番目のエントリーです。自分自身の今年のメインテーマがTDD(テスト駆動開発)と言う事もあり、関連エントリーとしてJUnitについて書きたいかと思います。今更JUnit?と思われた方も普段からJUnitを使っていあなたも気軽にお読みください。尚、色々な話題を駆け足で紹介するので、どれも簡単な紹介程度になってしまいますが、ご了承願います。 JUnit4 スタイル JUnitがアノテーションに対応し結構な月日が流れましたが、古いコーディング規約のままでテストコードを書いていませんか?JUnit4では、アノテーションとアサーションを使ったテストコードを書くことが基スタイルです。かつては、TestCaseのサブクラスを作り、testではじまるメソッドを定義していましたが、今は Testアノ

    JUnit のセカイ #JJUG - やさしいデスマーチ
  • http://news.mynavi.jp/column/java/index.html

  • ライトニングJava (50) ネットワークプログラミング(5) - ServerSocketを使った実装例 NewIO編(1) | エンタープライズ | マイナビニュース

    前回はServerSocketとスレッドをつかって、複数のコネクションを受付同時の処理をおこなう実装方法を説明した。今回はNewIO APIを使って同様の処理をスレッドを使わないで実現する方法を紹介する。 NewIO API(java.nio) スレッドを使わないで複数コネクションの処理を行うことは、要するにC言語でいえばselect(2)/poll(2)にあたるものをJavaで実践しようということだ。select(2)/poll(2)を実現するためのAPIはNewIO APIが導入されるまでJavaには用意されていなかった。NewIO API (java.nio)が導入されたことで、Javaでもこうした同期の入出力マルチプレクサを使ったプログラミングが可能になったのだ。 Javaはオブジェクト指向のプログラミング言語であるし、スレッドも簡単に扱える。だからselect(2)/poll(2

  • Javassist -- Java バイトコードを操作するクラスライブラリ -- 入門

    Java Press vol. 35, pp.76--85, March 2004. Java プログラムの"舞台裏"大追跡 Javassist -- Java バイトコードを操作するクラスライブラリ -- 入門 先端J2EE サーバJBoss が,人知れず内部で行っていること 千葉 滋 東京工業大学・大学院情報理工学研究科 はじめに Java バイトコードを変換するライブラリとしては Jakarta BCEL が有名です。BCEL は Java クラスファイルのデータ構造を直接操作する場合には便利ですが、Java クラスファイルの内部仕様、つまり Java バイトコードに詳しくないと使いこなせません。一方、Java バイトコードにあまり詳しくない開発者でもバイトコード変換を実装できるようにするライブラリが Javassist です。 バイトコード変換 はっきりいって、つい最近までJava

  • java.io.StreamTokenizerで字句解析

    JavaのCoreクラスをぼやっと眺めていると、なかなか面白いクラスがあることが判ります。ここで紹介するjava.io.StreamTokenizerクラスは入力ストリームの字句解析をする機能を提供します。この機能に構文解析機能を組み合わせれば、プログラミング言語の処理系を作ることができるわけで、なかなか興味深いクラスです。 Unix系のシステムを使っている人なら、lexというプログラムのことを聞いたことがある人は多いと思いますが、実際に使ったことがある人は結構少ないでしょう。ちなみにGNUプロジェクトではflexという名前でプログラムが提供されています。lexは字句解析を行うプログラムを生成するプログラムですが、StreamTokenizerは自身が字句解析を行います。多少の設定で挙動を変える事もできます。 字句解析というのは、要するに何かのソースファイルを読み出して、トークンと呼ばれる

  • » Eclipse3.3 + Tomcat6.0.18 で”Setting property ’source’ to~”エラー: 八重洲缶詰日記

    今までずっと JAVA5 + Tomcat5.5 で頑張ってたんですが、新案件着手を機に JAVA6 + Tomcat6 の環境へ移行を決意。 ボチボチと環境構築してたんですが、Eclipseで動的Webプロジェクトを起動すると、ページに全くアクセスできない状態に・・・ よーく見ると、コンソールにこんなようなエラーが。 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ’source’ to ‘org.eclipse.jst.jee.server:hoge’ did not find a matching property. はて??なんのこっちゃ??いきなり何を言い出すかなー Eclipseのクリーン起動をしてみたり、プロジェクトを作り直して見たりしたものの一向に解決せず。goo

  • Javaによる高階型変数の実装 - プログラマーの脳みそ

    高階関数というものをご存知か。関数自身を引数あるいは戻り値に取る関数のことである。「高階」は「こうかい」と読む。その昔「たかしな」と読んだ人がいたとか、いないとか。 先のエントリ「HttpSessionを型安全にする」では「javax.servlet.http.HttpSessionのsetAttribute()/getAttribute()のようなモノをどうやって型安全にするか」という動機付けから、 public class KeyValue<K> { public <T> void put(K<T> key, T value){} } といったことをやろうとして、Javaの言語仕様上、型変数に型変数を持たせることができないので実現できないと述べた。 簡単に解説すると、ここでKayValueはHashMap的なキーを渡せば値を返すオブジェクトで、型変数Kはキーの集合体を表現している。ty

    Javaによる高階型変数の実装 - プログラマーの脳みそ
  • 再帰的ジェネリクスの代入互換性 - プログラマーの脳みそ

    Javaのややこしいジェネリクスの話をしよう。*1 再帰的ジェネリクス クラスHogeがあったとして、型変数Tを取る。 public class Hoge<T> {} このHogeの型変数Tがextends Hogeとすると public class Hoge<T extends Hoge> {} すると、T extends Hoge の Hoge が raw型だと警告される。Hogeの<>の部分にHoge型を継承した型を指定しなければならない。ここで型変数T が extends Hogeだったので、丁度いいからT型をおさめよう。 public class Hoge<T extends Hoge<T>> {} これは再帰的ジェネリクス(recursive generics)と呼ばれているようだ。 追記:僕は勝手に自己言及型ジェネリクスなどと呼んでいた。情報サンクス!併せてタイトルなども表現

    再帰的ジェネリクスの代入互換性 - プログラマーの脳みそ
  • 別におぼえたくないのに…Javaの方から勝手に脳に入り込んできて、気がつけばJavaを習得してしまうゲーム「Robocode」 - techiela

    HelloWorldやっても面白くねーんだよ!! 皆さんこんにちは。 Google App Engine (GAE)でJavaがサポートされ、 PythonはスルーしたけどJavaならやりたい!でもJava未経験! GAE/Jに手を出してみたけど、結局hello, world!のサンプルアプリを公開したまま 放置した状態になっていませんか? 僕はそうです! Java使えたら楽しいだろうなー Java覚えて仕事の案件こなしたいなー Java使えたらオブジェクト指向がもっとわかるだろうなー リア充へのあこがれ と、常々思っていつつも、Javaの最初の面倒臭さの前にいつもやる気喪失するんですよね。 HelloWorldひとつやるのにpublic static void main()書くなんて面倒臭すぎです コンパイルなんて面倒でやってられません eclipseの使い方憶えるのが面倒だし ecli

    別におぼえたくないのに…Javaの方から勝手に脳に入り込んできて、気がつけばJavaを習得してしまうゲーム「Robocode」 - techiela