在wsadmin脚本(WebSphereApplicationServer 7+)中使用jython相对于jacl的优势



面对wsadmin脚本客户端的编程,我发现您可以同时使用jacljython

我对这两种语言都有同样的信心。

我想知道,在特定的wsadmin编程中,使用一种语言是否比使用另一种语言有优势;比如健壮性、websphere管理的示例或库的可用性,或者您在使用和构建此类脚本方面的经验所产生的类似情况。

Jython是首选语言:
  • RationalApplicationDeveloper支持Jyton的工具(Jython编辑器、调试器、命令完成,以及在IDE中针对测试服务器测试脚本的能力)
  • WebSphere管理控制台提供控制台命令帮助;它为您提供了使用管理控制台执行的操作的脚本等价物,以防您想要自动化这些操作。此帮助使用Jython作为语言
  • 即使Jacl是wsadmin的默认语言,IBM也会在未来推广Jython,甚至提供了一个将Jacl脚本转换为Jython的工具。引用该工具在给定链接上的描述

在选择脚本语言时,Jython是战略方向作为WebSphere应用程序的管理脚本语言服务器,因为脚本语言的未来增强功能是专注于Jython的使用。

我不想质疑之前的任何回应,只是添加一些事实。

尽管Jython是"战略"方向,但Jacl自WAS v4以来就一直在那里。在WAS v8.5中,它仍然是默认的(不推荐使用!)。

API是在考虑到Jacl的情况下编写的。使用Jython,您必须执行类似这样的技巧才能将服务器列表作为列表:

for srv in AdminConfig.list('Server').splitlines():
print srv

而在Jacl中,可以简单地做到这一点:

foreach srv [$AdminConfig list Server] {
puts $srv
}

显然,许多AdminConfig和AdminControl方法都以换行字符串的形式返回列表。

IBM真的把Jython和Jacl逼到了绝境。他们仍然在使用Jython 2.1(2002年发布,即使是最新和最棒的WAS v8.5)。社区并没有积极支持Jacl。API是Jacl-友好的,没有为Jython重写。很多客户端解决方案都是基于Jython中的技巧,还有很多基于Jacl的解决方案。即使是IBM内部也有很多对遗留问题的依赖。这可能就是为什么Jacl从WAS v5.1开始就被弃用,并且仍然是默认的原因。

简而言之:

  • 如果您要为特定任务编写一个小脚本,Jacl可能会更方便(因为您已经提到您对Python和Tcl都很熟悉)
  • 然而,如果您有兴趣开发更大的框架来管理WAS基础设施,那么Jython及其面向对象可能是一个更好的选择。但不要对那个版本的Jython抱有太多期望——它很有缺陷,你不能仅仅因为很久以前他们放弃了对Python2.1的支持就使用太多Python库

结论是:这不是一个简单的答案(这意味着你问了一个好问题)。

最新更新