`

java Jython / JPython /

    博客分类:
  • Java
 
阅读更多

s

http://www.jython.org

 

Jython 简单入门

http://willzh.iteye.com/blog/307222

1. 用Jython调用Java类库 

第一步、创建Java类 

写一个简单的Java类,用Point来示例: 

Java代码  收藏代码
  1. import org.python.core.*;  
  2.   
  3. public class Point extends PyObject  
  4. {  
  5.     private int x;  
  6.     private int y;  
  7.   
  8.     public Point()  
  9.     {  
  10.         x = 0;  
  11.         y = 0;  
  12.     }  
  13.   
  14.     public Point(int x, int y)  
  15.     {  
  16.         this.x = x;  
  17.         this.y = y;  
  18.     }  
  19.   
  20.     public void dump()  
  21.     {  
  22.         System.out.printf("The position is (%s, %s)\n", x , y);  
  23.     }  
  24. }  


编译的时候,记得把jython.jar加入类环境中: 

Shell代码  收藏代码
  1. export CLASSPATH=/usr/share/java/jython.jar  
  2. javac Point.java  



第二步、简单调用 

现在可以编写Jython来调用上面的Java类库了 

Python代码  收藏代码
  1. #!/usr/bin/env jython  
  2.   
  3. import Point  
  4.   
  5. if __name__ == "__main__":  
  6.     p = Point(2,3)  
  7.     p.dump()  



第三步、扩展 

Python代码  收藏代码
  1. import Point  
  2.   
  3. class Circle(Point):  
  4.     def __init__(self, x, y, r):  
  5.         super(Circle, self).__init__(x, y)  
  6.         self.r = r;  
  7.   
  8.     def dump(self):  
  9.         super(Circle, self).dump()  
  10.         print "This radius of Circle is %s" % self.r  
  11.   
  12.     def area(self):  
  13.         return self.r**2*3.1415  
  14.   
  15. if __name__ == "__main__":  
  16.     p = Point(2,3)  
  17.     p.dump()  
  18.     c = Circle(2,10,3# 但是实际上这里有问题,我不知道怎么回事,还在研究中……哪位指点下  
  19.     c.dump()  


虽然测试的时候有问题,但是隐约感觉到了Jython的强大,让我们欢呼一下吧 

2. 用Java执行Python代码 

在安装好的Demo里有个例子,可以拿出来炫炫 

Java代码  收藏代码
  1. import org.python.core.PyException;  
  2. import org.python.core.PyInteger;  
  3. import org.python.core.PyObject;  
  4. import org.python.util.PythonInterpreter;  
  5.   
  6. public class SimpleEmbedded {  
  7.   
  8.     public static void main(String[] args) throws PyException {  
  9.         PythonInterpreter interp = new PythonInterpreter();  
  10.         interp.exec("import sys");  
  11.         interp.exec("print sys");  
  12.         interp.set("a"new PyInteger(42));  
  13.         interp.exec("print a");  
  14.         interp.exec("x = 2 + 2");  
  15.         PyObject x = interp.get("x");  
  16.         System.out.println("x: " + x);  
  17.     }  
  18. }  


结果如下: 

Shell代码  收藏代码
  1. $ javac SimpleEmbedded.java   
  2. $ java SimpleEmbedded  
  3. sys module  
  4. 42  
  5. x: 4  
  6. $  



3. 直接在Jython中使用Java内部的类库 

如果你不介意,当然可以在Jython中交互执行Java的类库。下面是一个有点“实用”的例子: 

Python代码  收藏代码
  1. $ jython  
  2. Jython 2.2.1 on java1.6.0_0  
  3. Type "copyright""credits" or "license" for more information.  
  4. >>> import sys  
  5. >>> from java.net import URL  
  6. >>> url = URL("http://willzh.iteye.com")  
  7. >>> urlopen = url.openConnection()  
  8. >>> input = urlopen.getInputStream()  
  9. >>> c = input.read()  
  10. >>> while c!=-1:  
  11.     sys.stdout.write(chr(c))  
  12.     c = input.read()  



安装好的Demo里有些例子也可以参考,例如: 

Python代码  收藏代码
  1. from java.applet import Applet  
  2. import sys  
  3.   
  4. class HelloWorld(Applet):  
  5.     def paint(self, g):  
  6.     g.drawString("Hello from Jython %s!" % sys.version, 2030)  
  7.   
  8.   
  9. if __name__ == '__main__':  
  10.     import pawt  
  11.     pawt.test(HelloWorld())  


直接调用就可以了: 

Shell代码  收藏代码
  1. jython HelloJython.py # 假设上面代码的文件名是HelloJython.py  
  2. java org.python.util.jython HelloJython.py # 也可以这样调用  




4. 将Python代码编译为Java类 

第一步、创建Python类 Goo.py 

Python代码  收藏代码
  1. import java.lang.Object  
  2.   
  3. class Goo(java.lang.Object):  
  4.     def __init__(self):  
  5.         '''''public Goo()'''  
  6.   
  7.     def dump(self):  
  8.         '''''@sig public void dump()'''  
  9.         print 'goooooo'  


注意函数文档中的字符串,public Goo()表示告诉Java这是构造函数。 

第二步、创建Java测试类 GooTest.java 

Java代码  收藏代码
  1. public class GooTest {  
  2.     public static void main(String[] args)  
  3.     {  
  4.         Goo goo = new Goo();  
  5.         goo.dump();  
  6.     }  
  7. }  



第三步、编译 
终端下运行如下命令: 

Python代码  收藏代码
  1. # jythonc Goo.py  
  2. # javac -cp jpywork:$CLASSPATH GooTest.java # 将jpywork路径加入搜索路径中  
  3. # java -cp jpywork:$CLASSPATH GooTest  
  4. goooooo  


运行成功! 

5. 后记 

很多人说,Python比Java开发速度来的要快,但是Java也有Java不可动摇的强大之处,如此结合,想必Jython的好处和作用显而易见了吧。 

 

 

end

分享到:
评论

相关推荐

    jython-standalone-2.7.2.jar

    jython-standalone-2.7.2.jar,java应用调用Python。

    java引用jpython的方法示例

    在Java中使用JPython,我们需要引入Jython库,它是一个Python的实现,使得Java能够理解并运行Python代码。下面将详细解释如何在Java中引用JPython,并通过一个实例来展示其使用技巧。 首先,为了在Java中使用...

    jython-installer-2.7.3.jar

    交互式实验-Jython提供了一个交互式解释器,可用于与Java包或运行的Java应用程序交互。这允许程序员使用Jython来实验和调试任何Java系统。 快速应用程序开发——Python程序通常比等效Java程序短2-10倍。这直接转化为...

    jython-2.5.0.jar 类库

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

    The Definitive Guide to Jython

    Jython的前身JPython被认证为100%纯Java。Jython对商业和非商业使用都是免费的,并且随源代码一起分发。Jython与Java相辅相成。 要理解Jython,我们首先需要了解Python。Python是一种广泛使用的高级编程语言,以其...

    The Definitive Guide to Jython-Python for the Java Platform

    作为 JPython 的后续版本,Jython 已经获得了“100% Pure Java”的认证,并且可以自由地用于商业或非商业用途。Jython 的源代码也对外公开。 #### 二、Jython的特点与优势 1. **无缝集成**:Jython 可以直接调用 ...

    Jython - Python的Java语言实现

    Jython - Python的Java语言实现 jython_installer-2.5.2rc2.zip 注意,需要先安装JDK 1, 解压到某处 2, 进入该解压目录, 执行jython.bat

    Java实现调用jython执行python文件的方法

    Java 实现调用 Jython 执行 Python 文件的方法 本文主要介绍了 Java 实现调用 Jython 执行 Python 文件的方法,结合实例形式分析了 Java 调用 Jython 执行 Python 文件的常见操作技巧及相关问题解决方法。 Title ...

    jython对XML的处理,封装成了工具类

    Jython是Python编程语言的一个实现,它允许Python代码运行在Java平台上,充分利用Java的库和生态系统。在本案例中,我们讨论的是一个使用Jython来处理XML的工具类,该类封装了一些基本的DOM4J操作,提供了对XML文档...

    jython-installer-2.7.0

    Jython,作为一种Python的实现,是用Java语言编写的,它允许开发者在Java平台上运行Python代码,实现了Python与Java的无缝集成。Jython 2.7.0是其一个重要的版本,提供了许多功能和性能的改进。本文将详细讲解Jython...

    Jython程序设计

    Java和Python是当前最为流行的编程语言。Java的平台无关性特点是其他语言无法比拟的,它还具有功能强大的集成开发环境,可以快速创建各种Java应用程序,...Jython是这两种语言的组合,可以预见这种语言将有广阔的前景。

    jython-standalone-2.7.0.zip

    jython-standalone-2.7.0.jar,一个将Python代码转换成Java代码的编译器,能够将自己用Python代码写的类库用在Java程序里,有需要的可以下载.java 调用 python(使用jpython)

    JPype实现在python中调用JAVA的实例

    2.JPype与Jython(JPython后继者)的区别? 1)运行环境不同:jython运行在jvm上,而JPype的实际运行环境仍然是python runtime,只是在运行期间启动了一个嵌入的jvm;  2)使用者不同:jython是给java程序玩的,JPype...

    java中调用python的必备jar包

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

    Python-1.ppt

    此外,还有基于Java的Jython版本,能够与.NET框架集成。 学习Python的原因众多。首先,Python是面向对象的语言,适合进行对象导向编程。其次,Python是解释型和交互式的,这使得它非常适合用于快速开发和调试。由于...

    为Java应用程序加入脚本引擎

    - Python: Jython (原名 JPython) - Tcl/Tk: Jacl - Perl: 尚无Java实现 - Java本身: BeanShell 在这其中,JavaScript和BeanShell因其接近Java的语法特性而更加受欢迎。接下来我们将详细介绍BeanShell及其在Java...

    jpthon安装

    若需安装额外的Python库,你可以使用Jython的内置`pip`工具。首先,启动Jpthon解释器: ``` jpython ``` 然后,在Jpthon交互式环境中,使用`pip`来安装库,例如: ``` import pip pip.main(['install', 'numpy']) ``...

    jpytnon-NEW -1.0

    标题 "jpytnon-NEW -1.0" 暗示这可能是一个与 Python 和 Java 相关的项目,因为 "jpython" 通常指的是 Jython,一个用于运行 Java 平台上的 Python 代码的实现。"NEW -1.0" 可能表示这是该项目的初始版本或者是对...

    PycharmProjects_Python编辑器_

    在【描述】中提到的“jpython编辑器”,可能是指PyCharm对Jython的支持。Jython是一种Python的实现,它可以在Java平台上运行,使得Python程序能够利用Java的类库。PyCharm通过支持Jython,为使用Java平台的开发者...

Global site tag (gtag.js) - Google Analytics