我正在考虑从我的Android应用程序切换到Firebase数据库到Realm.io.
从我读过的内容 - https://realm.io/docs/java/latest/#getting-started:
目前我们不支持Android以外的Java.
对于这样一个(据称)成熟的库来说,这似乎是一个奇怪的限制.
我认为这可能会使例如自动测试变得复杂,需要在设备/模拟器上运行测试,从而减慢了很多事情.
难道它不能在Android之外使用吗?
这种限制的原因是什么?
它真的像我想的那么糟糕吗?
如果我想在云中的某个地方运行一些辅助服务器应用程序(用Java编写),例如AppEngine,以连接到领域数据库,该怎么办?该选项被排除在外吗?
有哪些变通方法,例如测试和服务器端Java?
对于后一个目的 - 是否支持NodeJS服务器端应用程序?
对于这样一个(据称)成熟的库来说,这似乎是一个奇怪的限制.
如果考虑到Realm提供自己的本机核心以及为Android NDK编写的JNI包装器这一事实,这并不是一个奇怪的限制; 并且还没有脱离它以使其与平台无关,因此例如在某些地方依赖于特定于Android的东西 - 例如,通知,使用"Looper"作为其特定的事件循环实现.
从技术上讲,该realm-java
绑定有计划支持Java的Android之外,但它目前没有.你应该更多地考虑它 - 而realm-android
不是realm-java
在这个时候.
Realm-Core当时还不支持UWP和Windows,虽然现在的realm-dotnet
项目也适用于Windows.即便如此,从Android分离Realm-Java的实现也很困难.
我认为这可能会使例如自动测试变得复杂,需要在设备/模拟器上运行测试,从而减慢了很多事情.
为了测试特定于Realm的行为,是的.
使用单元测试来测试应用程序中的其他内容,没有.你只需要正确的设计,我想有些嘲笑.
难道它不能在Android之外使用吗?
它适用于iOS和Android作为本地数据库.
自2016年11月16日本文以来,它也可以在Linux上作为本地服务器端数据库工作,通过NodeJS使用类似(相同的)API到React-Native Realm API.
您还可以在任何您喜欢的Linux或MacOS计算机上免费运行Realm Object Server(ROS).
然后,您可以使用sync API
连接到所述ROS,并自动将与用户关联的Realm同步到ROS.这就是你可以免费使用ROS做的事情.
使用Enterprise Professional Edition及其价格,您还可以(在服务器端)读/写Sync Realms,并通过NodeJS Realm API监听改变Sync Realm的事件.
它真的像我想的那么糟糕吗?
这取决于你自己的解释.
如果我想在云中的某个地方运行一些辅助服务器应用程序(用Java编写),例如AppEngine,以连接到领域数据库,该怎么办?该选项被排除在外吗?
您的Java应用程序当前无法与服务器端的Realm通信.
仅限NodeJS.
即使这样,"同步"领域自动更新设备之间的所有数据到ROS以反映ROS中的任何内容都是付费功能.
基本上,Realm-Java目前仅支持Android.正如它在文档中所说的那样.
至于通过NodeJS API在Linux上与服务器端的本地域进行通信,请务必继续.
对于后一个目的 - 是否支持NodeJS服务器端应用程序?
NodeJS能够在Linux机器上写入Realms.可能也是Mac OS.
免费版仅限本地Realm.付费版本是通过ROS同步Realm的东西.