java
AdoptOpenJDKのJava8にOpenJFX8を自分でビルドして組み込んで使う方法 ※ AdoptOpenJDK 8u181、Zulu 8u181の両方でも改めて試してみたが問題なく動作している。(2018/10/30) ※ (2018/11/21追記) Amazonが提供するビルド済みOpenJDKであるAmazon Corretto 8 (A…
JavaFXをJava11でビルドして使えるようにする方法 ※ 2018/09/26修正: Java11(build 11+28) + OpenJFX11で試したバージョンに差し替え 要旨 Java11から、JavaFXは分離されるので、Java11(OpenJDK11)でJavaFXを使うにはどうしたらよいのか? 結論としては、以…
Javaのジェネリック型引数をリフレクションによって取得する方法 概要 Javaは、Java1.5からジェネリクス(総称型)が利用可能になったが、1.4以前のコードとの互換性のためにイレージャ(Erasure)とよばれる手法をとっている。 簡単にいうと、イレージャとは、…
Java8から利用可能になったCompluteableFutureとは、他言語におけるDeferredとかPromiseパターンといわれるものと同等のものであり、これにより並列処理を直列的に記述できるようになる。(つまり超便利。) 基本的な使い方 もっとも簡単な使い方としては、Com…
概要 CDIで、@Dependentなクラスを定義し、利用する側のクラスのフィールドで@Injectするときに、任意のパラメータを渡したい。 @Dependent public class Foo { @Inject private AnyService srv; private String arg; public void setArg(String arg) { this…
概要 前回では、ヒープ上に確保したByteBufferと、ダイレクトバッファとして作成したByteBufferでのデータの読み取りパフォーマンスを比較した結果、圧倒的にダイレクトバッファが速いことが分かった。 しかし上記ベンチマークは、あえてByteBuffer単体での…
(ヒープおよびダイレクトバッファによるByteBufferの性能差、およびUnsafeとのパフォーマンスも比較するよ!) (とりあえず計測結果を先に知りたい人は結論を見てね!) (ファイルのシーケンシャルリードを含むダイレクトバッファの使い方やパフォーマンス比較…
動機、なぜJavaFXでアプリを作るのか? Javaには、Swingという、十分に成熟しておりパフォーマンスも悪くないUIライブラリがある。現状、普通に使っている分には何の不自由もない。また、Swingは今後発展することはないとはいえ、(すぐに)廃止されるわけでは…
ForkJoinPoolにおけるタスクのブロッキングの方法 先にForkJoinPoolの特性や使い方について調べたが、「同期処理」や、単純な「待ち」を含むタスクが、どのようになるのか調べてみた。 結論からいうと、同期をとる必要があるタスクは、Java8でサポートされる…
Fork/Joinとは? JavaSE7でサポートされるjava.util.concurrent.ForkJoinPoolは、ExecutorServiceの一員であり、一見するとThreadPoolExecutorに似たようなものに思えるが、実際は全く別の、異質のものである。 ForkJoinPoolは、ありていに言えばWork-steali…
概要 最近アップデートされたJava7u51を使用したところ、 Apache Derby 10.10のネットワークサーバを起動しようとすると、以下のような例外が発生して起動できなくなっていた。 db-derby-10.10.1.1-bin\bin>startNetworkServer Fri Feb 14 13:15:27 JST 2014…
概要 先の記事でEL2.2でのアプリケーションからの利用方法について調べたが、 ついでにEL3.0についても調べてみることにした。 利用方法も更に簡単になっており、便利で興味深い機能も増えている。 EL3の特徴 EL3.0では、EL2.2から文法を大幅に拡張している…
概要 JavaのJSP/JSFでは「EL式」という簡易な式言語を用いてオブジェクトの連鎖を評価することができる。 たとえば、"${foo[bar].baz}"というEL式では、fooという配列またはリストから、添え字を示すbarの位置のあるオブジェクトのbazというプロパティを評価…
CachedRowSetとは? CachedRowSetとは、データベースから取得したResultSetをメモリ上に保持する形にしてオフラインでも扱えるようにできるJDBC標準の仕組みである。 Windowsでいうところの旧ADOのRecordsetオブジェクト、あるいはADO.NETのDataTableのよう…
概要 「Javaアプリケーション内から信頼できないかもしれないアドインコードをサンドボックスで実行するための方法」について、簡単なサンプルコードとともに、まとめてみたいと思う。※ 信頼できないかもしれない、という意味は後述。*1 セキュリティマネー…
Launch4jとは? Launch4jとは、JavaアプリケーションのExeラッパーを作成するツールである。以下よりダウンロードできる。http://launch4j.sourceforge.net/ このLaunch4jを使うことで、実行可能JarをExeファイルとして起動できるようにラップすることができ…
JDK1.6u10以降の新しいアプレットでは、 ファイルの読み書き、クリップボードへのアクセス、ローカルマシンのファイルのアクセスが可能になっている JNLP APIを使い、Java Web Startと同じ使用方法 サンドボックスは従来どおり有効、(ファイルアクセス等はユ…
新規データベース作成後の処理 Apache Derbyを埋め込みモードで使う場合、指定したパス上にデータベースが存在しない場合、接続URLのオプションとして、自動的に作成するように指示することができる。 たとえば、以下のような接続URLである。 DriverManager.…
記事が長くなりすぎたので分割しています。前記事は、こちら。 Derbyにおける自動採番の取得方法とシーケンスオブジェクト Apache Derbyは従来は、プライマリキーとしては「generated always as identity」を指定し、自動採番とする方法と、 SQL:2003準拠、O…
Apache Derby 10.9.1.0のアプリケーションへの組込方法と、ユーザー定義型とユーザー定義関数の使用例について記述する。 動機 昨今、アプリケーションのバックエンドにSQLite3などの軽量・組み込み型データベースが使われる例が非常に多くなっている。 PCの…
Apache DerbyにはGUIの管理ツールが標準では存在しない。 コンソール画面での対話ツールである「ij」で一通りデータベースの管理はできる。 これは、OracleでいうところのSQL*Plusみたいなものである。 DDLのようなものは、たとえばERツールで生成するなどし…
java.util.Propertiesを使う J2SE5以降のjava.util.Propertiesは、XMLファイル形式をサポートしている。 日本語などを使う場合も、昔ながらの native2ascii のお世話になる手間がなく、 デコードし直さなくても、ちゃんと人間が読める文字なので修正もらくち…
動機 たとえば、コレクションクラスを使っているのにジェネリックでないソースと、そのコンパイル済みのクラスファイルをもらったとする。 日付は2010年あたりになっている。 書き方や使っているクラスからみて、もともとは、かなり古いソースと見受けられる…
C#, C++, Objective-Cのラムダ(匿名関数)の基本的な使い方の覚え書きと、JavaSE7時点のラムダ相当のイディオムについての雑記。(※ プログラムの作用に主眼を置いて、単純に、Lambda ≒ Closure ≒ Block ≒ 匿名関数 という認識で書いてます。) C#4.0のラムダの…
動機 上記、Windows(C++)でのファイル監視方法を試したので、その流れで、ついでにJavaSE7以降からサポートされるようになったJavaのファイル監視のAPIを試してみる。 いきなり実験コード (JavaSE7 Update4 on Windows7 64ビット版) package fwatch_java7; i…
前回、Windows環境で、透過画像をクリップボードにいれる方法について実験したので、 今回は、Linux環境(Ubuntu10.04 + sun-java-jdk6)での実験を行う。(※2012/5/5追記、Ubuntu12.04 + OpenJDK7で簡単に試した結果を追記しました。)結論的にいうと、現在のLi…
Windows上のJAVA実行環境で、透過でない画像をクリップボードに設定するのは簡単である。単に、Transferableを実装したクラスでBufferedImageなど、java.awt.Image派生オブジェクトを返せば、それだけでOKである。たとえば、こんな感じに。 /** * クリップボ…
昨日の続き。 Mac OS Xには実行ファイルや、それに付随するリソースファイルなどをフォルダにまとめて、それらの複雑な階層構造を、あたかも1個のファイルであるかのように見せかける「バンドル」ファイルというものがある。 たいていのアプリケーションは1…
JavaSE6以降ではJavaアプリケーションの起動時にスプラッシュスクリーンを表示できるオプションが加わった。 これはアプリケーションのクラスがロードし終わるまえにJava実行ファイル側が表示してくれるものであるため、可能な限り早い段階で画面に表示され…
JavaアプリケーションをMac OS Xで動かすための注意点 Mac OS Xには、Apple謹製のJavaVMがあるので、動かすことが第一義であれば、通常のJavaのマルチプラットフォーム対策ができていれば良い。 基本的には特別な対策は必要ない。 さすがWrite Once, Run Any…