Java

プログラミングを習得したいと考えている人がJavaを選択しない理由が見つからない。

プログラミングを習得したいと考えている人はどのプログラミング言語を学べばいいのか悩むだろう。Javaを選べば以下のメリットがあるよ。・インフラが多い 1 いろんなOSで利用可能 2 いろんなデバイスで利用可能・基本情報処理技術者の試験に出る・いろん…

Bean Validation その1

Chapter 2. Constraint Definition 制約定義 Constraints are defined by the combination of a constraint annotation and a list of constraint validation implementations. The constraint annotation is applied on types, methods, fields or other co…

HashMapが終わった瞬間。

下記の様にするとjava.lang.StackOverflowErrorが発生する。 Map m = new HashMap(); m.put(m, "1"); //←この瞬間、この”m”は終了した。 //エラー m.put("", "1"); //これもエラー m.remove(m); //これもエラー m.containsKey("1"); これがHashtableだと起き…

JPAのアノテーションとBean Validationのアノテーションでアジャイルが加速する。

今までは、テーブル設計をしてからEntityを作成(自動生成含む)する方向だったんだけども、JavaではJPAアノテーションとBean Validationのアノテーションを利用してEntityから先に作成(自動生成含む)することができるようになった。まぁ今でもマイグレー…

来年のJavaOne

http://java.dzone.com/news/javaone-lives 一回も行ったことないけども来年も開催されるような流れでうれしい限りだ。

JavaのSwitch構文を高速化する方法。

Switchを使うと以下の二つの命令のどちらかがコンパイラによって生成される。 lookupswitch - switch文のcase式の値が不連続である場合値を探しながらジャンプ先を探す。tableswitch - switch文のcase式の値が連続である場合キー値をindexとしジャンプ先アド…

Java7とJavaEE6が流行らない理由

Java5からアノテーションとジェネリックが導入されて、Java6を経てようやくJava7がでてきますが、Java6になってもこのアノテーションとジェネリックがそこまで受け入れられていないように見受けられます。 ビジネスの上で重要なJavaEEもようやくJavaEE6にな…

Bean Validation 1.0Finalリリース

ようやく、正式仕様がリリースされるみたいです。

Apache POI 3.5 FINAL リリース!!

ついにApache POIの正式版である3.5-FINALが9月末にリリースされます。

tomcat5とVisualVM

WindowsのtomcatでVisualVM使おうとして普通に使えなかったのでJMXの設定を行ったときのメモ -Dcom.sun.management.jmxremote.port=8086(適当なポート番号) -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false …

VMWareがSpringSourceを買収!!

http://www.theserverside.com/news/thread.tss?thread_id=55430 これは驚きました。今年はJava界隈変遷の年ですね。 色んな意味でSpringSourceにとってはいいタイミングだったのではないでしょうか。 また、OracleがどんなにJavaに対してテコ入れしようとも…

Javaの脆弱性!!

最近、”芋”がマイブームなんですが、芋づる式にJavaにも脆弱性が波及していますね。MSのATLの脆弱性によりJava Web Start が影響を受けています。http://blogs.sun.com/security/entry/sun_alert_264648_security_vulnerability

Servlet3.0の新機能

Proposed Final Draftのフェーズですが、Servlet3.0の新機能をさらっと調べてみました。また、Servlet3.0はtomcat7でサポート予定です。 1. Asynchronous processing ・Servletで非同期処理が可能となります。 2. Modularity of web.xml ・アノテーションでS…

Javaバージョンアップでの変更点を知る3つの方法

昨今ではソフトウェア価格破壊の影響によりIT業界はサービス中心の仕事になりつつあります。 ITILにもITサービスマネジメントというコアなプロセスがあります。 ITサービスマネジメントの達成目標として以下が挙げられます。 ・ITサービスの提供 ・ITサービ…

Apache POI3.5のbeta6がリリース

Apache POI3.5beta4のserializeがエラーする。 - http://d.hatena.ne.jp/kensir0u/20090123/1232717566ようやくbeta6がリリースされます。 個人的には上記のバグが解消されてホッとしています。 他にも沢山のBug Fixがあるので、導入を検討されている方や導…

Strutsを使いながら実行したSQLを確認したりする方法

Java6以上だったら BTraceを使えばよし! https://btrace.dev.java.net/source/browse/btrace/docs/usersguide.html?rev=1.7

