精华内容
下载资源
问答
  • jython

    2015-04-08 12:50:16
    http://www.jython.org/ 下载安装包,然后安装 ...C:/jython2.5.2/jython.jar; 加到classpath中 C:/jython2.5.2;C:/jython2.5.2/Lib; 加到path中 然后打开jython的包,demo里面的例子运行成功便

    http://www.jython.org/ 下载安装包,然后安装


    python和java的扩展包


    然后添加路径

    C:/jython2.5.2/jython.jar;         加到classpath中

    C:/jython2.5.2;C:/jython2.5.2/Lib; 加到path中

    然后打开jython的包,demo里面的例子运行成功便安装成功了

    展开全文
  • Jython

    2012-11-04 19:04:13
    Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它...

    Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。

    什么是Jython(旧称JPython)

      要了解Jython,首先要了解PythonPython是用C编写的高级的、面向对象的、开放源代码的编程语言。Cuido vanRossumPython的原创者,继而在Python的快速发展中产生了一大群高水平的设计者和程序员。使用Python的开发人员增长迅速,并一直在持续增长。然而SunJava编程语言也是深入人心的。随着用Java实现的项目的数量接近了用C/C++实现的项目,PythonJava实现也变得很有必要。Jython,最初叫做JPython,就是:Python语言的Java实现。为避免混淆,本书用CPython来表示PythonC语言实现,而用Jython来表示Java实现,而Python表示实现的中性概念和Python语言规范的设计特征。

      JythonPython强调了代码的简明性、方便性和易读性。Jython使用缩排来对代码块定界以避免使用在Java中的大括号。Jython用新的一行来表示一个新的语句的开始,并有几个重要的区别,如允许在每个语句后省略分号。Jython没有像在Java中的publicprivateprotected存取符,这样就给程序员提供了快速开发所需要的灵活性,并将注意力集中在程序逻辑上。正像前面所提到的,Jython不用明显的静态的类型定义,故程序员不需要从程序逻辑转移到类型定义上来.

      Jython的历史要追溯到JimHugunin,他是Guidovan Rossum在国家研究动力中心(CNRI)的同事。JimHugunin认识到Python编程语言用Java实现的重要性,并实现了最初名为JPython的语言。由于要开发aspectj(http//aspectjorg/)JimHugunin不能继续致力于JPython了。所以当Python的开发者准备离开CNRI时,由当时也在CNRIBarry Warsaw继续领导开发。

      PythonJython项目组从CNRI离开后,在Sourceforge上转变为一种更开放的语言模型。在此期间,一个对Jython(JPython)做了主要贡献的人FinnBock领导了Jython项目小组。正是由于FinnBock所做的杰出贡献使Jython现在成为一个如此有价值的工具。类似Jython这样的开放源代码项目与开发和维护它们的人一样杰出,从这个意义上说Jython因为有FinnBack的贡献和指导而很幸运。另外一个对Jython做了最新有价值贡献的人是SamuelePedroniSamuele的贡献主要在Jython的类装载、导入机制等等。FinnSamuele目前是Jython的两个主要开发者。

    为什么需要Jython

      Jython由于继承了JavaPython二者的特性而显得很独特。本节介绍一下这些特性及其意义。

      对Java类的无缝存取

      在Java中实现Python可以看到有趣的Java反射API的作用。反射使Jython能无缝地使用任何Java类。JythonCPython中继承了很多优点,但CPython不像别的专为Python所写的一样,在CPython之间有一些问题限制了C库函数的使用。在Jython中真正解决了这个问题,使其编程的效率和生产力得到了很大的提高。

      由于与Java的无缝集成,Jython能使任何部署了Java应用和框架的公司受益而不需要额外的工作。接受任何一种部门的编程语言,对任何一个公司而言都是不容易的,需要深思熟虑,因为这牵涉到整体结构、服务器和外围的工具。Jython作为Java的一个无缝集成的语言,可以在已存在的Java应用上无缝增加而不需要重大抉择。很多公司都花费了很多资金来建立Java的应用,这使采用CPythonPerlRubyPHP和其他不能透明地集成已有Java实现的高级语言的效益降低,吸引力下降。而Jython有能力对已存在的Java框架进行补充,且二者能无缝地结合。

    效率

      计算编程语言的效率是一个很广泛的课题,它要考虑程序员的时间、总体复杂性、代码的行数、可用性、可维护性和运行效率。当然很多人不同意赋予这些变量的权重,经常是在不同的情况下偏重有所不同。然而本书的前提是Jython除运行时的效率外,其他方面都超过其他语言。Jython的运行速度是可以与其他高级语言相比的,但速度并不是高级语言的目标和特点。区别在于当加速一个需要的应用时,将Jython代码翻译成Java更有效,这是由于JythonJava的无缝集成性。另外对所有有效的Java类的直接访问增加了改进已存在的类的可能性。

      动态类型

      在Jython中你不必像在Java中那样声明类型,因为类型是在运行时决定的。Jython的列表和映射类型是高级的多态Java类的实例。多态意味着对象能对不同的数据类型工作。例如Jythonlist类型可以是一个数字的序列、字符串的序列、字符的序列或它们的组合。动态和多态性的列是对编程的极大的贡献,从很多已放弃显式的静态类型定义的高级语言中可看出它减少了代码的行数,降低了复杂性,提高了程序的效率。

      内省和动态执行

      Jython有一些允许方便的对象内省和代码的动态执行的内部函数。内省是发现一个对象信息的能力,而动态执行是执行在运行时产生的代码的能力。该功能很大程度上减少了代码的行数并增加了程序的可靠性,使其更加方便维护。这也能使数据和程序结构或逻辑更好的集成而不影响重用性,因为所有的东西都是在运行时决定的。

    第一类函数和函数编程

      JythonPython一样有第一类函数。第一类函数是指能像变量一样的可调用的对象。第一类函数在对事件处理和其他情况下有意义,这导致增加了Java内部类的功能。虽然Java的内部类与第一类函数类似,但它在方便性与灵活性方面有很大的不足,这是由于Jython中的第一类函数减少了Jython中的语法开销。

      Jython也包括了所有函数编程所需要的工具。这意味着强制的面向对象的函数编程在Jython中得到支持。这显然在教学上很有意义,它使Jython程序员能选择最适合于特定问题的编程语言而不是由语言强加。函数化的工具如列表包含、lambda表单、mapfilterreduce也对减少代码的行数、降低复杂性和名字重绑定数(名字重绑定有很大副作用)起到很大的作用。

    学习周期短

      任何Java程序员在数日内就能熟悉Jython。由于有很多内容,关键在于细节的学习,但仅仅用几天的时间就能拥有Jython的快速开发功能确实是很有价值的。对于那些从事测试和技术支持的小组通常并没有很多时间去学习复杂的Java代码,但通过对Jython的学习能在开销很少的情况下很快提高公司的技术水平和效率。

      写一次,处处可用

      由于Jython是用Java编写的且由于其可编译成Java字节码,因此Jython也具有Java写一次,处处可用的特点。Jython能运行在任何可兼容的Java11‘或更高的Java虚拟机(JVM)版本的平台上。另外你可将Jython应用编译成自足的字节码,它能运行在任何兼容的JVM上。在Linux上编译的应用能运行在有兼容JVM的任何其他平台上。

      Java安全性

      Java的安全性是特别的而且越来越重要。从沙箱到信号,Jython有能力使用Java的特别的安全框架。

      代码清晰性

      代码的清晰性是Python最大的优点,当然也是Jython最大的优点。不必要的标点和行都避免了。Jython代码在可读性和清晰性方面近似于自然语言。这起源于Python对代码块和语句的简单描绘的承诺。缩排标记代码块,换行符标记新的语句。在此之上,语法通常支持.

    简单示例

      1.按钮

      import java

      from java import awt

      def exit(e): java.lang.System.exit(0)

      frame = awt.Frame('AWT Example', visible=1)

      button = awt.Button('Close Me!', actionPerformed=exit)

      frame.add(button, 'Center')

      frame.pack()

      运行效果:

      

      

     

    展开全文
  • Jython

    2010-01-08 14:42:32
    1.安装 Jython 第 3 页(共6 页) 安装 Jython 很简单:只须执行从 Jython 主页下载的类文件即可。假设已安装了 JRE 且已将类文件下载到当前目录中(下面的例子中是 C:\),下列命令将安装 Jython(注意, 是...
    1.安装 Jython	 第 3 页(共6 页)


    安装 Jython 很简单:只须执行从 Jython 主页下载的类文件即可。假设已安装了 JRE 且已将类文件下载到当前目录中(下面的例子中是 C:\),下列命令将安装 Jython(注意,<java_home> 是安装 JRE 的目录):


    C:\><java_home>\bin\java jython-21

    请按照安装应用程序的提示执行。建议选择默认值,并选择 c:\Jython-2.1 作为目标目录。

    def fac(x):
    if x <= 1: return 1
    return long(x) * fac(x-1)

    if __name__ == "__main__":
    print 1 + 2
    print "Hello" + "Goodbye"
    print fac(3)
    print fac(100)



    from math import *

    print "PI = %f, e = %f" % (pi, e)

    print "Sine of %f = %f" % (0.5, sin(0.5))
    print "Cosine of %f = %f" % (0.5, cos(0.5))
    print "Tangent of %f = %f" % (0.5, tan(0.5))



    print "Name: %(last)s, %(first)s" % {'first':"Barry", 'last':"Feigenbaum", 'age':18}



    print range(10) # prints [0,1,2,3,4,5,6,7,8,9]
    print range(2,20,2) # prints [2,4,6,8,10,12,14,16,18]
    print range(10,0,-1) # prints [10,9,8,7,6,5,4,3,2,1]



    堆栈和队列


    列表支持后进先出 (Last-In/First-Out,LIFO) 堆栈和先进先出 (First-in/First-out,FIFO) 队列概念。使用列表 x 创建堆栈时,用 x.pop()(和等同的 x.pop(-1))删除项。使用列表 x 创建队列时,用 x.pop(0) 删除项。要向列表中添加元素,请使用 x.append(item)。例如:


    l = [1,2,3,4,5] # define a list

    l.append(6) # l is [1,2,3,4,5,6]

    w = l.pop() # w is 6, l is [1,2,3,4,5]
    x = l.pop(-1) # x is 5, l is [1,2,3,4]
    y = l.pop(0) # y is 1, l is [2,3,4]
    z = l.pop(0) # z is 2, l is [3,4]



    [b]动态代码求值 [/b]

    Jython 与一般的语言不同,它有能力动态创建代码,然后执行。例如,在计算器应用程序中,用户可以用文本形式输入表达式,Jython 可以直接执行该表达式(假设它符合 Jython 源代码规则)。

    要较好地了解 Jython 如何对动态代码解释/求值,请考虑下列代码:


    v1 = 100; v2 = 200
    l1 = [1, 2, v1, v2]
    d1 = {"simple":123, "complex":(v1, v2, l1)}
    expr = raw_input("Enter an expression:")
    print eval(expr) # evaluate and print the expression


    下面是使用上述代码进行求值的示例表达式和求值的结果:

    输入表达式(作为字符串输入) 结果
    '1234.56' 1234.56
    'v1+v2' 300
    'd1["simple"]' 123
    'v1**2 + len(l1)' 10004





    [b]Eval、exec 和 execfile[/b]


    eval 函数用于执行返回值的表达式。exec 语句用于对不返回值的代码块(一条或多条语句)进行求值,它将文件、字符串(常从文件中读取)或函数作为自己的源操作数。execfile 函数执行来自文件的代码块,它实际上是运行一个子程序。

    exec 语句采用下列形式:


    exec source {in globals {, locals}}

    execfile 和 eval 函数采用下列形式:


    execfile(filename, {globals {, locals}})

    eval(expression, {globals {, locals}})

    所有三种形式都有选择地采用定义全局名称空间和局部名称空间的两个字典。有关名称空间的详细信息,请参见 可见性和作用域。如果省略了这些字典,则使用当前的局部名称空间(由 locals 函数提供)和当前的全局名称空间(由 globals 函数提供)。

    例如,如果字典 gd = {"one":1, "two":2} 和 ld = {"x":100, "y":-1} 用作名称空间,则: print eval("one + two * 2 + x + y", gd, ld)

    输入结果为:104。

    有关使用 eval 函数和 exec 语句的更详细的信息,可以在 Python Library Reference(请参见 参考资料)中获得。
    展开全文
  • 在Docker上 Docker上的Jython,使用“官方” jre。 如果对alpine-jython感兴趣,我将为其更新标签。 用法 docker run -it --rm seansummers/jython
  • Jython compatibility

    2021-01-08 18:46:45
    ve tried to use attrs module with Jython but it seems to be unsupported. I have an empty docker container based on Fedora 27 and Jython 2.7.1 (latest stable) installed from Fedora repository and attrs...
  • Jython使用

    万次阅读 2019-07-18 15:34:56
    一、 Jython 简介 Jython 是一种完整的语言,而不是一个 Java 翻译器或仅仅是一个 Python 编译器,它是一个 Python 语言在 Java 中的完全实现。 Jython 也有很多从 CPython 中继承的模块库。最有趣的事情是 ...

    一、 Jython 简介

            Jython 是一种完整的语言,而不是一个 Java 翻译器或仅仅是一个 Python 编译器,它是一个 Python 语言在 Java 中的完全实现。 Jython 也有很多从 CPython 中继承的模块库。最有趣的事情是 Jython 不像 CPython 或其他任何高级语言,它提供了对其实现语言的一切存取。所以 Jython 不仅给你提供了 Python 的库,同时也提供了所有的 Java 类。这使其有一个巨大的资源库。
            Jython,最初叫做 JPython,就是: Python 语言的 Java 实现。
            Jython 和 Python 强调了代码的简明性、方便性和易读性。 Jython 使用缩排来对代码块定界以避免使用在 Java 中的大括号。 Jython 用新的一行来表示一个新的语句的开始,并有几个重要的区别,如允许在每个语句后省略分号。Jython没有像在Java中的 public、private和 protected 存取符,这样就给程序员提供了快速开发所需要的灵活性,并将注意力集中在程序逻辑上。正像前面所提到的, Jython 不用明显的静态的类型定义,故程序员不需要从程序逻辑转移到类型定义上来。
            Jython 由于继承了 Java 和 Python 二者的特性而显得很独特。

    二、 Jython 安装与使用

    1.Jython 安装

    首先需要安装好 JDK,并配置好环境变量。

    Jython官网 下载 Jython,这里选择的 Jython 2.5.4rc1,下载 Jython 2.5.4rc1 – Installer, 在 windows 系统下双击文件进行安装。

    (如果下载下来的文件名是 remotecontext 没有拓展名,在后面自己加一个 .jar 再双击安装即可。)

    具体步骤截图:


    2. 在 eclipse 中升级 jydt 并配置 jython

    打开 eclipse,点 help--Install New Software--Add 输入

    name: JyDT Update Site

    Location:http://www.redrobinsoftware.net/jydt/updatesite

    结果如图:

    升级完成后重新启动 eclipse,
    点击 Window--Preferences--Jython 配置路径:
    classpath:即 jython 安装好时文件夹中 jython.jar 文件
    installation:即 Jython 安装目录,添加 Jython home 后系统会自动补全后面两个,如果没有补全照图补全即可:


    3.Eclipse 中使用 Jython

    把 jython 安装目录加入到系统环境变量(包含 bin 目录和 Lib 目录),在 java 工程中加入 jython 安装目录下的 jython.jar 即可在 java 中使用 jython 了:


    右键 jython.Jar,“Build Path”-->“Add to Build Path”后方可使用。

    4.验证

    创建新 jython Project
    创建新 jython 文件
    如图:

    测试一下:

    三、 Jython 一个简单例子

    package py;
    
    import org.python.util.PythonInterpreter;
    import org.python.core.*;
    
    public class PyTest {
        public static void main(String[] args) {
            //运行test.py脚本
            PythonInterpreter interp1 = new PythonInterpreter();
            interp1.execfile("test.py");
            //运行python命令
            PythonInterpreter interp = new PythonInterpreter();
            System.out.println("Hello, brave new world");
            interp.exec("import sys");
            interp.exec("print sys");
            interp.set("a", new PyInteger(42));
            interp.exec("print a");
            interp.exec("x = 2+2");
            PyObject x = interp.get("x");
            System.out.println("x: "+x);
            System.out.println("Goodbye, cruel world");
        }
    }

    测试 Python 脚本, test.py:

    print "This is a Python exec"
    from java.util import Random
    rng = Random()
    #This is a comment in Jythonprint "Flipping a coin..."
    if rng.nextBoolean():
        print "Came up heads"
    else:
        print "Came up tails"

    OVER~~

     


     

    展开全文
  • 该资源包含jython2.5.4.jar和jython2.7.0.jar,jython的版本要与jdk的版本要对应,这样可以解决“Unsupported major.minor version 51.0”问题。其中,对于jdk1.6.x的版本,请使用jython2.5.4.jar jdk1.7.x的版本,...
  • Jython support

    2020-11-30 23:29:14
    /usr/bin/env /Users/seanj/w/projects/opensource-openmic-pdb/.tox/jython/bin/jython" </code></pre> <p>When this executed under the default bash shell. <pre><code> bash: .tox/jython/bin/pip: "/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,085
精华内容 1,234
关键字:

jython