jtyhon 介绍
Jython是Python的純Java實(shí)現(xiàn)。她無縫地結(jié)合了Java類與Python,使用戶能以Python語言的語法編寫在Java虛擬機(jī)上運(yùn)行的 軟件。它的特點(diǎn)有:與相似的Java程序相比,Jython極大的的減少了編程代碼量。Jython同時(shí)擁有解釋器和編譯器,使其無需編譯就可以測試程序代碼。
Jython 是一種完整的語言,而不是一個(gè)Java翻譯器或僅僅是一個(gè)Python編譯器,它是一個(gè)Python語言在Java中的完全實(shí)現(xiàn)。 Jython也有很多從CPython中繼承的模塊庫。最有趣的事情是Jython不像CPython或其他任何高級語言,它提供了對其實(shí)現(xiàn)語言的一切存 取。所以Jython不僅給你提供了Python的庫,同時(shí)也提供了所有的Java類。這使其有一個(gè)巨大的資源庫。
Jython和 Python強(qiáng)調(diào)了代碼的簡明性、方便性和易讀性。Jython使用縮排來對代碼塊定界以避免使用在Java中的大括號。Jython 用新的一行來表示一個(gè)新的語句的開始,并有幾個(gè)重要的區(qū)別,如允許在每個(gè)語句后省略分號。Jython沒有像在Java中的public、private 和protected存取符,這樣就給程序員提供了快速開發(fā)所需要的靈活性,并將注意力集中在程序邏輯上。正像前面所提到的,Jython不用明顯的靜態(tài) 的類型定義,故程序員不需要從程序邏輯轉(zhuǎn)移到類型定義上來。
Jython的歷史要追溯到JimHugunin,他是Guidovan Rossum在國家研究動力中心(CNRI)的同事。JimHugunin認(rèn)識到Python編程語言用Java實(shí)現(xiàn)的重要性,并實(shí)現(xiàn)了最初名為 JPython的語言。由于要開發(fā)aspectj(http://aspectj.org/),JimHugunin不能繼續(xù)致力于JPython了。所 以當(dāng)Python的開發(fā)者準(zhǔn)備離開CNRI時(shí),由當(dāng)時(shí)也在CNRI的Barry Warsaw繼續(xù)領(lǐng)導(dǎo)開發(fā)。
Python和 Jython項(xiàng)目組從CNRI離開后,在Sourceforge上轉(zhuǎn)變?yōu)橐环N更開放的語言模型。在此期間,一個(gè)對 Jython(JPython)做了主要貢獻(xiàn)的人FinnBock領(lǐng)導(dǎo)了Jython項(xiàng)目小組。正是由于FinnBock所做的杰出貢獻(xiàn)使Jython現(xiàn) 在成為一個(gè)如此有價(jià)值的工具。類似Jython這樣的開放源代碼項(xiàng)目與開發(fā)和維護(hù)它們的人一樣杰出,從這個(gè)意義上說Jython因?yàn)橛蠪innBack的 貢獻(xiàn)和指導(dǎo)而很幸運(yùn)。另外一個(gè)對Jython做了最新有價(jià)值貢獻(xiàn)的人是SamuelePedroni。Samuele的貢獻(xiàn)主要在Jython的類裝載、 導(dǎo)入機(jī)制等等。Finn和Samuele目前是Jython的兩個(gè)主要開發(fā)者。
少一些攀比與炫耀,勁量避免趨利性。加上自卑感被放大
?其實(shí)是無法調(diào)動國民生產(chǎn)積極性罷了,其實(shí)還真要謝謝你們這些做銷售的
我也沒什么好開發(fā),只能去開發(fā)客戶嘍
谷歌推出全新Android開發(fā)語言Sky:讓App更流暢
除游戲之外的Android應(yīng)用通常使用Java語言來開發(fā),而谷歌內(nèi)部的一個(gè)團(tuán)隊(duì)正在探索全新的應(yīng)用開發(fā)方式。他們利用了谷歌自主的網(wǎng)頁開發(fā)語言Dart來開發(fā)Android應(yīng)用。這幫助他們專注于速度,并可以與網(wǎng)頁進(jìn)行深度整合。
Dart由Chrome V8引擎的團(tuán)隊(duì)成員發(fā)明。該團(tuán)隊(duì)近期舉行了Dart開發(fā)者峰會,展示了在Android項(xiàng)目中使用的Dart。在Android項(xiàng)目中使用的Dart并未被稱作“Android版Dart”,而是有了一個(gè)新名字“Sky”。目前,Sky只是一次開源的嘗試。但相對于傳統(tǒng)的Android應(yīng)用開發(fā)方式,Sky有著多方面優(yōu)勢。
Sky的最主要目的包括提高運(yùn)行速度和響應(yīng)速度。在大部分設(shè)備上,應(yīng)用流暢的標(biāo)準(zhǔn)都是實(shí)現(xiàn)60FPS的幀率。不過,Dart團(tuán)隊(duì)希望實(shí)現(xiàn)高達(dá)120FPS的幀率。目前在Android平臺上,許多應(yīng)用連標(biāo)準(zhǔn)的60FPS幀率都難以達(dá)到,更不用說120FPS。60FPS的幀率要求每16毫秒繪制一幀,當(dāng)畫面繪制速度達(dá)不到這一水平時(shí),應(yīng)用就會出現(xiàn)卡頓。
Dart團(tuán)隊(duì)展示了一款演示應(yīng)用,每幀的繪制速度僅為1.2毫秒。盡管這只是一次簡單的展示,但這意味著,對于開發(fā)流暢而復(fù)雜的應(yīng)用來說,Sky有著很大的空間,這也使120FPS的幀率成為了可能。該團(tuán)隊(duì)表示,Sky的應(yīng)用程序接口(API)不會影響界面的主線程,這意味著即使應(yīng)用運(yùn)行速度變慢,用戶界面仍將保持流暢的響應(yīng)速度。
Sky并不依賴于平臺,其代碼可以運(yùn)行在Android、iOS,以及任何集成了Dart虛擬機(jī)的平臺上。這類應(yīng)用的運(yùn)行類似于網(wǎng)站。應(yīng)用的很大一部分基于HTTP,這意味著開發(fā)者可以進(jìn)行持續(xù)的開發(fā),并確保所有用戶一直使用最新版本。這款演示應(yīng)用的弱點(diǎn)在于無法離線運(yùn)行,而啟動應(yīng)用則需要1到2秒鐘時(shí)間,因?yàn)閼?yīng)用需要下載數(shù)據(jù)。不過,這兩方面的問題可以通過緩存機(jī)制來解決。
基于HTTP的模式使開發(fā)變得很簡單。開發(fā)者不必編輯代碼、編譯并打包,這些代碼可以在HTTP服務(wù)器上編輯。而用戶只需關(guān)閉并重新打開應(yīng)用,即可完成應(yīng)用的“升級”。這就像是一款網(wǎng)頁瀏覽器。Android開發(fā)者可以使用Sky Framework,這提供了一整套Material Design小工具,幫助開發(fā)者方便地增加操作欄、觸控效果、導(dǎo)航面板,以及Android應(yīng)用中所需的一切元素。
與普通應(yīng)用類似,Sky應(yīng)用可以獲得Android的全部權(quán)限和API,但結(jié)合來自網(wǎng)頁服務(wù)器的自動升級功能,這將帶來信息安全問題。不過目前,Sky僅僅只是一個(gè)試驗(yàn)項(xiàng)目。在Sky成為一種主流的Android應(yīng)用解決方案之前,Sky團(tuán)隊(duì)需要解決這些問題。該團(tuán)隊(duì)的GitHub頁面顯示:“我們?nèi)栽趯ky進(jìn)行頻繁地迭代,這意味著框架和底層引擎有可能以不兼容的方式出現(xiàn)改變。”
JAVA調(diào)用jython執(zhí)行python文件
原創(chuàng)?2017年03月21日 22:18:27- 1771
在web開發(fā)時(shí)候,經(jīng)常在web環(huán)境使用本地環(huán)境的第三方庫什么的,本文講解java如何執(zhí)行python文件。?
網(wǎng)上說方法有三種,其實(shí)也就兩種,下面著中介紹第二種通過(jython)。
方法一
java.lang.Runtime
Runtime rt = Runtime.getRuntime();?try?{ Process proc = rt.exec("python /tmp/test.py"); }catch?(Exception?e){ e.printStackTrace(); }小計(jì)一下:?
1、Runtime.getRuntime()可以取得當(dāng)前JVM的運(yùn)行時(shí)環(huán)境,這也是在Java中唯一一個(gè)得到運(yùn)行時(shí)環(huán)境的方法。?
2、Runtime上其他大部分的方法都是實(shí)例方法,也就是說每次進(jìn)行運(yùn)行時(shí)調(diào)用時(shí)都要用到getRuntime方法。?
3、Runtime中的exit方法是退出當(dāng)前JVM的方法,估計(jì)也是唯一的一個(gè)吧,因?yàn)槲铱吹絊ystem類中的exit實(shí)際上也是通過調(diào)用Runtime.exit()來退出JVM的,這里說明一下Java對Runtime返回值的一般規(guī)則(后邊也提到了),0代表正常退出,非0代表異常中止,這只是Java的規(guī)則,在各個(gè)操作系統(tǒng)中總會發(fā)生一些小的混淆。
第二種(重點(diǎn))
調(diào)用jython API
第一步:添加依賴
<!--?https://mvnrepository.com/artifact/org.python/jython?-->?<dependency>?<groupId>org.python</groupId><artifactId>jython</artifactId><version>2.7.0</version>?</dependency>第二步:新建一個(gè)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'"); }}第三步:運(yùn)行Test.java
Testing started at 下午9:40?...Tuethis is test.pycreated by tengxing on?2017.3!進(jìn)程已結(jié)束,退出代碼0?
提醒可能報(bào)如下異常:
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?
解決:
ok 完美
//調(diào)用python中的方法,并且打印結(jié)果?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 官方文檔(翻譯)
有時(shí)間過來和大家一起分享一下Android開發(fā)使用的另一種新語言,本文章是原創(chuàng)翻譯,有理解的不到位的地方,請多多指教- 1
- 2
使用Kotlin進(jìn)行Android開發(fā)
Kotlin是一個(gè)很好的適合開發(fā)Android應(yīng)用程序,不帶任何新的限制的引入Android平臺的現(xiàn)代語言的所有優(yōu)點(diǎn):?
—兼容性:Kotlin可以完全兼容JDK6,以確保Kotlin應(yīng)用程序可以毫無問題的運(yùn)行在Android老設(shè)備上。Kotlin工具現(xiàn)在也已經(jīng)完全支持AndroidStudio開發(fā)同時(shí)可兼容Android構(gòu)建系統(tǒng)。?
—性能:由于Kotlin具有和Java相似的字節(jié)碼結(jié)構(gòu),一個(gè)Kotlin應(yīng)用可以和一個(gè)相同意義的Java應(yīng)用運(yùn)行的一樣快。?
—互用性:由于Kotlin和Java是100%相互協(xié)調(diào)工作,在Kotlin應(yīng)用中允許使用所有現(xiàn)有的Android庫。這包括注解處理、數(shù)據(jù)綁定、Dagger注入框架。?
—封裝性:Kotlin是一個(gè)非常緊湊的運(yùn)行時(shí)庫,通過使用混淆器可以更進(jìn)一步簡化。在一個(gè)真實(shí)的應(yīng)用程序中,Kotlin運(yùn)行時(shí)添加只有幾百種方法和大小不超過100k的apk文件。?
—編譯時(shí)間:Kotlin支持高效的增量編譯,雖然清理構(gòu)建需要一些額外的開銷,但是增量構(gòu)建通常比使用Java一樣快或者更快。?
—曲線學(xué)習(xí):對于一個(gè)Java開發(fā)者來說,開始使用Kotlin是很容易的。自動從Java到Kotlin的轉(zhuǎn)化的第一步包括Kotlin插件的幫助。通過語言的關(guān)鍵特征,使用一系列交互式的練習(xí),Kotlin Koans提供指導(dǎo)。
使用Kotlin進(jìn)行Android開發(fā)案例研究?
Kotlin已經(jīng)成功的被大公司采納接收,而且他們中的一些人已經(jīng)分享了他們的經(jīng)歷:?
—Pinterest已經(jīng)成功的將Kotlin引入他們的應(yīng)用程序中,而且每個(gè)月有150人的使用。?
—Basecamp的Android應(yīng)用程序中100%是Kotlin代碼,同時(shí)他們報(bào)道在程序員的滿意度和在提升工作質(zhì)量和速度上有一個(gè)巨大的差異。?
—Keepsafe鎖的應(yīng)用程序,也將被100%轉(zhuǎn)化成Kotlin,這將導(dǎo)致源代碼行數(shù)減少30%,方法減少10%。?
Android開發(fā)工具?
Kotlin團(tuán)隊(duì)為Android開發(fā)提供了一組超出標(biāo)準(zhǔn)語言特點(diǎn)的工具:?
—使用Kotlin Android的擴(kuò)展是一個(gè)編譯器擴(kuò)展,可以讓你擺脫findViewById()在你代碼中的調(diào)用,同時(shí)使用合成編譯器生成的屬性來替換它。?
—Anko是一個(gè)提供一組Kotlin使用方便的封裝器在AndroidAPI中,而且DSL使用Kotlin代碼來取代你的布局文件。
接下來的步驟?
—下載并安裝支持Kotlin開發(fā)的Android Studio 3.0版本 預(yù)覽版?
—遵循Android和Kotlin的指導(dǎo)開始創(chuàng)建你的第一個(gè)Kotlin應(yīng)用程序。?
—更深入的了解,可以查看這個(gè)網(wǎng)站的參考文檔和Kotlin Koans。?
—對于Android開發(fā)人員另一個(gè)大資源是這本書{《Kotlin》,這本書通過創(chuàng)建一個(gè)真正的Android應(yīng)用程序,一步一步指導(dǎo)你。?
轉(zhuǎn)載于:https://www.cnblogs.com/totoo/p/jython.html
總結(jié)
- 上一篇: 【转】Odoo装饰器: one装饰
- 下一篇: 炸金花的JS实现从0开始之 ------