Codename One有一种可选的 SaaS 方法,因此这可能(并且可能会)在未来发生变化以适应改进的架构。请注意,Codename One 还提供了离线构建的选项,这意味着有政策禁止此类云架构的公司仍然可以使用 Codename One,但会带来一些额外的开销/复杂性。这也意味着您可以免费使用它,而无需使用构建服务器。
目前在 Android 上,标准 Java 代码按原样执行。Java 8 语法在使用时使用所有平台的 retrolambda 进行翻译。这允许它与所有 Android 版本以及其他端口兼容。
在 iOS Codename One 上构建并开源ParparVM,这是一个非常保守的 VM。ParparVM具有并发(非阻塞)GC,它完全用 Java/C 编写。这实际上意味着在构建服务器上生成并编译了一个 xcode 项目,因此它就像您手动编写一个原生应用程序一样有效,因此可以为 Apple 所做的更改提供“未来证明”。例如,最近对 iOS 构建的 64 位和位码更改,ParparVM 无需修改即可符合这些更改。
过去 Codename One 使用XMLVM以非常相似的方式生成本机代码,但 XMLVM 解决方案对于 Codename One 的需求来说过于通用。
iOS 构建使用 xcode(Apple 官方构建工具)在云中的 Mac 上编译和签名。这使它们与 Apple 当前/未来的更改兼容,并允许开发人员在针对 iOS 的同时使用 Windows/Linux。您可以在此处阅读有关 ParparVM 与 iOS 兼容性的更多信息。
过去 Codename One 使用依赖 XMLVM 的 C# 翻译器支持 Windows Phone,但这不是一种理想的方法。请注意,转换为 C# 的 XMLVM 后端与以前用于转换为 iOS 的后端非常不同。Codename One 选择停止使用旧后端,因为它不如新的 UWP 后端强大,并且不符合微软向前发展和专注于UWP(通用 Windows 平台)的目标。
对于 Windows 10 桌面和移动支持 Codename One 使用 iKVM 以UWP(通用 Windows 平台)为目标,并在Codename One github 存储库中开源了对原始 iKVM 代码的更改。
请注意,UWP 构建是在云中的 Windows 10 机器上完成的,因此开发人员在构建原生 Windows 应用程序时可以使用 Mac/Linux 或更早版本的 Windows...
企业级订阅者可用的 JavaScript 构建目标使用TeaVM进行静态翻译。TeaVM 通过以一种相当精细的方式分解应用程序,为使用 JavaScript 的线程提供支持。为了支持复杂的 UI Codename One 使用 HTML5 Canvas API,它为构建应用程序提供了绝对的灵活性。
对于 Codename One 使用的桌面构建javafxpackager
,因为 Mac 和 Windows 机器都可以在云中使用,平台特定的性质javafxpackager
不是问题。
Codename One 的突出之处在于它采用“轻量级架构”的 UI 方法,使 UI 可以在所有平台上无缝工作,并且几乎完全用 Java 开发。它通过在“轻量级”中嵌入“重量级”小部件的能力得到增强。您可以在此博客文章中了解更多信息。请注意,此时对等互连正在经历一些改进,现在支持更复杂的用法,例如分层。
轻量级组件完全用 Java 编写,这允许开发人员在模拟器和 GUI 构建器中准确预览应用程序。
Codename One 通过使用大多数平台的原生游戏 API(例如 iOS 上的 OpenGL ES)进行绘图来实现快速性能。
Codename One 背后的核心技术都是开源的,包括 Codename One 自己开发的大部分东西,例如ParparVM,还有完整的库、平台端口、设计器工具、设备皮肤等。您可以在此处了解有关使用 Codename One 资源的更多信息。
仅供参考,此答案的作者 Shai Almog 是 Codename One 的首席执行官。