速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

前 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:022407
用户头像

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

关注

评论

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

AfterShip APP 项目数据驱动的演进

AfterShip

数据库 数据 数据驱动

数据大屏rem适配方案

CRMEB

消费医疗门诊的数字化运营

boshi

随笔杂谈

WePack —— 助力企业渐进式 DevOps 转型

CODING DevOps

统一管理 WePack 制品管理 研发构建产物 安全管控

五分钟,让你明白MySQL是怎么选择索引《死磕MySQL系列 六》

咔咔

MySQL MySQL高级 索引选择而

和12岁小同志搞创客开发:手撕代码,做一款温湿度检测器

不脱发的程序猿

少儿编程 智能硬件 温度传感器 创客开发 Arduino

Camtasia混音教程

淋雨

Camtasia

底层逻辑:变化背后的不变

石云升

读书笔记 28天写作 12月日更

架构训练营-模块一作业

伊静西蒙

ReactiveNetwork库时如何实现网络状态监听的

Changing Lin

12月日更

国产分布式数据库StarDB核心技术大揭秘 一:内核分解之数据分片

京东科技开发者

数据库

国产分布式数据库StarDB核心技术大揭秘二:智能运维管控

京东科技开发者

数据库

Go语言学习查缺补漏ing Day5

恒生LIGHT云社区

golang 编程语言

以容器的方式运行极狐GitLab Runner

极狐GitLab

Docker runner 极狐GitLab

WAVE SUMMIT+2021为开发者准备的“小心思”,你get到了吗

科技热闻

2022年,RPA的5大发展趋势

金小K

区块链 AI RPA 机器人流程自动化 人工智能「

库存管理系统到底有什么作用?

低代码小观

CRM 企业管理系统 ERP 库存 CRM系统

Python Qt GUI设计:如何调整组件布局比例?(拓展篇—1)

不脱发的程序猿

Python PyQt GUI设计 上位机 调整组件布局比例

基于云的技术架构设计实践-第4篇

hackstoic

运维 云原生 签约计划第二季 业务运维

Linux一学就会之Centos8系统进程管理 ps管理进程

学神来啦

Linux 运维 linux一学就会 uptime centos8

百度智能云与英特尔携手举办2021 EdgeX中国挑战赛成功落幕

百度大脑

人工智能

你知道敏捷团队的迭代目标达成率该是多少吗?

Scrum中文网

Scrum 敏捷开发 研发管理 内容合集 迭代管理

6000字,详解数据仓库明星产品背后的技术奥秘

百度开发者中心

数据库 大数据

新思科技推动DevSecOps落地,帮助企业走出“安全孤岛”

InfoQ_434670063458

DevSecOps 新思科技 软件安全

MySQL锁的分析实战

卢卡多多

28天写作 MySQL 数据库 锁分析 签约计划第二季 12月日更

Android C++系列:Linux网络(一)网络模型

轻口味

android 28天写作 12月日更

元宇宙与电信运营商

CECBC

开源demo| 智慧协同让企业更便利

anyRTC开发者

音视频 智慧协同 开源demo 远程协助 远程勘查

如何避免产品Backlog的这七个常见错误

Scrum中文网

Scrum 敏捷开发 研发管理 需求管理 内容合集

和12岁小同志搞创客开发:手撕代码,做一款密室自动门

不脱发的程序猿

少儿编程 传感器 智能硬件 创客开发 Arduino

Web3.0时代的社交网络会有哪些新变化?

CECBC

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