Java

Mac OS X(Mountain Lion)におけるJavaのインストールディレクトリ

バージョン情報で表示されているJavaのランタイムはどこを指しているのだ?? 答えは /Library/Java/javaVirtualMachines/だった。 バージョン違いのランタイムもここにインストールされるようだ。従ってJava7インストール直後のJAVA_HOME環境変数を設定するの…

Java7

取り急ぎインストールしたが、これで完全に大丈夫とは言えないのが今のJavaの状況。 Macのも同じように上げておこう。 ということでMacも上げてみた。しかし腑に落ちないことが。 インストール後はこのように勝手に最新になっているのだが、パスを見てみると…

Javaゼロデイ脆弱性

いきなりJavaのコンソールが出た後にNortonが反応したのですぐに解って良かった。Trojan.Maljava!gen26とのことなので対策日が1/13の最新のもの。 Trojan.Maljava!gen26 | シマンテック 日本一昨年から流行ったもののようにexeに仕込まれているのとは違って…

生成されるアクセッサフィールドのプレフィクスを指定する

以下、すぐ忘れるので備忘のためにメモ。Eclipseはフィールドのアクセッサ(ゲッター/セッター)を自動生成することができるが、そのデフォルトはフィールド名をそのまま用いて生成される。なので、以下のようにフィールドにプレフィクスを付けると生成される…

GWTの国際化 (その3)

さて、前回から随分と間が空いてしまったが、GWTの国際化、次の方法は「動的な文字列を使った」国際化だ。この方法はGWTが提供する辞書クラス(com.google.gwt.i18n.client.Dictionary)でjavascript中のオブジェクトの定数値を読み込むのだが、、その方法は非…

AndroidでAOP?

Twitterで@esmasuiさんにこんなものを教えて貰って愕然とした。 android-aspectj/ Google Codeご存知の通りAndroidアプリケーションはJavaVMではなくDalvikで動作しており、AspectJが吐くJavaバイトコードはDalvik上では動かない。果たしてどのような実装に…

プロパティエディタプラグイン

プロパティエディタ開発プロジェクト プロジェクト日本語トップページ - SourceForge.JPJavaのプロパティファイル(.properties)は文字セットISO-8859-1又は\udddd表記(ASCII表記)されたUnicodeしか扱えないため、日本語を入力する場合はnative2ascii等のツー…

gwt.xml

gwt.xml gwt.xmlはGWTアプリケーションにおいて非常に重要な設定ファィルである。 EclipseからGWTのプロジェクトを作成すると プロジェクト名.gwt.xmlという名前のXMLファイルが生成される。 TestEcho.gwt.xml <module rename-to='testecho'> <inherits name='com.google.gwt.user.User'/> </inherits></module>

GWT実行時のJVMプロキシ設定

GWTの初期化時にエラーが発生しているようだ。 例外(Eclipseのログより) Initializing AppEngine server Unable to access http://appengine.google.com/api/updatecheck?runtime=java&releas e=1.4.3&timestamp=1300990822&api_versions=['1.0'] java.net.C…

GWT事始め

Google Web Toolkit Google Web Toolkit - Google Code Google Web Toolkitは通常であればhtmlに加えてjavascriptやCSS(cascading style sheet)を組み合わせて作ることを強制される動的なページ、リッチなUIを持つページをjava言語により記述することができ…

ゴスリング氏Googleへ

Next step on the road... : On a New Road暗いニュースが多かったJava界隈では久しぶりに期待が持てるニュース。 氏は2010年にOracleを辞めており、その後の去就が話題になっていた。“Javaの父”ゴスリング氏がGoogle社員に James Gosling, Java's Godfather…

CA証明書とandroidの危うい関係 4

java(SDK)で実装する Apache HttpClientではなくjavax.net.ssl.HttpsUrlConnectionを使った例も載せておく。 同クラスを使う場合、TrustManagerFactoryとKeyManagerFactoryという二つのファクトリを用意しなくてはならず、若干煩雑になる。 HttpsUrlConnecti…

CA証明書とandroidの危うい関係 3

では端末にインストールされていない証明書をandroidアプリケーションで利用することは不可能なのだろうか? 否。 具体的にはHTTPS(SSL)通信で使用するソケットを生成する際に、通常使われるCA証明書の代わりに自ら用意した証明書を使って生成してやれば良い…

CA証明書とandroidの危うい関係 2

Nexus oneでエラーでNexus sでエラーが発生しない違いはどこにあるのだろう、ということでandroid端末にインストールされているCA証明書を覗いてみよう。androidのCA証明書はBouncy Castle※形式のキーストア(cacerts.bks)として格納されているが、そのパスは…

CA証明書とandroidの危うい関係

Nexus one上で動作させているandroidアプリケーションからWebサービスを利用するために、とあるサーバそれもSSLサーバに接続しようとした所、以下の例外が発生する。 javax.net.ssl.SSLException: Not trusted server certificate. 同じサーバにWebブラウザ…

UCDetector

