Codename One 提供了一种可选的SaaS方法,因此未来可能会改变以适应改进的架构。请注意,Codename One还提供了一个离线构建选项,这意味着那些禁止使用云架构的机构仍然可以使用Codename One,但需要额外的开销和复杂性。它也意味着您可以免费使用它,而不必与构建服务器配合工作。
目前在Android上,标准的Java代码照常运行。在使用时,Java 8语法将使用retrolambda转换为所有平台。这使其与所有Android版本以及其他端口兼容。
在iOS上,Codename One构建并开源了ParparVM,这是一个非常保守的虚拟机。ParparVM具有并发(非阻塞)GC,并且完全由Java/C编写。这实际上意味着在构建服务器上生成并编译了一个xcode项目,因此就像手动编写本地应用程序一样,“未来可靠”适应Apple的更改。例如,针对iOS构建的最新64位和位码更改,ParparVM无需进行任何修改即可符合这些更改。
过去,Codename One使用XMLVM以非常相似的方式生成本地代码,但是XMLVM解决方案对Codename One的需求过于通用。
iOS构建在云中的Mac上使用xcode(官方的苹果构建工具)进行编译和签名。这使它们与当前/未来的Apple更改兼容,并允许开发人员在针对iOS时使用Windows / Linux。您可以在此处了解有关ParparVM与iOS兼容性的更多信息。
过去,Codename One曾使用一个基于XMLVM的C#翻译器来支持Windows Phone,但这并不是一个理想的方法。需要注意的是,将代码转换成C#的XMLVM后端与以前用于iOS转换的后端非常不同。Codename One选择
停止使用旧后端,因为它不如新的UWP后端强大,并且不能与Microsoft未来的目标相匹配,即集中关注
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,该API允许绝对灵活地构建应用程序。
对于桌面构建,Codename One使用javafxpackager
,因为在云中可以使用Mac和Windows机器,所以javafxpackager
的特定于平台的本质不是问题。
Codename One独特的地方在于采用“轻量级架构”来处理用户界面,使得UI可以在所有平台上无缝运行,并且几乎完全使用Java进行开发。它通过嵌入“重型”小部件到“轻量型”小部件中来增强功能。您可以在此
博客中了解更多相关信息。需要注意的是,目前正在进行一些改进,如
层叠式使用等。
轻量组件完全使用Java编写,这样开发人员可以在模拟器和GUI构建器中准确预览应用程序。
Codename One通过使用大多数平台的本地游戏API(例如iOS上的OpenGL ES)来绘制,实现快速性能。
Codename One背后的核心技术都是开源的,包括Codename One自己开发的大部分内容,例如
ParparVM,以及
完整库、平台端口、设计工具、
设备皮肤等。您可以在
此处了解如何使用Codename One的源代码。
提示:Codename One作者Shai Almog是Codename One的CEO。