Linux 版 (精华区)
发信人: netiscpu (说不如做), 信区: Linux
标 题: Java和Linux
发信站: 哈工大紫丁香 (Mon May 17 13:25:17 1999), 转信
"Linux公报...让Linux更富魅力!"
---------------------------------------------------------------------------
-----
Java和Linux
作者 Shay Rojansky 译者 sams
---------------------------------------------------------------------------
-----
不久以前,Javasoft庆祝了Java的三岁生日.Java, 曾经被认为不过是使web页面变得更
生动的调味品而已,如今已大大超乎所想.如今, 知名软件公司纷纷作出支持Java的保证
,新的Java API正在定义. Java技术最终让程序员编写真正的多平台程序,提供了先进的
交叉平台GUI工具箱, 语言中内嵌线程支持等以及更多.
在这同时,我们看到了计算机软件世界的异常事件.微软,软件产业的巨兽, 受到了来自
司法部和20多个州的反托拉斯诉讼的严重威胁. 网景发布了Communicator的源代码,这
也许是第一个打破对自由开放软件的成见的公司. 它极大的影响了原本对此概念抱有顾
虑的公司,引起了他们对开放软件的兴趣.
所有这一切对于Linux意味着什么呢?意味着机会到来了.没有比这再好的机遇了. 一方
面,产业开始认真的审视作为开放(且自由)OS的Linux.嘿,如果网景都在上面作它的浏览
器, 我们为啥不试一试呢?另一方面,Java技术提供了开发平台无关应用的途径, 业界的
众多成员追随其后.
---------------------------------------------------------------------------
-----
Java和Linux社会
Linux社团本身,事实上,总是以矛盾的态度对待Java.Java带来了推翻微软霸权的希望,
这是据互所有Linux爱好者的梦想,但主流的Linux开发并未接受Linux.这有好几个原因
.
首先最重要的,Java是Sun微系统公司的专有语言.这意味着Sun控制了Java的所有方面,
API和它们的许可条件.微软的战术,比如改变其Java套件J++的API从而不兼容与其它的
Java虚拟机, 迫使Sun寻求授予产品"Java兼容"的专有权.虽然这也许是反击微软的不公
平战术的唯一方法, 但之前从来没有那个开发语言被一个公司如此严密的控制.Linux社
团天生反对这样的拥有权.
其次,Java的多平台概念和Java虚拟机(JVM),使程序员们感到他们不是为Linux环境而是
为Java环境编程. 这也就意味着难以利用Linux的特性.
第三,Java仍然很慢.有许多有前途的增强方法面世,比如Just-in-Time编译器和Sun的H
otspot(仍是beta版). 自从Java诞生后已经改进了很多,但仍然需要一个强大的平台.
Linux世界相对比较重视速度,而且Linux的一个主要的优点就是可以利用古老的硬件.
---------------------------------------------------------------------------
-----
Java编程的优点
尽管Java有如此多的缺点,但它是近几年来对微软的游戏规则的唯一真正的挑战. 它也
是先进的语言,使用现代编程概念写成;所有C++为与C后向兼容而保留的缺点Java都不存
在, 也抛弃了一些复杂特性(比如多重继承).自动垃圾搜集器清除无用的内存碎片,彻底
减少了开发周期. 线程是如此的嵌入进语言以至于变成了程序员的当然工具.
我希望Linux开发者再次考虑Java作为开发语言并正式使用它. 一些Java开发人员已经
在Java工具上做出了令人印象深刻的进展,包括一些Java虚拟机(JVM), 一些Just-in-T
ime(JIT)编译器以及其他.如果你想在Linux平台上开发Java,你可以去看看. 这是Java
-Linux的资源主页:http://www.blackdown.org/java-linux.html
下面将叙述JDK 1.1.x 的一些关键特性.注意下一个版本1.2仍是Beta版,但不久 会推出
正式版.
---------------------------------------------------------------------------
-----
对象串行化
对象串行化意味着取一个对象并融入字节流中.实践中,主要有两个用途: 在网络上传递
对象和在文件中存储对象.一般来说,程序员想要讲述结构存入磁盘, 则必须写一个相应
的法则,这是相当冗长无味的过程.Java自动处理这些,从而简化了过程. 例如,你在内存
中有一个树并希望通过网络传送到另一个Java程序, 你所需作的仅仅是传送根对象--J
ava将沿着指针复制整个树.如果有特殊需要(像安全性), 你可以自己设计对象串行化的
过程.
---------------------------------------------------------------------------
-----
Java基本类(Swing)
原始的AWT,Java的窗口设计工具,相当沉闷而不舒适.有许多元件意识,编程模式令人烦
恼. 目前可以接受的工具像叫做Swing.Swing提供了大量轻量级元件; 它们完全用Java
事项但没有使用AWT种的窗口结构.这确保了跨平台的相同功能性. 另一个动人的特性是
完全可插入的感观,比如允许程序运行时从Windows界面切换至Motif. 你也可以设计自
己的界面.
---------------------------------------------------------------------------
-----
RMI(远程方法调用)
RMI是CORBA在Java种的等价物,可在另一个JVM(甚或机器)调用对象的方法. 对于熟悉U
nix中常用的RPC(远端过程呼叫),RMI(和CORBA)是其面向对象的版本. 最近分布式编程
的概念已经相当流行.通常,这意味着网络程序的紧密集成; 不同机器的对象可通过调用
彼此的方法进行交谈.这通过让Java程序保留一个远端对象的"stub"来实现. 这样,当s
tub中的方法被调用时,Java显式地向网络传送一个请求并返回所需值. 分布式和串行化
嵌入到Java的程度显示了支持这些概念的现代编程语言的先进性.
---------------------------------------------------------------------------
-----
JNI(Java本地接口)
当程序员们想利用Java的优点作一些系统相关的事时通常会遇到麻烦. JNI允许你使用
本地共享的对象接口并运行其方法. 这意味着你可以用C或其他语言编写系统相关代码
并在Java中使用.当然, 因此除非提供所有平台的共享对象,你的程序将不可移植.这是
相当有用的,比如, 在Unix中捕获信号或在Windows中存取注册表.
---------------------------------------------------------------------------
-----
JDBC(Java数据库连通性)
Java数据库连通形是一个SQL数据库存取接口. 它在提供了JDBC驱动的任何数据库上给
出了进行数据库无关的SQL查询的方法.目前, 许多流行数据库这样做了,而那些尚未如
此的则可以通过JDBC-ODBC桥存取, 实际上允许你使用ODBC驱动.此处给出数据库驱动的
列表: http://java.sun.com/products/jdbc/jdbc.drivers.html.
好好看看Java.如果我们能够将操作系统和应用分开,我们将拥有选择我们喜欢的 操作
系统的自由.尽管在精神上Linux社团具有非正统性,但Java具有巨大的潜力, 值得我们
关注.Linux-Java组合将获得胜利.
Java资源
Java home: http://java.sun.com/
Java developer connection (free registration): http://java.sun.com/jdc/
Swing (JFC): http://java.sun.com/products/jfc/index.html
Java for Linux: http://www.blackdown.org/java-linux.html
---------------------------------------------------------------------------
-----
Copyright ? 1998, Shay Rojansky
Published in Issue 32 of Linux Gazette, September 1998
---------------------------------------------------------------------------
-----
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@mtlab.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.398毫秒