未使用のコードを検出したいと考えたことは無いだろうか。Androidアプリケーションの配布サイズはそのパッケージ(.apk)に含まれるクラスとリソース(特に画像)に関連があるので、パッケージングする際にできるだけコードサイズはスリムにしておく必要がある。…

アノテーションプロセッサ処理時の例外をソースコードに吐く

アノテーションプロセッサ処理中にエラー等をシステム側(Eclipse側)に通知したい場合は、通常の標準出力にプリントしても駄目で、代わりにMessagerクラスを使う。 @Override public boolean process(Set annotations, RoundEnvironment roundEnv) { Messager…

アノテーションプロセッサの処理順

apt(アノテーションプロセシングツール)はJava6以降、javacの機能のひとつとして処理されるようになった。javac - Java プログラミング言語コンパイラ - 注釈処理javacはコンパイル時に"-processorpath"で指定した検索パス上に以下の構成ファイルを見つける…

APTで生成したソースコードの上書きを抑制できないかなぁ

Java6にはGenertedという名前のアノテーション(javax.annotation.Generated)があり、ツールが生成したコードにはこのアノテーションでマークすることが推奨されている。(date属性はISO 8601 規格に準拠する必要がある) @Generated( value={"org.kazzz.annota…

ADT Logcatの日本語文字化け直る!

この日記でも以前に採りあげたが、Eclipse ADTで使用できるLogcat Viewは日本語が文字化けする。それを避けるために皆コマンド(プロンプト)からUTF-8にコードページを変更してadbコマンドからlogcatを呼び出してい訳だ。 [Windows][Android]Logcatコマンドプ…

アノテーションの属性を取得時、配列型の属性が取得できない。

アノテーションプロセッサの便利さに、調子にのってXMLPullParserからPOJOを自動生成するための実装を行っている。対象のクラス又はインタフェースに以下のようなアノテーションを記述することで、予め決められた抽象クラスを継承しつつ、XMLのエレメントと1…

AndroidでもFindBugs

FindBugs™ - Find Bugs in Java Programs FindBugs第1回: コード品質を改善する - developerWorks Japan/Java technologyFindBugsはいわずと知れたJavaの静的解析ツール。バイトコードを解析しバグに陥るパターンとを比較してエラーとなる可能性の高いコード…

アノテーションプロセッサ(apt)をAndroidプロジェクトに適用する

アノテーションプロセッサを実装するための"Pluggable Annotation Processing API"はJava6から実装された機能であり、残念ながらAndroidプラットホームでは使えない。がしかしEclipse自体はJava6で動作しており、プラグイン、コンパイラ等は全てJava6上で動…

Apache Software FoundationがJCP(Java SE/EE Executive Committee)を脱退

The ASF Resigns From the JCP Executive Committee既に翻訳されている方がはてなにいらっしゃったので凄く助かった。 ASFがJCPから脱退 - karasuyamatenguの日記 10年以上続いてきたメインストリームとしてのJavaプラットホームは、終焉が近いかもしれない。

Eclipseでapt (Annotation Processing Tool)をデバッグする方法

Java6で導入されたPluggable Annotation Processor APIとそれを利用するためのAnnotation Processing Tool(以降APT)はJava5の頃よりも格段にその開発が簡略化されているが、通常のコードと違いコンパイル時に動作するため、デバッグの方法は無い(と思ってい…

Pluggable Annotation Processing APIとAndroid

今日のエントリは@vvakameさんのTwitterでの一連の呟きから閃いて書いた。AndroidはJava言語とその周辺の環境を利用して開発する。Java言語は元々プリプロセッサを持たず、お世辞にもリッチとはいえないビルド環境※のお陰で、ランタイムに全ての処理を行うよ…

Android on IDEA

例えば比較的性能の低いPCで、複数のプロジェクトをまたがって開発する場合のビルドの遅さとか、時々Eclipseがすごく嫌になる時がある。かといってチームで開発することを考えるとコマンドラインだけで全て通すのはきつい。Eclipse以外のIDE、それもAndroid…

コミュニティとコミッティー

既にご存じの人も多いと思うが、ダグ・リーがJCP(Java Community Process)を退会したそうだ。Java、JCPメンバーとOracle見解の相違で離脱あり | エンタープライズ | マイコミジャーナル Java の仕様策定を行う JCP のメンバーが離脱 - スラッシュドット・ジ…

Apple Deprecates Java

今日はネタが無いなと思っていたら、Twitterにてこんな呟きを見たのでびっくりしてソースを確認することにした。 Apple Deprecates Java - InfoQ どうやら本当らしいぞ。 というか記事ではOracleのJavaを捨てるのか、Java自体のサポートを終了するのかちょっ…

アノテーションは難しい

Javaのアノテーションはインタフェース扱いでクラスとして扱えない、継承ができない等、Java言語の型としては不完全なため、扱いに苦労する。また、いろいろな書き方ができるため、自己流になりがちだ。 何日か前のエントリでも書いたが、やりがちなのはアノ…