DI(Dependency Injection)の標準化とDIコンテナ不要論

最近、標準をめぐってなにかとDI(Dependency Injection)が話題ですが、 JavaではDIがかなり標準的な実装パターンとして認知されてきました。 ここで、パッケージとして標準化されるのであれば、もうDIコンテナを利用しないパターンも想定してもよいと思う。…

GCのGC

JVMはC++で記述されていると思うんだけども、 C++自体にはGC機構はないので、VM内部のメモリ管理はどうしているのだろうとふと疑問に思った。BohemGCというライブラリとかはあるみたいだけども。そういうGCライブラリ使ってるとすると、GC(Java用のGC)のGC…

継承によるパフォーマンス劣化の落とし穴

あるインターフェースを実装している異なる2つのクラスを生成し、 メソッドを実行する場合にメソッド呼び出しコストが増大する。 2つのクラスインスタンス生成でのバイトコードでの影響はほとんどない。 スタック位置が異なる。 ※javapで確認 推測になって…

verboseGCでの分析ポイント

JVMに "-verbosegc" オプションをつけて起動するとGCの情報が出力される。 その際に見る必要があるポイント。HotSpotVMの場合・GC後の最大ヒープサイズ 初期・最大ヒープサイズ調整の一因とする。 ・GC実行時間 パフォーマンス考慮の一因とする。 ・GCでの開…

APサーバーでパフォーマンスチューニングするときに考えるポイント

APサーバーを利用したシステムでパフォーマンスチューニングを行う際に 以下の箇所を考えると良い。 ・スレッドプール スレッド生成にコストがかかるためプールする。 ・コネクションプール コネクション接続にコストがかかるためプールする。 ・キャッシュ …

G1GCについて

Java7からG1GCが導入されます。現在のJavaでは世代別GCがメインアルゴリズムで、ヒープ領域を多量に使用します。 これは、源流のCopyingGCの欠点(※コピー元とコピー先が必要)でもあります。 そこで、このCopyingGCの多ヒープ領域確保を少なくした試みがG1G…

Jave言語について!?

これは真実なのか!?http://ci.nii.ac.jp/naid/110000117827/あるならあるで驚きだけども、無いなら無いで誰も気づかないのが驚き。

JavaにおけるGCの種類とオプション

Java6でのGCの種類とオプションを調べてみた。 オプション 内容 デフォルト -XX:+ScavengeBeforeFullGC ScavengeGCとFullGC デフォルト -XX:-UseConcMarkSweepGC ConcurrentMarkAndSweepGC -XX:+UseParallelGC ScavengeGCを並列処理 デフォルト -XX:-UsePara…

Java誕生の歴史

Javaの誕生のお話1.パトリック・ノートンというサンの社員が辞表を提出する際に会社の不満とやりたいことをぶちまけたメールを社長へ提出。 2.ノートンのやりたいことを実現するプロジェクト「Greenプロジェクト」発足、ノートン、ジェームズ・ゴズリン…

Biased Lockingのパフォーマンス効果

Java6ではデフォルトでBiased Lockingが組み込まれています。 Biased Lockingとは同一のスレッドからのロック取得コストを低減させる仕組みです。 通常はスレッド中のオブジェクトの状態として、非ロック状態とロック状態を持つ。 その他、GC回収待ち状態な…

Javaは遅い!?

http://www.theserverside.com/news/thread.tss?thread_id=54590宗教戦争的な様相ですね。 自分も最近作ったプログラムのパフォーマンスが芳しくなかったので凹んでるとき、この記事をみて、危うくJavaのせいにしようとしました(笑)Swingでクライアントア…

JavaVM 3rd Edition Specドキュメント ドラフトリリース

http://blogs.sun.com/abuckley/entry/draft_of_the_java_vmこれは要チェックですね。

Jettyにディレクトリトラバーサルの脆弱性

いまさらですが、Jettyにディレクトリトラバーサルの脆弱性が見つかったそうです。参考http://www.kb.cert.org/vuls/id/402580

Javaでの配列境界チェックとは

Javaでは配列に値を代入する際に境界チェックを行う。 これがなければもう少しパフォーマンスが向上するのだけども、セキュリティの観点からチェックは必要なのである。 Javaでは配列のサイズを求めるときにlengthという属性を参照すればよい。 これは配列の…