Jython是Python的纯Java实现。她无缝地结合了Java类与Python,使用户能以Python语言的语法编写在Java虚拟机上运行的 软件。它的特点有:与相似的Java程序相比,Jython极大的的减少了编程代码量。Jython同时拥有解释器和编译器,使其无需编译就可以测试程序代码。
Jython 是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。 Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存 取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。
Jython和 Python强调了代码的简明性、方便性和易读性。Jython使用缩排来对代码块定界以避免使用在Java中的大括号。Jython 用新的一行来表示一个新的语句的开始,并有几个重要的区别,如允许在每个语句后省略分号。Jython没有像在Java中的public、private 和protected存取符,这样就给程序员提供了快速开发所需要的灵活性,并将注意力集中在程序逻辑上。正像前面所提到的,Jython不用明显的静态 的类型定义,故程序员不需要从程序逻辑转移到类型定义上来。
Jython的历史要追溯到JimHugunin,他是Guidovan Rossum在国家研究动力中心(CNRI)的同事。JimHugunin认识到Python编程语言用Java实现的重要性,并实现了最初名为 JPython的语言。由于要开发aspectj(http://aspectj.org/),JimHugunin不能继续致力于JPython了。所 以当Python的开发者准备离开CNRI时,由当时也在CNRI的Barry Warsaw继续领导开发。
Python和 Jython项目组从CNRI离开后,在Sourceforge上转变为一种更开放的语言模型。在此期间,一个对 Jython(JPython)做了主要贡献的人FinnBock领导了Jython项目小组。正是由于FinnBock所做的杰出贡献使Jython现 在成为一个如此有价值的工具。类似Jython这样的开放源代码项目与开发和维护它们的人一样杰出,从这个意义上说Jython因为有FinnBack的 贡献和指导而很幸运。另外一个对Jython做了最新有价值贡献的人是SamuelePedroni。Samuele的贡献主要在Jython的类装载、 导入机制等等。Finn和Samuele目前是Jython的两个主要开发者。
少一些攀比与炫耀,劲量避免趋利性。加上自卑感被放大
其实是无法调动国民生产积极性罢了,其实还真要谢谢你们这些做销售的
我也没什么好开发,只能去开发客户喽
谷歌推出全新Android开发语言Sky:让App更流畅
除游戏之外的Android应用通常使用Java语言来开发,而谷歌内部的一个团队正在探索全新的应用开发方式。他们利用了谷歌自主的网页开发语言Dart来开发Android应用。这帮助他们专注于速度,并可以与网页进行深度整合。
Dart由Chrome V8引擎的团队成员发明。该团队近期举行了Dart开发者峰会,展示了在Android项目中使用的Dart。在Android项目中使用的Dart并未被称作“Android版Dart”,而是有了一个新名字“Sky”。目前,Sky只是一次开源的尝试。但相对于传统的Android应用开发方式,Sky有着多方面优势。
Sky的最主要目的包括提高运行速度和响应速度。在大部分设备上,应用流畅的标准都是实现60FPS的帧率。不过,Dart团队希望实现高达120FPS的帧率。目前在Android平台上,许多应用连标准的60FPS帧率都难以达到,更不用说120FPS。60FPS的帧率要求每16毫秒绘制一帧,当画面绘制速度达不到这一水平时,应用就会出现卡顿。
Dart团队展示了一款演示应用,每帧的绘制速度仅为1.2毫秒。尽管这只是一次简单的展示,但这意味着,对于开发流畅而复杂的应用来说,Sky有着很大的空间,这也使120FPS的帧率成为了可能。该团队表示,Sky的应用程序接口(API)不会影响界面的主线程,这意味着即使应用运行速度变慢,用户界面仍将保持流畅的响应速度。
Sky并不依赖于平台,其代码可以运行在Android、iOS,以及任何集成了Dart虚拟机的平台上。这类应用的运行类似于网站。应用的很大一部分基于HTTP,这意味着开发者可以进行持续的开发,并确保所有用户一直使用最新版本。这款演示应用的弱点在于无法离线运行,而启动应用则需要1到2秒钟时间,因为应用需要下载数据。不过,这两方面的问题可以通过缓存机制来解决。
基于HTTP的模式使开发变得很简单。开发者不必编辑代码、编译并打包,这些代码可以在HTTP服务器上编辑。而用户只需关闭并重新打开应用,即可完成应用的“升级”。这就像是一款网页浏览器。Android开发者可以使用Sky Framework,这提供了一整套Material Design小工具,帮助开发者方便地增加操作栏、触控效果、导航面板,以及Android应用中所需的一切元素。
与普通应用类似,Sky应用可以获得Android的全部权限和API,但结合来自网页服务器的自动升级功能,这将带来信息安全问题。不过目前,Sky仅仅只是一个试验项目。在Sky成为一种主流的Android应用解决方案之前,Sky团队需要解决这些问题。该团队的GitHub页面显示:“我们仍在对Sky进行频繁地迭代,这意味着框架和底层引擎有可能以不兼容的方式出现改变。”
JAVA调用jython执行python文件
- 1771
在web开发时候,经常在web环境使用本地环境的第三方库什么的,本文讲解java如何执行python文件。
网上说方法有三种,其实也就两种,下面着中介绍第二种通过(jython)。
方法一
java.lang.Runtime
Runtime rt = Runtime.getRuntime(); try { Process proc = rt.exec("python /tmp/test.py"); }catch (Exception e){ e.printStackTrace(); }
小计一下:
1、Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法。
2、Runtime上其他大部分的方法都是实例方法,也就是说每次进行运行时调用时都要用到getRuntime方法。
3、Runtime中的exit方法是退出当前JVM的方法,估计也是唯一的一个吧,因为我看到System类中的exit实际上也是通过调用Runtime.exit()来退出JVM的,这里说明一下Java对Runtime返回值的一般规则(后边也提到了),0代表正常退出,非0代表异常中止,这只是Java的规则,在各个操作系统中总会发生一些小的混淆。
第二种(重点)
调用jython API
第一步:添加依赖
<!-- https://mvnrepository.com/artifact/org.python/jython --> <dependency> <groupId>org.python</groupId><artifactId>jython</artifactId><version>2.7.0</version> </dependency>
第二步:新建一个Test.java测试类
import org.python.util.PythonInterpreter;import java.util.Properties;/** * Author: 遇见小星 * Email: tengxing7452@163.com * Date: 17-3-21 * Time: 下午8:18 * Describe: jpython test */public class Test { publicstatic void main(String []args){ PythonInterpreter interpreter = new PythonInterpreter(); interpreter.exec("days=('Mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); interpreter.exec("print days[1];"); interpreter.execfile("/tmp/test.py"); interpreter.exec("print 'created by tengxing on 2017.3'"); }}
第三步:运行Test.java
Testing started at 下午9:40 ...Tuethis is test.pycreated by tengxing on 2017.3!进程已结束,退出代码0
提醒可能报如下异常:
Exception in thread "main" ImportError: Cannot import site module and its dependencies: No module named siteDetermine if the following attributes are correct:
原因:没有初始化 python.import.site
解决:
public class Test { public static void main(String []args){ Properties props = new Properties(); props.put("python.home", "path to the Lib folder"); props.put("python.console.encoding", "UTF-8"); props.put("python.security.respectJavaAccessibility", "false"); props.put("python.import.site", "false"); Properties preprops = System.getProperties(); PythonInterpreter.initialize(preprops, props, new String[0]); PythonInterpreter interpreter = new PythonInterpreter(); interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); interpreter.exec("print days[1];"); interpreter.execfile("/tmp/test.py"); interpreter.exec("print 'created by tengxing on 2017.3!'"); }}
ok 完美
//调用python中的方法,并且打印结果 PyFunction func = (PyFunction) interpreter.get("adder",PyFunction.class); int a = 2010, b = 2; PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b)); System.out.println("anwser = " + pyobj.toString());
参考文章:
http://blog.csdn.net/fei33423/article/details/53491414
http://blog.csdn.net/guo_rui22/article/details/3765378
http://www.cnblogs.com/liinux/p/5481849.html
http://www.oschina.net/code/snippet_119671_5971
Kotlin 官方文档(翻译)
有时间过来和大家一起分享一下Android开发使用的另一种新语言,本文章是原创翻译,有理解的不到位的地方,请多多指教
- 1
- 2
使用Kotlin进行Android开发
Kotlin是一个很好的适合开发Android应用程序,不带任何新的限制的引入Android平台的现代语言的所有优点:
—兼容性:Kotlin可以完全兼容JDK6,以确保Kotlin应用程序可以毫无问题的运行在Android老设备上。Kotlin工具现在也已经完全支持AndroidStudio开发同时可兼容Android构建系统。
—性能:由于Kotlin具有和Java相似的字节码结构,一个Kotlin应用可以和一个相同意义的Java应用运行的一样快。
—互用性:由于Kotlin和Java是100%相互协调工作,在Kotlin应用中允许使用所有现有的Android库。这包括注解处理、数据绑定、Dagger注入框架。
—封装性:Kotlin是一个非常紧凑的运行时库,通过使用混淆器可以更进一步简化。在一个真实的应用程序中,Kotlin运行时添加只有几百种方法和大小不超过100k的apk文件。
—编译时间:Kotlin支持高效的增量编译,虽然清理构建需要一些额外的开销,但是增量构建通常比使用Java一样快或者更快。
—曲线学习:对于一个Java开发者来说,开始使用Kotlin是很容易的。自动从Java到Kotlin的转化的第一步包括Kotlin插件的帮助。通过语言的关键特征,使用一系列交互式的练习,Kotlin Koans提供指导。
使用Kotlin进行Android开发案例研究
Kotlin已经成功的被大公司采纳接收,而且他们中的一些人已经分享了他们的经历:
—Pinterest已经成功的将Kotlin引入他们的应用程序中,而且每个月有150人的使用。
—Basecamp的Android应用程序中100%是Kotlin代码,同时他们报道在程序员的满意度和在提升工作质量和速度上有一个巨大的差异。
—Keepsafe锁的应用程序,也将被100%转化成Kotlin,这将导致源代码行数减少30%,方法减少10%。
Android开发工具
Kotlin团队为Android开发提供了一组超出标准语言特点的工具:
—使用Kotlin Android的扩展是一个编译器扩展,可以让你摆脱findViewById()在你代码中的调用,同时使用合成编译器生成的属性来替换它。
—Anko是一个提供一组Kotlin使用方便的封装器在AndroidAPI中,而且DSL使用Kotlin代码来取代你的布局文件。
接下来的步骤
—下载并安装支持Kotlin开发的Android Studio 3.0版本 预览版
—遵循Android和Kotlin的指导开始创建你的第一个Kotlin应用程序。
—更深入的了解,可以查看这个网站的参考文档和Kotlin Koans。
—对于Android开发人员另一个大资源是这本书{《Kotlin》,这本书通过创建一个真正的Android应用程序,一步一步指导你。
—查看谷歌在《Kotlin》中的示例项目。