写点什么

前 Sun 开发人员为 Android,iOS 等其他移动平台提供 JAVA 的 WORA 支持

  • 2012-09-24
  • 本文字数:2702 字

    阅读完需:约 9 分钟

2012 年,在以色列出现了一个名为 Codename one 的公司,该公司旨在生成一种新的 Java SDK,该 SDK 将允许 Java 开发人员通过一个单一的代码库就能为包括 iOS,Android,BlackBerry 和 Windows Phone 等一系列的移动设备编写本地应用。对于 iOS,Codename one 通过自己的云服务器先将 Java 代码转换成 C 或者 Objective C 代码,然后再将转换后的源代码编译成本地应用程序。这使得利用 Java 来编写 iTunes 兼容应用成为可能。

Codename one 的两大创始人分别是 Chen Fishbein 和 Shai Almog。Fishbein 是 Java ME 标准用户界面工具——Lightweight User Interface ToolKit(LWUIT)的创始人和首席架构师,并且他还开发了当下最成功的 Java ME 开发工具之一的 Sprint Wireless ToolKit。

该平台现正处于 Beta 测试阶段,InfoQ 下载后进行了测试。这个过程花费了很长的时间。为了构建代码,需要将他们基于云服务的网址添加到代码库中。代码将被上传到该服务器并进行编译,然后生成一个二维码(QR code),通过该二维码你可以下载并安装最终的程序到设备中。出于好奇,为了更多的了解该公司,我们采访到了该公司的联合创始人兼 CEO Shai Almog 先生,询问了一些关于他们最新发布对 Windows Phone 提供支持的事宜。

InfoQ:你好 Shai,这个想法由来已久了。这真的是一个全平台通用的 Java 环境吗?

Almog:Java 不仅仅是一个虚拟机,它也是一个统一的堆栈,一系列的工具集,实际上更是一个完整的 Java 生态圈。Java 的意义在于它的一触即发。即便是 Android,也需要一套不同的流程,一套不同的工具集以及一个针对不同配置的的模拟器。这样以来,我们反而失去了“一处编译,到处运行(WORA,Write Once Run Anywhere)”的优势。

InfoQ:对于不同的环境需要不同的修改吗?

Almog:不完全是,Codename one 为不同的平台提供统一的 API 支持,并将它们直接集成到 Java 环境中,通过一个统一的环境来解决所有不同的细节问题。

InfoQ:是否为每一个平台都配置了相应的 JVM?

Almog:不,这取决于平台。对于 Android,我们主要还是使用 Dalvik 虚拟机。但是对于没有 Java 环境的 iOS 平台,我们就将 classes 文件翻译成 Objective C 的代码,并且使用 Boehm 的垃圾回收器。该回收器能运行 Java 代码,但他并不是真正意义上的 Java 虚拟机。在 RIM 和其他平台上,我们通过平台上现有的有限 Java 子集特性来进行编译。这样就可以获得跟 Java 一样的 WORA 体验了。

InfoQ:你们试图在每个版本的发布中都对所有平台的所有特性都进行支持吗?

Almog:我们在尽力,但由于底层设备的变化,通常情况下很难达到。SQL 就是一个很好的例子,开发者都想使用它,但是一些低端的设备并不支持。开发者可以查看每个特定环境下的支持情况。我们的策略是提供一个尽量通用的集合,并尽可能地完善它。

InfoQ:我需要一些真实的设备来进行开发吗?

Almog:理论上是不需要,但是你不能仅仅通过鼠标来体验应用程序;你需要真实的拿着你的手机并且感受它来获得准确而真实的性能和使用感受。我们就因为一些版本上的细微变化而使用不同的 iPad。

InfoQ:对于这么多不同的 Android 版本,它实现起来应该比较困难吧?

Almog:实际上 iPhone 更困难。Apple 在不断的变化,在 4.2 上运行的方式可能在 4.3 上就是另外一种完全不同的做法。此时你会发现一切都运行不起来了。Android 虽然有很多的版本,但是他们通常很少会有破坏性的改变,所以,差异并不是很大。

InfoQ:应用程序的使用者需要安装什么特定的程序吗?

Almog:不需要,一切均包含在应用中。这可以帮助我们保持稳定性我们保持的很稳定的原因是因为我们不支持一些移动的虚拟机目标。不同版本的设备差异化很大,但是我们只关注各个版本之间的兼容性问题,如此一来,开发者们也不需要去关注它了。

InfoQ:对于 Java 开发者来说,学习曲线是怎样的?

Almog:这其实相当的简单。对于大部分的 Swing 开发者来说,跟基于 XML 的 Android 比起来,他更像是 Swing 的开发方式。你可以使用内置的调试器,这里没有 APK 文件,你也不需要等待模拟器启动,我们的模拟器在每次运行的时候就能立刻启动起来。

InfoQ:有些人说 Swing 有点呆滞,并没有原生 Windows 应用的那种用户体验。你们的平台有什么好的做法来使他们看起来跟时尚一些吗?

Almog:Swing 的界面是很难定制的,由于它是和 JDK 的版本进行绑定的,所以不能在外观和体验上跟操作系统保持一致。Codename One 允许在组件模型上做深度的风格和主题定制,而且因为我们是 SaaS 和 OpenSource 的成员,我们可以不通过 Sun/Oracle 缓慢的升级流程,而独自在应用程序的体验上保持不断更新。这样就能保证一个时尚的用户体验。

InfoQ:对 3D 图像的支持如何?

