`

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

分享到:
评论

相关推荐

    The Definitive Guide to Jython-Python for the Java Platform

    The predecessor to Jython, JPython, is certified as 100% Pure Java. Jython is freely available for both commercial and noncommercial use and is distributed with source code. Jython is complementary ...

    setupjavax:提供Java和集成的Jython / Pyhon + Java构建-开源

    “ setupjavax”软件包提供了用于构建Java和Jython软件包的扩展模块。 当前版本支持以下命令,其他命令即将推出:-build_java-用于Python的Java构建和打包。 支持Python项目的Java打包,并为Jython添加了本机Java...

    java中jython操作把python数据类型转成java类型

    java中jython操作把python数据类型转成java类型 例如list->List dict->Map set->Set 以及一些基本操作的包装整合

    jython-standalone-2.7.0(最新版本)

    一个将Python代码转换成Java代码的编译器,能够将自己用Python代码写的类库用在Java程序里,有需要的可以下载,亲测可用。 如果windows的用户安装插件有问题的,尝试一下换这个jython: Jython官网: ...

    Maven Jython/Python integration-开源

    使用python / jython和python包,可以轻松构建和部署Java项目。

    The Definitive Guide to Jython

    The predecessor to Jython, JPython, is certified as 100% Pure Java. Jython is freely available for both commercial and noncommercial use and is distributed with source code. Jython is complementary ...

    Jython for Java Programmers.chm

    Jython for Java Programmers.chm Java程序员学习Jython的教程。

    jython-2.5.0.jar 类库

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

    java与Jython的相互调用

    java与Jython的相互调用,对初学者很有帮助

    jpython 文件jython.jar包

    jpython 文件jython.jar包 若不能用了可留言问我

    Jython - Python的Java语言实现

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

    jython-installer-2.7.3.jar

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

    jython介绍及使用

    Jython 是一种完整的语言,而不是一个简单的 Java 翻译器或 Python 编译器,它是 Python 在 Java 中的完整实现。由于 Jython 继承了 Java 和 Python 二者的特性从而使其显得很独特。那 Jython,Java 以及 Python ...

    Jython 2.7 正式版 —— installer jar

    经过近3年的等待,Jython 2.7的正式版终于出来了,放到CSDN上来方便大家下载。这是installer jar

    jython-installer-2.7.2.jar

    Jython 是专为 Java 平台设计的 Python 解释器(http://www.jython.org/),它把 Python 代码编译成 Java 字节码执行。

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

    jython解析xml的工具类,实现了简单的dom4j的功能,里面有测试类和相关的测试xml文件。

    jython_installer-2.5.2

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

    PolyglotGora:Jython 的 Gora 绑定

    多语种 Clojure 要运行 clojure 示例,请将导出的 jar(存储库中的 PolyglotGora.jar 或您自己导出)添加... $ java -jar jython.jar {$PROJECT\_DIRECTORY}/src/org/apache/gora/jython/gora\_jython.py py4j 确保你

    Jython程序设计

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

Global site tag (gtag.js) - Google Analytics