频道直达:新闻 - 组网 - 安全 - 服务器 - 存储 - 系统 - 应用 - 开发 - 数据库 - 前沿 - 技术人 - 培训 - 求职 - 读书 - 教程 - 专题 - 产品 - 案例 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

如何在Java平台上使用脚本语言做Java开发(1)

作者: Gregor Roth/梁婷婷 编译 出处:51CTO.com 2007-12-04 18:09    砖    好    评论   进入论坛
阅读提示:本篇文章概括了一些脚本语言(如Groovy,Jruby,Jython)和Java语言的区别,论述了一些在Java平台上使用脚本将会面临的挑战。同时,本文介绍了一些方法,使你可以集成一些最初由Ruby或Python写成的脚本到你的Java代码中。

最近开始流行区分Java平台和Java语言,但很多Java开发者还是不能确定如何在Java应用程序开发中结合脚本。本篇文章,Gregor Roth给出了在Java平台上使用脚本的方法。通过这篇文章,你可以了解怎样在你的Java应用程序中使用脚本,是否你要通过使用Groovy和Jython把不同的Java应用程序模块粘合在一起,或者写一个你自己的基于JRuby的应用程序,适用于Java平台。

作为一个Java开发者,你可能已经注意到了,Java语言已经不是Java平台的唯一所有者。Groovy也是一种适用于Java平台的编程语言,而且还有很多其他语言的解释器和编译器,都可以运行于Java虚拟机(JVM)之上,其中最流行的就是Jython和JRuby。另外,Java SE 6内置对于脚本引擎的支持,JSR 223定义了一个标准接口,与运行于Java平台的动态语言进行交互。

为了能在Java平台上做脚本开发,你需要清楚地理解所要面临的挑战和获得的好处。你需要理解从JRuby和 Jython写成的脚本中调用Java类时会发生什么事情,你同样需要知道要集成一个脚本语言到Java平台会遇到的困难,在你的开发过程中会产生什么样的影响。最后,你应该知道至少一些流行的脚本语言的不同特征,这样你才能知道他们适合放在你的程序的什么地方。

本篇文章概括了一些脚本语言(如Groovy,Jruby,Jython)和Java语言的区别,论述了一些在Java平台上使用脚本将会面临的挑战。同时,本文介绍了一些方法,使你可以集成一些最初由Ruby或Python写成的脚本到你的Java代码中。

静态类型VS动态类型

大部分脚本语言都是动态类型语言,而Java是一种静态类型语言。静态类型语言在声明变量的时候需要定义变量的类型,而且变量的值也只能设置成给定的类型的值。与之相反,动态类型语言不需要程序员给出清楚的类型定义,因为类型信息附属于变量值,而不是变量。通过下面的列表1可以看到,Groovy定义的变量V1可以被赋予任意不同类型的值。

列表1:Groovy动态类型

def v1 = '66'      // sets the variable with a value of type String
println v1.dump()
// prints out:
// <java.lang.String@6c0 value=[6, 6] offset=0 count=2 hash=1728>
v1 = 9            // resets the variable with a value of type Integer
println v1.dump()
// prints out:
// <java.lang.Integer@9 value=9>

动态类型脚本语言的一种典型的实现方法,就是一直保持变量值和它的类型的可变性标签。当在操作中使用任何变量之前,才立即进行类型检查。这种做法的缺点就是在运行时需要额外的处理循环来确定变量值的类型和进行类型检查。但静态类型的提倡者指出,使用动态类型语言总是导致性能不足。

弱类型 VS 强类型

一些流行的脚本语言都是弱类型。弱类型语言允许在不同的类型上进行操作。弱类型语言支持隐式类型转换或多态。例如列表2所示,Groovy允许在一个整型和字符串型上进行加操作。

列表2:Groovy弱类型的例子

def v1 = '66'         // set v1 with a String typed value
def v2 = 5            // set v2 with a Integer typed value
def v3 = v1 + v2
println v3
// prints out:
// 665

与Groovy一样,Python也是一个动态类型语言。但与Groovy相比,Python却是一个强类型语言,所以它不支持上述操作。强类型没有弱类型那么宽松,不允许不同类型之间的混合操作,见列表3。

列表3:Python强类型的例子

v1 = '66'              # set v1 with a String typed value
v2 = 5                 # set v2 with a Integer typed value
v3 = v1 + v2
# prints out:
# TypeError: cannot concatenate 'str' and 'int' objects

静态,强类型的Java语言,在声明时,对于对象类型有最强可能性的约束。例如,如果想用Java实现一个回调模式,需要先写一个回调接口,定义回调函数,声明返回值类型,以及所有参数和定义异常类型。具体的回调实现将通过使用这个接口进行引用和调用,见列表4。

列表4:Java回调模式的实现

// the call back handler definition
interface IDataHandler {
public boolean onData(INonBlockingConnection nbc) throws IOException;
        }
// the server receives data and performs the handler's call back method
class MultithreadedServer {
private volatile boolean isRunning = true;
private IDataHandler dataHandler = null;
                // accepts only an object which implements the IDataHandler interface
MultithreadedServer(IDataHandler dataHandler) {
this.dataHandler = dataHandler;
}
public void run() {
while (isRunning) {
// waiting for data
// ...

// ... and dispatch it
dataHandler.onData(nbc);
}
}
}
// the call back implementation
class SmtpProtocolHandler implements IDataHandler {
public boolean onData(INonBlockingConnection nbc) throws IOException {
SmtpSession session = (SmtpSession) nbc.getAttachment();
//...
}
}
        MultithreadedServer server = new MultithreadedServer(new SmtpProtocolHandler());
server.run();


共4页: 1 [2] [3] [4] 下一页
【内容导航】
专题
Groovy开发技术
Java实用开发全集
Java类的基础教程专题
Java发展动态专题
脚本攻击和防范
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看81024次)
·UML类图详解 (查看72498次)
·C++是垃圾语言?! (查看42631次)
·C#技术开发指南 (查看40232次)
·UML统一建模语言 (查看39205次)
·Java编程开发手册 (1198个砖)
·Java基础教程 (431个砖)
·C#技术开发指南 (311个砖)
·.NET开发手册 (254个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (658个好)
·Java基础教程 (578个好)
·.NET开发手册 (282个好)
·PB开发教程 (213个好)
·Delphi开发技术手册 (200个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。