Almog:很遗憾,对于这一点,我们目前还不支持游戏类的开发。但是相信在未来可能有所改观。

InfoQ:那对于那些设备特定特性的支持呢,比如 I/O,GPS,摄像头,音频等等?

Almog:我们都支持这些基本的 API,我们正在开发手势操作,并且现在有些已经可以支持了,但是如果你需要一些我们并不支持的特性,那么我们可以给你提供本地集成。你可以定义接口,然后我们的插件会为你的设备生成本地代码,这样你就可以调用那些本地功能了。

InfoQ:产品是如何收费的?

Almog:基本版是免费的,而且我们会一直这么做下去。回报社区是非常重要的。每个月我们会为除了 iOS 以外的其他平台提供 100 次的构建服务。如果你是本地构建的话,你可以随意构建,但是我们的构建服务器限制你只能进行 100 次构建。iOS 平台被我们限制成一个月只能进行 5 次构建,因为对于我们来说,每一次的构建代价都是相当昂贵的。你还可以每个月花费 9 美元,以获得不限次数的构建。我们还为一些额外的特性提供了更多的定价方案,比如宕机保护。

InfoQ:你们的文档和支持做的怎么样?

Almog:《开发指南》是我们邀请社区帮忙编写的一个 100 多页的 Google 文档。我们也维护了一份详细的 JavaDoc 并且花费了大量的时间在维护 Google Group 邮件列表。

InfoQ:看起来你们好像在做一件伟大的事情啊。那你们下一步有什么打算呢?

Almog:马上就会有很多好消息了。到九月下旬的时候,对 Windows 设备的支持将会开放。届时我们将添加应用内的支付功能,以及针对客户端和模拟器开放更高级的 API,提供给开发者更多的模版。而且我们刚刚公布了同 Vserv 的合伙计划,这样开发者在不改变任何代码的情况就能添加广告进自己的程序。

随着支持多移动平台的公司越来越多,Codename One 可以帮助那些开发更多新应用的公司提高市场占有率和利润。该 SDK 可以在其官网上进行下载。

查看英文原文: Ex Sun Developers Bring WORA Java Support to Android, iOS, and Other Mobile Platforms

2012-09-24 05:022403
用户头像

发布了 31 篇内容, 共 85067 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

存储拆分后,如何解决唯一主键问题?

小小怪下士

Java 程序员 后端 uuid

GitHub神坛变动!10W字Spring Cloud Alibaba笔记,30W星标登顶第一

做梦都在改BUG

Java 微服务 Spring Cloud

ChatGPT被开发者嫌弃?真正的用户群体出现

Onegun

人工智能 ChatGPT

国内开源生态发展现状:开源基金会与开源组织 | 雨林开源行

开源雨林

Linux 开源 基金会 OSPO

开心档之Bootstrap4 自定义表单

雪奈椰子

bootstrap 开心档

AI不仅造就了ChatGPT,也重新定义了模糊测试

云起无垠

模糊测试

【ECCV 2022】TeSTRa:稳定的流式视频识别

Zilliz

计算机视觉

如何使用 NFTScan NFT API 检索单个 NFT 资产

NFT Research

API NFT

赛意信息荣获2022年深信服优秀ISV合作伙伴奖 强强联手赋能企业再升级

科技热闻

openGauss内核分析(四):查询重写

openGauss

Cadence Allegro如何通过Excel表格创建元器件?

华秋PCB

科普 硬件 元器件

数仓专家面对面 | 为什么我选择GaussDB(DWS)

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

【漏洞发现】|多个严重CVE漏洞被发现,系内存类安全漏洞

云起无垠

漏洞 Fuzzing

万物皆可集成资源包!低代码集成系列一网打尽

葡萄城技术团队

openGauss社区十一月运作报告

openGauss

基于图数据库 NebulaGraph 实现的欺诈检测方案及代码示例

NebulaGraph

图数据库 反欺诈 安全风控

实用指南:如何在Anolis OS上轻松使用 Kata 安全容器?

OpenAnolis小助手

容器 安全 操作系统 龙蜥社区 kata

横空出世!IDEA 版 API 接口神器来了,一键生成文档!

Liam

Java 后端 IDEA Java 分布式 API文档

设计原则 — L 里氏替换原则

Lemoon Can

SOLID 设计原则 SOLID原则 里氏替换原则

云小课|MRS基础原理之Flink组件介绍

华为云开发者联盟

大数据 华为云 企业号 2 月 PK 榜 华为云开发者联盟

一文详解SpEL表达式注入漏洞

华为云开发者联盟

开发 华为云 企业号 2 月 PK 榜 华为云开发者联盟

兴业银行正式加入openGauss社区

openGauss

从混沌到清晰,阿里全球商品类目域建设思考

阿里技术

全球化技术能力

要想随时编码即刻创新,这个工具你需要一个

华为云开发者联盟

云计算 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

SpringBoot与Loki的那些事

做梦都在改BUG

Java Spring Boot 框架

阿里云 EMAS & 魔笔 :1月产品动态

移动研发平台EMAS

阿里云 App 低代码 移动研发

【我和openGauss的故事】openGauss的WDR报告解读

openGauss

C#/VB.NET 如何在 Word 文档中添加页眉和页脚

在下毛毛雨

C# .net word文档 页眉页脚

Java实现Http多次请求复用同一连接

做梦都在改BUG

Java HTTP

提升企业管理效率 从权限控制开始

力软低代码开发平台

前Sun开发人员为Android,iOS等其他移动平台提供JAVA的WORA支持_Java_Victor Grazi_InfoQ精选文章