Dart/Objective-C 和 Dart/Java 之间的交互

Posted

技术标签:

【中文标题】Dart/Objective-C 和 Dart/Java 之间的交互【英文标题】:Interaction between Dart/Objective-C and Dart/Java 【发布时间】:2015-01-01 19:29:15 【问题描述】:

我读了一篇关于如何创建跨平台应用程序的非常有趣的文章:http://www.skyscanner.net/blogs/developing-mobile-cross-platform-library-part-3-javascript

但我更喜欢使用 Dart 而不是 Javascript,我想知道是否可以在 Dart/Objc 和 Dart/Java (android) 之间进行交互,与文章中显示的方式完全相同(运行 Javascript VM执行 javascript 代码)。

谢谢

【问题讨论】:

【参考方案1】:

您可以在 Dart 中编写代码并使用 dart2js 输出 JS 代码,然后将该 JS 代码放入 PhoneGap 或 Cocoonjs 以在 Android/ios 上获取它。

这篇文章似乎展示了它是如何使用 JavaScript 完成的。我确信它可以编写一个 Dart 移动跨平台库,但它还没有完成。

【讨论】:

问题在于 dart2js 将 dart 转换为不是“普通 js”,而是在 VM 可以解释的 JS 中。所以我不知道是否可以使用 dart2js。 是的,它不是最好的过程,但它是唯一的一个 atm。我可以确认 Cocoonjs 与我的 2d 飞镖游戏一起工作。您可能会得到不同的结果。 我在 Typescript 和 Dart 之间犹豫不决。因为能够从 Dart 调用 Javascript 的过程是相当长的。 你能发布一个相当长的 JS 互操作调用的例子吗? “不简单”的 JS 是什么意思。它可能不是很可读,但 dart2js 生成正常的 JS。 对于 JS 互操作调用,请查看我的 OP 上的 skyscanner 文章。 pastebin.com/25P8ugnS 正如您在 pastbin 上看到的,dart2js 创建的 Javascript 代码经过优化,比“常规” JS 执行得更快。但是不知道iOS/dart2js代码和Android/dart2js代码之间还能不能交互。【参考方案2】:

iOS 不允许在您的应用中包含第 3 方虚拟机。您可以访问的唯一 VM 是与 iOS 捆绑标准的 JavaScript VM。甚至 iOS 上的谷歌 Chrome 浏览器也以这种方式瘫痪(它们不能在 iOS 上包含 v8)。

【讨论】:

Dart 可以编译成 JS。如果 JS 可以,通常 Dart 也可以。 OP 说他想在 Dart VM 中运行 Dart,“就像 JavaScript 在 JavaScript VM 中运行一样”。 我在这里创建了一个更完整的帖子:***.com/questions/28223230/… 我想我们可以关闭这个并继续新的。

以上是关于Dart/Objective-C 和 Dart/Java 之间的交互的主要内容,如果未能解决你的问题,请参考以下文章

第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等

shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()

malloc和free,brk和sbrk和mmap和munmap的使用和关系以及内存分配的原理