写点什么

JRuby on Java ME/CDC

  • 2009-03-04
  • 本文字数:1152 字

    阅读完需:约 4 分钟

在 JRuby 成功的运行于 Android 上之后(通过 Ruboto——Android 对 JRuby 的支持),最近 Charles Nutter 开始尝试将 JRuby 引入到移动 Java 设备上。当前的 Ruboto 以解释的方式执行 JRuby 代码,而 Charles 打算扩展提早编译(AOT)能力以将 Ruby 代码完全编译成 Java 字节码,之后就可以将其转换为适合 Android VM 的字节码了:

同时还打算触及一下即时编译模式,因为我觉得这要比生成 Dalvik 字节码更容易上手。我已经想好怎么做了。你可以通过命令来“完全编译”目标脚本,这样就会创建.class 文件,其中绑定了运行时会生成的所有方法。这个计划在我心中已经由来很久了。借助于“完全编译好”的 Ruby 代码,你可以轻松将其上传到设备中。

另一个重要步骤就是模块化 JRuby:

假设很多人都会交付预编译的代码而很多库无法正常工作,这样我们就需要模块化 JRuby 以识别出不支持的库、解析器、解释器和编译器问题。这会减少二进制文件的总大小,同时我还有其他一些想法来实现这一点。

编译 Ruby 代码并且只使用 JRuby 中需要部分的能力对于资源受限的Java ME设备是尤为重要的,这也是 Charles 在其最近的项目 jruby-cdc 中所要解决的问题。正如之前所讨论的,人们已经在考虑 JRuby on Java ME ,但这绝对是个挑战,因为 Java ME 平台有太多的限制了(相比于 JRuby 的目标平台 Java 5 来说)。

现在人们已经将 JRuby 带到了 Java ME CDC 设备上了(CDC 是 Java ME 的一组配置参数)

“cvm”是 Sun 对一种嵌入式 JVM 的参考实现,而且该特别的包还包含了 PBP 级别的 API。这里我已经将 jruby.jar 从 jruby-cdc 项目中剥离出来了,但需要做一些转换以兼容于 Java 1.3 的字节码。

Rhodes 项目已经对很多移动平台上的 Ruby 提供了部分支持,这是通过 MRI(针对 Symbian 或 Windows Mobile 设备)或针对特定设备(如黑莓)的客户化 XRuby 实现的。剥离了某些特性的 JRuby(可以提早编译为 Java 字节码)当然也可用于 Rhodes 项目了( Rhodes 位于 Github 并且是开源的,这样一旦 AOT 编译可用,我们就可以拿 JRuby 实验了)。

Rhodes 平台一个有意思的地方就是其基于 HTML 的 GUI 环境了,通过扩展它可以访问设备特性,如位置、摄像头等等。其观念类似于针对新WebOS 的Palm ,也就是说使用HTML、Javascript 和其他Web 技术来构建本地应用,区别在于Rhodes 应用的后端可以用Ruby 编写。

Rhodes 的目标在于智能手机,而 JRuby on JME 想要占领低端市场,Charles 指出:

为何烦心?现在仍有不少 Java ME 设备。虽然口袋中的设备可能不是 Java ME,但卧室中的机顶盒或蓝光设备却可能是。技术还很绚烂,只是不如 iPhone 或 Android 那么惹人注意罢了。我们的目标是“Ruby everywhere”,你觉得可行不?

你对 Java ME 或 Android 设备上的 JRuby 有何高见呢?

查看英文原文: JRuby on Java ME/CDC

2009-03-04 23:391137
用户头像

发布了 88 篇内容, 共 273.2 次阅读, 收获喜欢 9 次。

关注

评论

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

译文 | Apache Pulsar 集群如何确保消息不丢

Apache Pulsar

Java 分布式 云原生 中间件 Apache Pulsar

博文推荐 | 基于 Pulsar 事务实现 Exactly-Once 语义

Apache Pulsar

Java 架构 云原生 中间件 Apache Pulsar

Hadoop 入门笔记—核心组件 YARN

编程江湖

大数据 hadoop

深入理解 volatile 关键字

编程江湖

volatile JAVA开发

一物一码可追溯!看区块链如何帮助消费者

CECBC

JavaScript 数组展平方法: flat() 和 flatMap()

devpoint

11月日更 flat flatMap

linux 上查找包含特定文本的所有文件

入门小站

Linux

JSRE中的多任务与多线程

编程江湖

html5 大前端

程序员如何应对职业天花板

石云升

职场天花板 职场经验 11月日更

详解阿里开源分布式事务框架Seata

博文视点Broadview

小谈C#异常

喵叔

11月日更

架构实战营-模块六

瓜子葫芦侠

「架构实战营」

[Pulsar] 消息生命历程(四)——Broker的消息处理

Zike Yang

Apache Pulsar 11月日更

央视新闻联合百度智能云打造首个AI手语主播

百度大脑

人工智能

贪心算法:加油站 ⛽

空城机

算法 大前端 11月日更

Android C++系列:Linux进程间通信(二)

轻口味

c++ android jni 11月日更

《深入理解JVM虚拟机》读书笔记:第二章 Java内存区域与内存溢出异常

Joseph295

头条观察 | 元宇宙成为必然趋势的三种可能

CECBC

风口上的低代码:我们看到了这些变化与趋势

脑极体

在线文本按列截取工具

入门小站

工具

docker vs docker-compose 解密

liuzhen007

11月日更

Prometheus Exporter (十)Ping Exporter

耳东@Erdong

Prometheus ping exporter 11月日更

复杂业务系统高扩展架构设计与实践

鲸品堂

构架

声网下一代视频引擎架构探索与实践

RTE开发者社区

音视频 视频处理 RTE 技术详解

如何使用find和locate 命令在Linux 中查找文件和目录?

Ethereal

Linux find locate

【高并发】浅谈AQS中的CountDownLatch、Semaphore与CyclicBarrier

冰河

Java 并发编程 多线程 高并发 异步编程

没有人比我更会使用集合!对,是dart中的集合

程序那些事

Java flutter dart 程序那些事 11月日更

Flutter:如何在没有插件的情况下制作旋转动画

坚果

flutter 11月日更

架构原则

卢卡多多

架构 11月日更

搞定大厂算法面试之leetcode精讲6.深度优先&广度优先

全栈潇晨

算法面试 Leet Code

vue3 学习笔记 (三)——vue3 自定义指令

码仔

Vue3 自定义指令

JRuby on Java ME/CDC_Java_Werner Schuster_InfoQ精选文章