java - Realm.io - 在 Android 之外使用(在 Java 中)

标签 java android cloud realm

我正在考虑将我的 Android 应用程序从 Firebase DB 切换到 Realm.io。

根据我的阅读 - https://realm.io/docs/java/latest/#getting-started :

We do not support Java outside of Android at the moment.

对于这样一个(据说)成熟的库来说,这似乎是一个奇怪的限制。

我认为这可能会复杂化,例如自动测试,要求在设备/模拟器上运行测试,这会大大降低速度。

问题:

真的不能在Android之外使用吗?

这个限制的原因是什么?

真的有我想的那么糟糕吗?

如果我想让一些辅助服务器应用程序(用 Java 编写)在云端某处运行,例如AppEngine,连接到 Realm 数据库。是否排除了该选项?

有哪些解决方法,例如用于测试和服务器端 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 使用与 React-Native Realm API 相似(相同?)的 API。


您还可以在任何您喜欢的 Linux 或 MacOS 机器上免费运行 Realm Object Server (ROS)。

然后你可以使用sync 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 以反射(reflect) ROS 中的任何内容的“同步”Realm 也是一项付费功能。

目前Realm-Java基本上只支持Android。正如文档中所说。


至于通过 NodeJS API 与 Linux 上服务器端的本地 Realm 通信,当然可以。

For the latter purpose - is NodeJS server-side app supported?

NodeJS 能够写入 Linux 机器上的 Realms。可能还有 Mac 操作系统。

免费版仅限本地 Realm。付费版本是通过 ROS 同步 Realm 的东西。

关于java - Realm.io - 在 Android 之外使用(在 Java 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41576589/

相关文章:

php - 在 Multi-Tenancy 应用程序中创建预定作业

java - 为什么我在 Eclipse IDE 中找不到数据库资源管理器?

android - 如何在 Intent 中将字符串转换为在android中编辑文本框?

android - 基于云的安卓开发

android - 如何使用GDK在卡上显示静态 map ?

android - 如何在 Android 的 Web Intent 中启动本地 HTML 页面?

java - 尽管提供了高堆空间,但 JVM 内存不足

java - 一个模式不能包含两个同名的全局组件

java - 32 位和 64 位之间集合实现的差异,我们需要担心的任何陷阱?

java - 如何将json字符串转换为java对象