Codename One 是面向 Java 和 Kotlin 开发人员的移动优先跨平台环境。它可以将 Java 字节码编译为本机操作系统可执行文件(iOS、Android、UWP 等)。它是一个完整的移动平台,具有虚拟机、模拟器、设计工具(视觉主题/构建器/CSS)、IDE 集成、多个操作系统的端口等等。它通过可移植的抽象提供对底层本机操作系统代码(例如 Objective-C、C#、Dalvik/ART)的完全访问,从而实现 100% 代码重用。
与您在 Android 等中看到的模拟器不同,Codename One 使用模拟器。这意味着即使在调试时它也能快速启动。您可以享受 IDE 功能,例如实时代码重新加载以在运行时修改代码等。
这意味着更快的调试周期和更快的开发过程!
从大量设备“皮肤”中进行选择,以查看您的应用程序在特定设备上的外观。皮肤会考虑分辨率和设备密度等因素,以提供应用程序的像素完美呈现,就像在真实设备上一样。设备皮肤之间的切换几乎是即时的。
您可以在此处编辑和贡献他们自己的开源项目中的皮肤。
使用交互式 Groovy 控制台在运行时与应用程序的 API 进行交互。在应用程序运行时检查应用程序状态或尝试更改。
这使您可以调查问题并进行实验,甚至不需要重新编译的少量开销。
通过模拟器,您可以利用 IntelliJ 中的“重新加载更改的类”功能(在 NetBeans 中称为“应用代码更改”),以便您在 Java 源代码中所做的更改将立即应用到模拟器中已运行的应用程序。
请注意,这通常优于交互式控制台,但存在一些限制,例如添加方法/更改代码结构的能力。这些限制不适用于交互式控制台!
当您更改应用程序的 CSS 样式表时,更改会立即反映在模拟器中。这包括更改您的主题、图像、字体等。所有更改都会在保存时立即刷新,无需重新加载/刷新或任何类似的操作!
这使得设计应用程序样式的过程变得非常简单和快速。
使用强大的组件检查器浏览应用程序中的 UI 组件层次结构。使用此工具可以轻松找出额外填充的来源或为什么某些内容没有按照您想要的方式排列。您还可以在运行时更改组件的 UIID(选择器),以查看它如何影响 UI,并查看层次结构中的哪个组件映射到组件树(相当于 DOM)中的元素。
使用网络监视器查看您的应用程序建立的所有网络连接。当您试图找出 HTTP 请求对您不起作用的原因时,这个有价值的工具会派上用场。检查请求和响应的标头和正文。您甚至可以限制网络来模拟慢速网络连接。
使用测试记录器工具记录应用程序的单元测试。一旦开始录制,它会将您的交互保存到单元测试中,稍后可以回放以验证行为是否正确。
然后,您可以将记录的测试连接到 CI 流程,包括自动化设备测试。
Codename One 是一个成熟的开源项目,其根源可以追溯到 Sun Microsystems (2006),其中一个核心底层组件是在 Sun Microsystems 开发并开源的。您可以在此视频中了解其历史及其工作原理。
Codename One 应用程序的性能类似于本机应用程序,因为它们是真正的本机应用程序。
使用目标平台的官方构建工具将它们静态编译为本机二进制文件。
在本机不支持 Java 的平台(例如 iOS)上,应用程序的 JVM 字节码首先被转换为本机构建工具可接受的形式。在 iOS 上,应用程序的 JVM 字节码在真正的 xcode 项目中转换为 C 源代码。在 Android 上,由于原生支持 Java,因此无需进行此类转换。应用程序 jar 直接捆绑到 Android studio gradle 项目中,可以直接使用 Android SDK 构建工具进行构建。
您可以单击图像放大或在此处查看 PDF 版本。
提示:我们目前正在过渡到 Maven,并创建了一种新的、更简单的方法来创建项目。请访问 https://start.codenameone.com 立即开始。
关于代号一号有很多东西需要了解,这段 3 分钟的视频给出了非常简洁的高层视图。请注意,这里有关于 Eclipse、IntelliJ/IDEA 和 Netbeans 的类似视频:
Codename One 可以使用包含本机操作系统代码的第三方库轻松扩展。这里有这些库的详细列表 (cn1libs)。库列表是根据这个 github 项目自动生成的。
您可以在主站点了解有关 Codename One 及其功能的更多信息,并且可以在此处查看详细的文档和教程列表。
您可以在下载部分开始使用二进制文件和鸟瞰图。其他重要链接是:
注意:我们正在从 Ant 迁移到 Maven,这简化了从源代码构建的过程。有关旧版 Ant 构建说明,请参阅 Ant 快速入门。
本文和视频详细介绍了该设置。
重要提示:目前构建 Codename One 需要JDK 8 。您不能使用 JDK 11,因为某些子模块必须使用-source 1.5
和-target 1.5
来保持与部分工具链的向后兼容性。
git clone https://github.com/codenameone/CodenameOne
cd CodenameOne/maven
mvn install
这将在您的本地 Maven 存储库中构建并安装 Codename One。此过程可能需要一段时间,因为它会自动下载大小约为 1GB 的依赖项。
要从源代码构建原型项目,您应该查看 cn1-maven-archetypes 存储库并构建它:
git clone https://github.com/shannah/cn1-maven-archetypes
cd cn1-maven-archetypes
mvn install
现在 Codename One 已安装在本地 Maven 存储库中,您可以在项目中使用该版本而不是发布版本。可以使用 Codename One 初始化快速生成新的测试项目。
下载并解压项目后,打开其 pom.xml 文件并查找<cn1.version>
和<cn1.plugin.version>
属性。然后将它们更改为指向通过mvn install
安装到本地Maven 存储库中的版本。本地构建的版本通常是 SNAPSHOT 版本(例如 7.0.21-SNAPSHOT)。
获取和构建资源
$ git clone https://github.com/codenameone/CodenameOne
$ cd CodenameOne
$ ant
运行单元测试
$ ant test-javase
运行样品
Samples 目录包含越来越多的示例应用程序。这些示例并不是演示,而是如何使用 API 的示例。
您可以使用以下命令从命令行启动示例运行程序应用程序:
$ ant samples
Codename One 的 iOS VM 非常独特,而且也是开源的。您可以在此存储库的专用文件夹中阅读有关它的更多信息。
ParparVM 是一种独特的保守 VM,可将 Java 字节码转换为 C 代码。从而提供本机性能和访问,同时仍然提供安全网。这种方法是代号一号所独有的,对于未来的兼容性至关重要!
Apple 倾向于突然改变事物,例如 64 位支持、位代码等。由于 ParparVM 生成标准 Xcode 项目,因此任何这些结构转变都不需要更改代码。就好像您自己手工编写了该项目一样!
您甚至可以在 xcode 中打开生成的项目并直接在 iOS 设备上对其进行调试或分析。这提供了很多有用的信息,例如可读的调用堆栈和有价值/可操作的性能跟踪......
传统编译器在这些情况下会表现不佳。
Codename One 维护着 iKVM 的一个分支,它是 CLR 的 JVM。此修改后的端口允许我们在 Windows 10 设备上本机运行 Codename One 的通用 Windows 平台实现。
当您使用 codenameone 进行标记时,我们会在 StackOverflow 上提供支持,您可以在那里询问任何问题,我们会尽力做出响应。 StackOverflow 链接还可以作为优秀的社区驱动的常见问题解答,因为它确实将用户问题映射到答案。
Codename One 有一个讨论组,您可以在其中发布问题。然而,由于该小组的性质,我们试图限制对来源的讨论。讨论论坛的目的是为了更简单的使用,更复杂的源代码黑客/本机编译可能会在那里产生噪音。
感谢这些优秀的人(表情符号键):
比兹尔-彼得 | 莉安娜卡斯帕 | 谢尔盖代号一号 | 托马斯H99 | 哈维尔·安东 | 钻石 | 弗朗西斯科·加尔加尼 |
库托曼 | 拉姆塞斯托姆 | 马阿蒂努斯 | 杜兰克 | 迪耶0 | 卡洛斯韦尔迪耶 | 罗伯特·埃德尔曼 |
阿达尔伯特393 | 史蒂夫·汉纳 | 迪加普塞普 | 帕夫尼特·辛格 | 威普莱斯 | 杰米德夫 | 特里·威尔金森 |
贾努斯·汉森 | 雅科夫·格谢尔 | 迈克尔·蒙克 | 赛德尔 | 米格尔·穆尼奥斯 | 艾哈迈德·阿布马尔瓦 | 法比奥 |
皮奥特尔 | 马蒂亚斯湾 | 桑尼·萨诺夫 | 麦克西姆28 | 梁家伟 | 大卫·戴 | 尼克·普莱斯 |
阿纳夫·本·阿扎德 | 奥克塔维奥·E·阿尼诺 | 雅什丘疹 | 妮娜 | 费库纳特 | 伊米迪安多公司 | 大卫·普里马斯克 |
DB107 | 芦峰一光 |
该项目遵循所有贡献者规范。欢迎任何形式的贡献! ❤️