Javaの最新版をwebサイトとMavenリポジトリでリリースしました。このリリースでは、従来のシグナルハンドラベースの暗号化実装を、すべての端末で動作する一般的な方式へ変更しています。新規のAPIとしてRealm.isEmpty()が追加されています。Realmの暗号実装はPOSIXシグナルハンドラに依存していました。シグナルベースのアプローチは、ソフトウエアとしてはとてもシンプルでエレガントなものです。ところが現実のAndroidの世界では、このシグナルベースのアプローチに起因する奇妙なクラッシュがいくつか発生していました。WebViewを提供し始めました。WebViewのv40には、Realmの暗号化機能とともに使用するとアプリケーションのクラッシュを引き起こすというバグがありました。詳細はこちらのissueコメントに書かれています。X等)では、シグナルハンドラが正しく動作しません。Androidでも発生していました。詳細はこちらのBugzillaページを参照してください。Xのように必要なAPIが正しく動作しない端末で動作させることはできませんでした。これらの状況をふまえ、Realmの暗号化実装のアプローチを見直し全面的に書き換えることにしました。その結果本バージョン(0.85.0)以降では、Realmの暗号化実装はあらゆる端末で動作するものになりました。すべての端末で暗号化が利用できるようになったので、RealmEncryptionNotSupportedExceptionのcatch節は不要になります。Realm.isEmpty()Realmが1つでもデータを含んでいるかまったく何も含んでいないかということをRealm.isEmpty()でチェックできるようになりました。非互換の変更RealmEncryptionNotSupportedExceptionは不要になったので、本リリースで削除されています。🎉Realm.executeTransaction()はトランザクション内で発生したRuntimeException例外を別のRuntimeExceptionにラップすることなくそのままスローするようになりました。発生した例外がそのままスローされるので、よりデバッグが行いやすくなります。トランザクション処理での例外発生時は、今まで通り自動的にトランザクションはロールバックされます。RealmQuery.isNull()とRealmQuery.isNotNull()について、関連をたどるクエリ(プロパティ名を.で連結した文字列)が指定されその最後の要素が他のオブジェクトへの関連である場合にスローされる例外がRealmErrorからIllegalArgumentExceptionに変更されました。subscription。