写点什么

面向.NET 平台的 Java 1.5

  • 2008-12-18
  • 本文字数:991 字

    阅读完需:约 3 分钟

Ja.NET 是 Java 1.5 SE 的.NET 平台版本。其编译器基于 Eclipse JDT ,同时 JDT 也得到了改良以便生成 IL 和 Java 字节码。传统上,Java 会将每个类编译成一个单独的文件,但是对.NET 来说这样做的代价太高了。为了解决这个问题,Ja.NET 使用了一个基于 Cecil 的工具来创建更大的程序集,这与 Java 创建 Jar 文件的方式很相似。

为了获得更好的类库支持, Ja.NET 基于开源项目 Apache Harmony 。Dave Tillman 说到:

Harmony 吸引我的一个特性是它的类库已经很好的按模块进行组织了,这与 OpenJDK 正好相反。例如,你会看到一个 LUNI 模块,它代表了 Lang-Util-Net-Io,这是一个 NIO 模块,诸如此类。顺便说一下,我实际上已经使用 OpenJDK 并用其在我的机器上创建了一个可运行的版本,但是后来我还是选择了 Harmony。

当我们与 Dave 交流时,他谈到了一些必要的细节:

当前 Ja.NET SE 项目只关注于 Java SE,它向.NET 提供了 Java 5 JDK。在转向更高的层次(Java EE)前,我认为需要先将 SE 部分完成,而且要正确地完成。所有的 Java 5 SE 类库都包含在了发布包中,但是其中有些功能是不完全的。要知道我做从事的工作是基于几个反潮流的项目(请查看我最新的博文以了解详细信息—— www.janetdev.org )之上的。最大的一个当属 Apache Harmony 项目。Harmony 已经为几乎所有(99.x%)的 Java 5 SE 类库开发了代码,包括 Swing、AWT 等等。同时他们还为 Java ME 和 Java 6 进行了开发。 Ja.NET SE 类库来源于 Harmony 的代码,现在我将 Harmony 的所有代码都构建到了.NET 程序集中并将其放到发布包中。但此时我们并未完成所有的工作(修改类库以将其绑定到相应的.NET/CLR 服务之上)。例如,将 Swing/AWT 绑定到 WPF 之上的工作就尚未完成。这也正是我到处寻找参与者的原因所在:-)。为了做到这一点,开发者需要利用 Harmony 提供的 Swing/AWT 代码基,将其分解然后在代码中的恰当位置上加入对 WPF API 的调用。所有的 Harmony Swing/AWT 代码已经被编译到.NET 程序集中了,他么就不再回调 WPF 了。

有很多核心的类库(反射、并发、类加载、io、nio 字符集等等)可供 Ja.NET SE 工具(编译器、程序集合并)所用。我无需对代码做任何改变就可以让 JUnit 4.3/4.5、Xerces 2.8 及 Ant 1.7.0 运行在.NET 上。当然,我还会增加更多的内容!:-)

当前 Ja.NET 可运行在 Microsoft CLR 和 Novell Mono 平台上。

查看英文原文: Java 1.5 for the .NET Platform

2008-12-18 08:042316
用户头像

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

关注

评论

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

webpack模块化的原理

Geek_02d948

webpack

深度理解NodeJS事件循环

coder2028

node.js

被翻译成 12 种语言的深度学习名著重磅升级,75%新内容,让你豁然开朗!

图灵社区

Python 深度学习

英国国民信托 CIO:如何讲好可持续发展故事

雨果

CIO

令人头疼的Javascript隐式&强制转换

hellocoder2029

JavaScript

【指针】有哪些类型?

Geek_65222d

10月月更

为什么最近关注“元数据”的人突然增多?

雨果

元数据 元数据管理 元数据管理平台

js作用域、作用域链和它的一些优化

hellocoder2029

JavaScript

后端Java随机比大小游戏实战讲解

魏铁锤

10月月更

实验精神终将胜利:量子纠缠的祛魅七十年

脑极体

小程序容器技术,或许是提升智能设备安全等级的又一解决方案

Speedoooo

浏览器安全 小程序容器

Vue组件入门(一)组件定义及使用

Augus

Vue3 10月月更

我为什么要使用 Tauri 构建 macOS 磁盘清理工具 PrettyClean

NinetyH

tauri ​Rust

被翻译成 12 种语言的深度学习名著重磅升级,75%新内容,让你豁然开朗!

图灵教育

Python 深度学习

这几款小程序插件可以让效率翻倍

Geek_99967b

小程序

Python基础(十四) | Python之禅与时间复杂度分析

timerring

Python 时间复杂度 10月月更 python之禅

外包学生管理系统

早安

架构

【一Go到底】第十天---位运算and移位运算符

指剑

Go golang 10月月更

爬虫练习题(五)

张立梵

Python. 10月月更 爬虫案例

一文了解 Python 中的对象比较方法 is 和 ==及其本质

宇宙之一粟

Python 10月月更

webpack热更新原理(面试大概率会问)

Geek_02d948

webpack

数字化转型最核心的是数据吗?不,是数据思维

雨果

数字化转型 数据思维

Red Hat Releases OptaPlanner 8

积木编程

时间旅行调试与自动化测试的支持

iofod jude

前端 低代码

说说Nodejs高并发的原理

coder2028

node.js

星汉未来 | 云原生薪火计划——开源大使招募

星汉未来

开源 开发者 云原生 星汉未来 FinOps

一文读懂Js中的this指向

hellocoder2029

JavaScript

企业级低代码开发平台有哪些?

优秀

企业级低代码平台 企业级低代码

阳振坤:分布式技术引领关系数据库发展

OceanBase 数据库

DataOps核心理念是什么?包括哪些模块?

雨果

DataOps

理解NodeJS多进程

coder2028

node.js

面向.NET平台的Java 1.5_Java_Jonathan Allen_InfoQ精选文章