介绍JDesktop Integration Components

用JDIC在桌面应用程序中集成本机操作系统特性

简介:本文将介绍 JDesktop Integration Components (JDIC),这是一个 开源的项目,目的是构建消除本机应用程序和 Java 等价物之间差距的组件。 JDIC 单一的 Java API 允许应用程序接进本机操作系统特性,同时保持跨平台 支 持。它目前提供了本机 Web 浏览器(Internet Explorer 或 Mozilla) 支持、 系统托盘支持、文件扩展集成和其他桌面特性。

开发人员和用户对 Swing 最大的一个抱怨(也是对 Java 编程语言整体上的 抱怨)是,客户端应用程序给人的感觉与本机应用程序的不同。(本机应用程序 是指用采用操作系统内置库的编程语言编写的应用程序,例如运行在 Windows 上 的 Visual C++ 应用程序。)虽然 Java 应用程序表现得像本机应用程序那样好 ,但是还是遗漏了某些地方,从而使用户注意到了差异。基本的问题是 Java 应 用程序不能 真正地表现得像本机应用程序那样,因为本机应用程序有其不公平 的 一面:它们可以专门针对操作系统进行编写,这让它们可以利用特别的本机操作 系统函数。Java 代码受到自己“随处运行”的咒语限制,并且调用本机函数( 例 如通过 Java 本机接口)是一个大忌。

直到现在,Java 开发人员一直希望用这个不足换取能够编写在任何操作系统 上均可运行的软件的优势。但是,随着 Java SE 5 的发布,特别是 Sun 对增强 Java 桌面的推动,有些开发人员想让 Java 应用程序和本机应用程序之间的差 异 最终消失。创建 JDIC 就是了为消除这个差异(请参阅 参考资料)。就像 JDIC Web 站点声称的那样,JDIC 的目标是“让基于 Java 技术的(‘Java 应用程序 ’) 在不牺牲平台独立性的情况下,成为当前桌面平台的一等公民。”

这本文将介绍 JDIC 项目,以及它如何成功地让 Java 客户端应用程序表现 得 更加本机化。通过一系列示例,您可以看到 JDIC 中目前所拥有的组件,以及尚 在“孵化器”中(工作进行中)的一些组件。我们将要介绍 JDIC 所提供的差不 多每个组件,在理想情况下,这些将激发您足够的兴趣,让您将 JDIC 应用到您 的应用程序中,甚至有助于说服您也为这个项目做点贡献。

关于 JDIC 的一个重要说明是:它仍然是一个 beta 项目,这意味着它还没 有 得到任何 JDK 发行版的支持,未来任何时候都可能发生变化。所以一定要把必 要 的文件与基于 JDIC 的应用程序一同提供,因为没有 Java 虚拟机(JVM)会支 持 它。而且因为 API 有可能在发行版之间变化,所以这篇文章中的函数名称今后 可 能会有所不同。

它是一个包装

JDIC 项目有两个目标:维护 Java API 的跨平台,让程序可以在任何机器上 运行,并支持人们使用的每个操作系统。因为新功能要求调用每个操作系统的本 机函数,所以这显然处在一个很艰难的位置上。JDIC 是通过将其 Java API 作 为 所有这些本机调用的包装器来实现这一点的。JDIC 组件代码本身指出正在哪个 操 作系统上运行应用程序,并调用适当的 JNI 函数。(您可以看到,在代码内部 有 针对每个操作系统的 if/else 链。这就是跨平台兼容性的代价。)图 1 演示了 JDIC 包装本机调用的方式:

图 1. JDIC 如何包装本机调用

时间: 2024-09-03 23:58:04

介绍JDesktop Integration Components的相关文章

介绍IBM Integration Bus 9.0的新功能:Service Mapping

IBM Integration Bus 作为高级http://www.aliyun.com/zixun/aggregation/7921.html">企业服务总线的实现平台,在 IBM SOA 架构应用和企业应用集成中都扮演了十分重要的角色,目前已被广泛应用于许多行业领域.在新发布的 IIBv9.0 中,有一项跟 WebSphere Application Server(以下简称 WAS)集成的新功能具有十分重要的作用.本文介绍如何使用这项功能,利用 Service Mapping 在 s

