我正在考虑从我的Android应用程序切换到Firebase数据库到Realm.io.
从我读过的内容 – https://realm.io/docs/java/latest/#getting-started:
We do not support Java outside of Android at the moment.
对于这样一个(据称)成熟的库来说,这似乎是一个奇怪的限制.
我认为这可能会使问题变得复杂,例如自动测试,要求在设备/仿真器上运行测试,减慢很多事情.
问题:
难道它不能在Android之外使用吗?
这种限制的原因是什么?
它真的像我想的那么糟糕吗?
如果我想在云中的某个地方运行一些辅助服务器应用程序(用Java编写),例如,该怎么办? AppEngine,用于连接领域DB.该选项被排除在外吗?
那里有什么变通方法,例如用于测试和服务器端Java?
对于后一个目的 – 是否支持NodeJS服务器端应用程序?
解决方法:
That seems like an odd limitation for such a (supposedly) mature library.
如果考虑到Realm提供自己的本机核心以及为Android NDK编写的JNI包装器这一事实,这并不是一个奇怪的限制;并且还没有脱离它以使其与平台无关,因此例如在某些地方依赖于特定于Android的东西 – 例如,通知,使用“Looper”作为其特定的事件循环实现.
从技术上讲,the realm-java
binding has plans to support Java outside of Android, but it currently does not.你应该更多地考虑它 – 就像realm-android而不是realm-java.
Realm-Core当时还不支持UWP和Windows,尽管现在realm-dotnet项目也适用于Windows.即便如此,从Android分离Realm-Java的实现也很困难.
I’m thinking that this could complicate e.g. automatic testing, requiring tests to be run on device/emulator, slowing things down a lot.
为了测试特定于Realm的行为,是的.
使用单元测试来测试应用程序中的其他内容,没有.你只需要正确的设计,我想有些嘲笑.
Is it really the case that it cannot be used outside of Android?
它适用于iOS和Android作为本地数据库.
从this article from Nov 16 2016开始,它也可以在Linux上作为本地服务器端数据库工作,通过NodeJS使用类似(相同的)API到React-Native Realm API.
您还可以在任何您喜欢的Linux或MacOS计算机上免费运行Realm Object Server(ROS).
然后,您可以使用同步API连接到所述ROS,并自动将与用户关联的Realm同步到ROS.这就是你可以免费使用ROS做的事情.
使用Enterprise Professional Edition及其价格,您还可以(在服务器端)读/写Sync Realms,并通过NodeJS Realm API监听改变Sync Realm的事件.
Is it really as bad as I think?
这取决于你自己的解释.
What if I want to have some auxiliary server app (written in Java) running somewhere in the cloud, e.g. AppEngine, to connect to the realm DB. Is that option excluded?
您的Java应用程序当前无法与服务器端的Realm通信.
仅限NodeJS.
即使这样,“同步”领域自动更新设备之间的所有数据到ROS以反映ROS中的任何内容都是付费功能.
基本上,Realm-Java目前仅支持Android.正如它在文档中所说的那样.
至于通过NodeJS API在Linux上与服务器端的本地域进行通信,请确保继续.
For the latter purpose – is NodeJS server-side app supported?
NodeJS能够在Linux机器上写入Realms.可能也是Mac OS.
免费版仅限本地Realm.付费版本是通过ROS同步Realm的东西.