3 苹果开发人员技术文档连载之-系统架构( 二 )


Mac OS X内的Java应用程序环境有三个主要的构件:

·开发环境,包括Java编译器(javac)和Java调试器(jdb)以及其它工具,包括:javap、javadoc和appletvIEwer等 。这个"命令行"环境需要一个BSD shell,例如它可以由苹果的终端应用程序来提供 。苹果还提供了Project Builder应用程序,作为这个环境的前端开发工具,而且第三方也可以使用他们自己的前端开发工具 。命令行工具位于JavaVM.framework/Commands子目录下,并提供符号连接来将其连接到目录/usr/bin中 。
·运行时环境由Sun公司的高性能Hotspot Java虚拟机、“just-in-time”(JIT)字节码编译器和基本的Java包所组成 。Java虚拟机位于/System/Library/Frameworks/JavaVM.framework/Libraries目录下 。这些基础包包括 ava.lang、java.util、java.io和java.net;它们都在同一框架下的Classes目录中的classes.jar归档文件中 。
·一个应用程序框架含有为建立一个Java应用程序所必需的类 。

这些包中较为重要的是java.awt和javax.swing,通常它们被称为AWT(Abstract Windowing Toolkit) 和Swing 。AWT包实现了标准的用户界面组件(例如:按钮和文本框)、基本绘图组件、布局管理器和事件处理机制 。Swing包则极大的扩展了这套用户界面组件 。这些组件能自动呈现出符合其宿主平台的外观风格(look and feel) 。Swing在基于当前版本的AWT组件集的基础上扩充了一组高级组件,例如目录视图、列表框和分页框 。AWT和Swing的包位于JavaVM.framework/Classes/classes.jar中的jar归档文件中 。


比较起Carbon和Cocoa环境,Java虚拟机连同最基本的Java包(java.lang、java.util和java.io)等同于系统软件中的核心服务层 。它们从内核环境中获得资源以实现低级别的服务(例如:进程管理、线程和输入/输出),而不必访问系统软件中的核心服务层(Open Transport,Core Foundation,等等) 。

Mac OS X中Java的所有其它部分被分层置于虚拟机和基本Java包之上 。如果一个Java程序不具用户界面(或者说它是一个工具或应用服务器),那么它仅仅只需要使用这些基本的Java包 。但是100%的纯Java应用程序或applet(根据定义,applet具有图形用户界面)必须使用AWT或Swing,这两者均与系统软件应用服务层中的许多框架和库绑定在一起 。Swing自身也被分层置于AWT包的原始部分之上 。AWT和Swing在结构上等同于面向GUI的工具箱或框架,例如Carbon的人性化接口工具箱(Human Interface Toolbox)或Cocoa的Application Kit 。

如同任何一个Carbon或Cocoa应用程序一样,Java应用程序也可以是能双击执行的束(double-clickable bundle),您可以使用MRJAppBuilder工具软件来绑定Java应用程序 。另外,用户也可以在命令行环境中运行Java程序,或者通过系统exec调用和Java Runtime.exec 方法来执行Java应用程序 。对于后一种情况,所启动Java程序的进程名会被显示成用于启动可执行Java程序的工具,即:java,或针对applet的appletviewer (例如,在Process Viewer中察看) 。

推荐阅读