一个关于 Styled Components 的五分钟介绍

本文讲的是一个关于 Styled Components 的五分钟介绍, CSS 是一个很神奇的语言,你可以在 15 分钟之内就学会一些基础部分,但是如果你要找到一个好的方式来组织你的样式,将会花费数年时间. 这主要是由于语言本身很奇葩.不合常规的是, CSS 是相当有限的,没有变量.循环或者函数.与此同时,它又是相当自由的,你可以随意使用元素.Class.ID 或它们的任意组合. 混乱的样式表 正如你自己所经历过的那样,CSS 通常是很混乱的.虽然有诸如 SASS 和 LESS 这样的预处理器添

ASP.NET 5系列教程 (三):view components介绍

在ASP.NET MVC 6中,view components (VCs) 功能类似于虚拟视图,但是功能更加强大. VCs兼顾了视图和控制器的优点,你可以把VCs 看作一个Mini 控制器.它负责控制应用中的某一功能模块,例如: 动态导航菜单 标签云 登录面板 购物车 最近文章 博客侧边栏 假如使用VC 创建了登录面板,可以在很多场景中调用,例如: 用户没有登录 用户已登录,需要退出使用其他帐号登录或者管理其他帐号. 如果当前登录角色为管理员,渲染管理员登录面板 你可以根据用户的需求获取数据进行

GlassFish Components 组件介绍

                   来源:美丽的爪哇岛         GlassFish由一个或多个domain组成,一个domain是一个管理域,每个domain和一个administration server(也称作Domain Administration server或者DAS)关联,并可包含0到多个standalone instance或者cluster.每个cluster有一个或多个同类型的instance,一个instance运行于一个单独的JVM中,domain中的insta

Authentication and Integration 第三篇:Oracle LDAP介绍

原文地址:http://hi.baidu.com/flydragon/item/880161c12d7e107488ad9eff 在Oracle中,LDAP是什么? LDAP的英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简单多了并且可以根据需要定制.与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的.LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDA

【翻译】Asp.net Core介绍

ASP.NET Core is a significant redesign of ASP.NET. This topic introduces the new concepts in ASP.NET Core and explains how they help you develop modern web apps. Asp.net Core是重新设计过得新一代Asp.Net.此篇文章介绍Asp.net Core 如何帮助你开发先进的web应用. What is ASP.NET Core?

Integration Services:容器

容器是Integration Services 包中非常重要的一部分功能,它可以对控制流中的任务进行直观的划分与组织,使包的结构简明扼要.易于管理.易于维护. 在Integration Services 中,主要有以下三种类型的容器: 序列容器(SequenceContainers).For 循环.Foreach 循环.下面我们将一一介绍这三种容器的使用方法. (一).序列容器(SequenceContainers). 序列容器是一种十分简单,但使用非常广泛的容器,它可以对控制流的任务流组件进行

WebSphere Integration Developer指导教程 第4部分

WebSphere Integration Developer 指导教程 第4部分 在面向服务的应用程序中利用可视化代码片段和业务状态机 引言 在本系列的 上一部分中,您利用 WebSphere Integration Developer 构建了一个简单的面向服务的订单处理应用程序.您已经了解了如何结合使用其概念和工具来构造应用程序的构件.您使用业务状态机实现了一个组件 ProcessOrder,但对于在构建它时进行的具体操作只给出了非常少的背景信息.选择状态机来实现此组件的原因在于:对于每个订

java初学者常用开发工具介绍

初学 Java的应用越来越广泛,学习Java的人也越来越多.学过程序设计的人知道,使用Basic进行程序设计,可以使用QBasic.Visual Basic等开发工具:使用C语言进行程序设计,可以使用Turbo C.Visual C++.C++ Builder等开发工具.这些开发工具集成了编辑器和编译器,是集成开发工具,很方便使用.学习Java程序设计,同样需要方便易用的开发工具.Java的开发工具很多,而且各有优缺点,初学者往往不知道有哪些常用的开发工具,或者由于面临的选择比较多而产生困惑.本