最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

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

关注

评论

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

JVM 内存模型、字节码、垃圾回收面试要点

escray

学习 面试 垃圾回收 字节码

一个空格引发的“救火之旅” - 记一次 SOFA RPC 的排查过程

阿里云金融线TAM SRE专家服务团队

30年技术积累,技术流RTC如何成为视频直播领域的黑马?

华为云开发者联盟

云计算 AI 5G RTC 华为云

5G边缘计算:开源架起5G MEC生态发展新通路

华为云开发者联盟

开源 5G 边缘计算 公有云 EdgeGallery

软件产品的创新与宇宙奇点大爆炸

常平

方法论 产品思维 架构思维

Flink检查点、保存点及状态恢复-13

小知识点

scala 大数据 flink

面经手册 · 第8篇《LinkedList插入速度比ArrayList快?你确定吗?》

小傅哥

Java 数据结构 面试 小傅哥 linkedlist

高并发系统三大利器之降级

java金融

k8s-client-go源码剖析(二)

远鹏

Kubernetes 源码剖析 Go 语言

【读书笔记一】《企业IT架构转型之道-阿里巴巴中台战略思想与架构实战》

Man

中台 阿里 中台战略

Docker 镜像的备份恢复迁移

哈喽沃德先生

Docker 容器 微服务 镜像

LeetCode题解:155. 最小栈,单个栈同时存储最小值,JavaScript,详细注释

Lee Chen

大前端 LeetCode

ARTS Week14

时之虫

ARTS 打卡计划

架构师训练营第十二周作业

张明森

Redis常见问题--哈希冲突

是老郭啊

哈希表 Redis项目

翻转链表算法、自动化测试框架robot-framework、两款iOS 在手机端debugging 工具Flex、啄木鸟、加密技术 高可用系统的度量 高可用系统的架构 高可用系统的运维 John 易筋 ARTS 打卡 Week 15

John(易筋)

ARTS 打卡计划 高可用系统的架构 翻转链表 自动化测试Robot 手机调试工具Flex

麦叔告诉你,Linux下安装nginx都踩了那些坑

麦洛

nginx Linux

pandas ~基础pandas

南辞

Python

oeasy教您玩转linux010108到底哪个which

o

oeasy教您玩转linux010109clear清屏

o

mPaas研发流程和线上运维介绍

阿里云金融线TAM SRE专家服务团队

ios android

银行大数据新玩法,构建“一湖两库”金融数据湖

华为云开发者联盟

大数据 数据湖 FusionInsight MRS DWS

一文带你深扒ClassLoader内核,揭开它的神秘面纱!

我没有三颗心脏

Java ClassLoader java基础 类加载器

Ray 分布式计算框架详解

lipi

分布式 数据湖 pandas Apache Arrow

LeetCode 5. Longest Palindromic Substring

liu_liu

算法 LeetCode

雪花算法把玩

ElvinYang

大事情!中国限制 AI 算法出口。网友:这是要阻止XX“下跪”

程序员生活志

一键洞察全量SQL ,远离性能异常

华为云开发者联盟

数据库 sql 大数据 数据治理 华为云

OpenKruise:Kubernetes 核心控制器 Plus

郭旭东

Kubernetes 云原生 OpenKruise

小小的分页引发的加班血案

架构师修行之路

架构

架构师训练营第十二周总结

张明森

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