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文件

原创 2017年03月21日 22:18:27
  • 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》中的示例项目。 

jtyhon 介绍的更多相关文章

  1. 【转】介绍Jython,第一部分:轻轻松松写JAVA程序

    本文转自:http://www.ibm.com/developerworks/cn/education/java/j-jython1/index.html 关于本教程 本教程介绍哪些内容? 这个两部分 ...

  2. CSS3 background-image背景图片相关介绍

    这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...

  3. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  4. Windows Server 2012 NIC Teaming介绍及注意事项

    Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...

  5. Linux下服务器端开发流程及相关工具介绍(C++)

    去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...

  6. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  7. HTML DOM 介绍

    本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...

  8. HTML 事件(一) 事件的介绍

    本篇主要介绍HTML中的事件知识:事件相关术语.DOM事件规范.事件对象. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三 ...

  9. HTML5 介绍

    本篇主要介绍HTML5规范的内容和页面上的架构变动. 目录 1. HTML5介绍 1.1 介绍 1.2 内容 1.3 浏览器支持情况 2. 创建HTML5页面 2.1 <!DOCTYPE> ...

随机推荐

  1. 📉 Draggable Curve Control (English)

    Conmajia 2012 Updated on Feb. 18, 2018 In Photoshop, there is a very powerful feature called Curve A ...

  2. CSS3及JS媒体查询教程

    CSS3媒体查询: 语法: <media_query_list>:<media_query>[,<media_query>] <media_query> ...

  3. PHP 支持8种基本的数据类型

    四种标量类型: boolean (布尔型):这是最简单的类型,只有两种取值,可以为 TRUE/true 或 FALSE/false ,不区分大小写.详细请查看:PHP布尔类型(boolean)inte ...

  4. nginx的负载均衡集群测试

    分别在3台机子安装nginx和启动nginx服务. dir: 192.168.0.7 另外2台服务器为 192.168.0.5 ,192.168.0.6 在dir  192.168.0.7 上增加配置 ...

  5. hexo博客简易搭建教程

    什么是Hexo Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页.官网 Hexo安装 安装 在安装Hex ...

  6. 解决hadoop中 bin/hadoop fs -ls ls: `.': No such file or directory问题

    出现这样的问题确实很苦恼...使用的是2.7版本..一般论坛上的都是1.x的教程,搞死人 在现在的2.x版本上的使用bin/hadoop fs -ls  /就有用 应该使用绝对路径就不会有问题.... ...

  7. rxjs-流式编程

    前言 第一次接触rxjs也是因为angular2应用,内置了rxjs的依赖,了解之后发现它的强大,是一个可以代替promise的框架,但是只处理promise的东西有点拿尚方宝剑砍蚊子的意思. 如果我 ...

  8. 老男孩Python全栈开发(92天全)视频教程 自学笔记16

    day16课程内容: 装饰器: def outer(): x=10 def inner(): print(x) return innerouter()() #inner 是局部变量,10闭包:如果在一 ...

  9. 危化品速查APP--Android Project

    开发环境 Android studio 2.3.1 功能描述 集成多种查询方式,查看本地数据库中危险化学品的信息: 按照中文拼音和英文首字母,对化学品进行查询: 按照UN号或者CAS号查询相应的化学品 ...

  10. 最长周长三角形 O(nlogn)

    题意   有根棍子,棍子的长度为.想要从中选出三根棍子组成周长尽可能长的三角形.请输出最大的周长,若无法组成三角形输出0. 思路   很容易想到采用三重循环来枚举所有三角形,复杂度为.   更好的办法 ...