`
hongtoushizi
  • 浏览: 360741 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

javascript 和其他语言的转换工具

阅读更多

将你擅长的语言编译为JavaScript 

将Java代码编译为JavaScript 

尽管JavaScript名字中包含“Java”,实际上JavaScript和Java没有任何关系,只是由于当时Java火得一塌糊涂,为了借助Java的名气来推广,就起名为JavaScript了。 

各种强大的工具的出现,使得JavaScript代码和Java代码之间有了一定的联系,就是可以将Java代码编译为JavaScript代码,以便在浏览器中运行。当然,除了Java外,其他基于JVM的语言都可以如此做。 

可以实现此类操作的工具如下。 

  • BicaVM:一个使用JavaScript实现的JVM,可以运行60%的Java字节码
  • Ceylon:一个可编译为JavaScript的、模块化的、静态类型JVM语言[*]Doppio:一个使用Coffeescript实现的JVM,使得Java程序可以运行在任何JavaScript引擎上[*]GrooScript:一个可以将Groovy代码转为JavaScript代码的小框架
  • j2js:可以将Java字节码转换为JavaScript代码
  • Java2Script:Eclipse中的Java to JavaScript编译插件,并实现了一个JavaScript版的Eclipse SWT
  • Kotlin:可以编译为JVM字节码和JavaScript的静态类型编程语言
  • Processing:一个基于Java的可视化语言,可以编译为 JavaScript
  • STJS:Strongly-Typed JavaScript(强类型的JavaScript),一个可以将Java源码转换为JavaScript代码的Maven插件


将C/C++代码编译为JavaScript 

C/C++如今也可以用来编写Web应用程序,同样可以将它们编译为JavaScript。一些工具如下。 

  • Emscripten:Mozilla开发的LLVM后端,可以将任何通过LLVM前端(比如C/C++ Clang)生成的LLVMIR中间码编译成JavaScript代码。
  • mala:可以将vala代码(vala代码在编译时,首先会编译为C代码)编译为JavaScript
  • Mandreel:可以将C++和Objective-C代码编译为高度优化的JavaScript源码
  • Clue:一个C语言编译器,可以将C语言代码编译为高质量的Lua、Javascript或Perl代码。


由于Emscripten可以将LLVM二进制代码编译成JavaScript,LLVM是一种很流行的中间编译格式,几乎所有语言都有LLVM编译器,因此Emscripten也可以作为大部分语言转换为JavaScript的通用工具。 

将Python代码编译为JavaScript 

可以使用如下工具将Python代码编译为JavaScript代码。 

  • Brython:用于替换网页上的JavaScript代码,允许使用Python来编写脚本,并直接在网页上执行
  • PYXC-PJ:可以将Python转换为JavaScript,并会产生一个行/列号映射文件
  • Pyjaco:可以将Python转换为JavaScript
  • Pyjamas:Python to JS转换器
  • Pyjs:Python to JS转换器
  • PyCow:可以将Python代码转换为 MooToolsJS代码
  • PyvaScript:一个类似于Python语法并拥有JavaScript特性的编程语言
  • RapydScript:增强版的PyvaScript
  • Skulpt:客户端的Python


将Ruby代码编译为JavaScript 

在Ruby领域,有一个使用JavaScript实现的Ruby标准库—— RubyJS,它实现了Ruby中的所有方法,如Array、Numbers、Time等。Ruby之父松本行弘称“如果我必须编写JavaScript代码,我会使用RubyJS”。 

另外,你也可以使用如下工具将Ruby代码编译为JavaScript代码。 

  • 8ball:一个可以将Ruby(或Ruby子集)的源码转换为JavaScript源码的编译器
  • ColdRuby:一个Ruby 1.9 MRI字节码编译器和JS运行时,包括一个C++运行时以及用于本地执行的V8引擎
  • HotRuby:可以在浏览器内部或Flash平台上运行由YARV编译的Ruby操作码
  • Opal: 一个Ruby to JavaScript编译器,可用于任何JS环境
  • rb2js:一个Ruby to JavaScript编译器
  • Red:允许你以Ruby的方式编写代码,然后以JavaScript的方式运行代码


将.NET代码编译为JavaScript 

你可以使用如下工具将C#、F#以及其他.NET代码编译为JavaScript代码。 

  • Apps in Motion:允许使用C#来构建可以运行在任何设备上的Web应用程序
  • Blade:一个Visual Studio扩展,可以将C#代码转换为JavaScript
  • FunScript:可通过TypeScript的类型提供器将F#代码转换为JavaScript或JQuery代码
  • jsc:可将.NET程序重新编译为JavaScript、ActionScript、PHP或Java程序
  • JSIL:可将MSIL(.NET字节码)转换为 JavaScript
  • NemerleWeb:可将Nemerle语言(微软的多范型语言)编译为JavaScript
  • Pit:可将F#代码编译为Javascript
  • Prefix(开发中):可将C#代码编译为Javascript
  • Saltarelle:可将C#代码编译为Javascript
  • SharpKit(商业工具):可将C#代码编译为Javascript
  • Script#: 可将C#代码编译为Javascript
  • WebSharper:可将F#代码编译为Javascript.


将Scala代码编译为JavaScript 

你可以使用如下工具将Scala代码编译为JavaScript代码。 

  • Scala.js:一款将Scala编译为JavaScript的编译器,支持全部Scala语言特性,允许开发者用Scala开发从前端到后端的Web应用
  • js-scala:在Scala中将JavaScript作为嵌入式的DSL语言
  • Scala+GWT:通过GWT工具链将Scala代码编译为JavaScript语言


将Flash转换为JavaScript 

HTML5(HTML/JavaScript/CSS3技术组合)的最大对手就是Flash,尽管目前Flash的市场份额还高居70%,但也不可否认,未来将是HTML5的天下。 

就连Flash的开发商Adobe也开始拥抱HTML5,并发布了Toolkit for CreateJS工具,方便Web开发者将Flash转换为HTML5格式。 

去年,Google曾发布了一套基于网页的的工具——Swiffy,在线即可将SWF格式的Flash文件转化为HTML5格式。 

除了转换外,Mozilla还推出了一个新的解决方案——Shumway,这是一个“基于JavaScript的Flash虚拟机和运行时”,目的是在浏览器中构建一个可靠有效的SWF(Flash文件格式)渲染器,无需插件直接在浏览器中运行Flash。 

由此可见,这些工具将进一步加速HTML5取代Flash的步伐。 

其他编译工具 

  • Go2js:可以将Go代码行到行地编译为JavaScript代码
  • Perlito:可以将Perl 5/6代码编译为JavaScript、Ruby、SBCL和Go语言代码。


编译为JavaScript后的问题 

调试问题 

由于是交叉编译,导致输出的代码很难被跟踪调试。 

一些工具在编译的过程中会生成映射文件(将编译后的JavaScript代码映射到源语言),可以通过这些文件来进行调试。 

性能问题 

由于 JavaScript在浏览器中运行问题,本地代码编译为JavaScript后的执行速度可能会下降。 

对于此类问题,Mozilla给出了一个解决方案—— asm.js(见《 asm.js:JavaScript的“汇编语言”》)。asm.js是一个JavaScript的一个严格的子集,提供了一个类似于C/C++虚拟机的抽象实现,包括一个可有效负载和存储的大型二进制堆、整型和浮点运算、高阶函数定义、函数指针等,可以被用来作为一个底层的、高效的编译器目标语言。 

此外,还可以使用Mozilla开发的 JavaScript引擎OdinMonkey来获得更快的执行速度。开发者可以将编写的代码编译为JavaScript,然后手动编写为asm.js代码,当浏览器执行该程序时,OdinMonkey引擎会让程序的执行速度更接近于本地应用。Mozilla未来可能会开发一些工具(类似于 LLJS)来自动生成asm.js代码。 

随着技术的发展,未来JavaScript也许会跑得和native C一样快。 

一些演示 

2012年,Mozilla曾推出一款Web版的第一人称射击游戏演示BananaBread,今年5月份,Mozilla宣布与Epic Games合作将虚幻引擎3(C/C++实现)移植到浏览器上,并发布了基于虚幻引擎3的HTML5演示游戏Epic Citadel,这些游戏都是基于WebGL、 Emscripten和高性能的JavaScript子集asm.js实现,重新定义了3D游戏在浏览器中运行的性能,展示了高端游戏也可以很容易地移植到JavaScript 和 WebGL平台,同时不失性能和画面效果。 



Mozilla的另一款支持多人在线的HTML5 游戏—— BrowserQuest。 

随着HTML5新特性Full Screen API、Gamepad API和Mouse Lock API的完善,浏览器或将成为未来游戏的新战场。 

增强版的JavaScript 

JavaScript大量的扩展,在很大程度上弥补了JavaScript某些方面特性的不足。比如你可以使用如下这些工具或扩展来让JavaScript更强大。 

安全性增强 

  • ADsafe:提供了客户端静态验证功能和相关的API,增强第三方脚本的安全性
  • Caja:可以将传统的HTML和JavaScript转换为安全限制的JavaScpit格式
  • Dojo Secure:用于构建安全混搭应用的框架
  • FBJS:Facebook的 JavaScript工具,用于编写Facebook小插件
  • Jacaranda:支持对象的静态验证器
  • Gatekeeper:一个JavaScript密码保护脚本
  • Microsoft Web Sandbox:通过隔离来保证安全性


静态类型特性 

  • JSX:一个更快、更安全、更易用的JavaScript替代品
  • Elm:类型安全的函数式语言,可编译为HTML、CSS和JavaScript.
  • Lambdascript:一个强类型的纯函数式原型语言
  • MileScript:一个类似于C#和Java的强类型语言,可编译为JS
  • SafeJS:为JavaScript增加了语法糖
  • Mascara:为JavaScript增加了强大的功能,比如类、命名空间和类型检查等
  • Roy:函数式语言,与JavaScript语义保持接近,拥有类型推断、结构类型、sum类型、模式匹配等


JavaScript的衍生品 

JavaScript如今在Web开发界的地位无法撼动,但是仍不断有一些新的语言出现,希望能够通过提供更强大、更完善、更优雅的特性来代替JavaScript。 

  • CoffeeScript: CoffeeScript是一个使用纯Ruby编写的编程语言,只使用了JavaScript的“精髓”,抛弃了原来JavaScript晦涩、容易出问题的部分,如全局变量声明、with等。并提供了很多语法糖,让代码更优雅可读。
  • Dart:Google推出的一种基于类的可选类型化编程语言,可以在原生虚拟机中直接运行,也可以用编译器将Dart代码翻译成 JavaScript代码。
  • TypeScript:JavaScript的一个超集,添加了可选的静态类型和基于类的面向对象编程。
  • ClojureScript:由Clojure的创建者Rich Hickey推出,目标是“做Javascript所能做到的事情”,代码可编译为Javascript。
  • IcedCoffeeScript: Coffeescript语言的扩展集,添加了2个关键字await和defer,为浏览器和服务器两者提供了强大的异步控制功能。
  • LiveScript: Coco的一个分支,是CoffeeScript的间接子集,并在面向对象和命令式编程方面进行了诸多改进,代码可以编译成JavaScript。
  • Kaffeine:JavaScript语法的扩展,与JavaScript非常类似,代码可以直接编译成JavaScript。
分享到:
评论

相关推荐

    模仿语言包的繁简体转换工具(JS)

    javascript编写的模仿语言包的繁简体转换工具

    C# to JavaScript转换器

    SharpKit是一个用于在编译时将C#语言转换为JavaScript的工具,可以为web开发团队维护C#和JavaScript代码。

    《JavaScript语言精髓与编程实践》精选版--动态函数式语言精粹

    本文主要有“命令式语言”、“函数式语言”和“动态语言”三个部分,均精减自《JavaScript语言精髓与编程实践》一书的相应内容。本文最末一个部分,对几种语言作一综述,一孔之见而已。 本书目录 目录 精简版·序...

    基于Java的JavaFX多功能调试与转换工具设计源码

    这是一个基于Java语言开发的JavaFX多功能调试与转换工具设计,包含1603个文件。主要文件类型包括535个Java源文件、147个Markdown文档、144个Properties文件、129个PNG图片文件、112个JavaScript文件、86个FXML文件、...

    JavaScript权威指南(第6版)

    《JavaScript权威指南(第6版)》主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScript API。本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增...

    JavaScript权威指南(第6版)中文文字版

    《JavaScript权威指南(第6版)》是程序员学习核心JavaScript语言和由WEB浏览器定义的JavaScript API的指南和综合参考手册。 《JavaScript权威指南(第6版)》涵盖html5和ecmascript 5。很多章节完全重写,以便与时俱进...

    JavaScript权威指南(第6版)(中文版)

    《JavaScript权威指南(第6版)》主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScript API。本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增...

    treehugger:JavaScript AST(抽象语法树)转换工具

    它具有表示和操纵(分析,转换)通用方法。 它包括三个部分: 受启发的通用ASTs表示格式,可用于表示以任何语言(Java,Ruby,Javascript)编写的程序lib/treehugger/tree.js 受启发,用于查询,操作和注释这些...

    Excel列索引字母数字转换工具

    基于JavaScript开发的Excel列索引字母数字转换工具,可以输入Excel字母索引得到数字索引,也可以输入数字索引得到字母索引。一个小工具,可以作为参考。主要实现的是列字母、数字转换算法。基于JavaScript语言实现。

    VTL-Tools:用于验证和转换语言JavaScript工具

    JavaScript工具 该文档可在文件夹中找到并。 也可在线获得。 配套 VTL Tools是monorepo。 您可以在下面找到4个软件包的4个软件包中。 @ inseefr / vtl-tools 该库尚未维护。 最新版本是0.1.15。 Editor组件和...

    JavaScript详解(第2版)

    1.8 JavaScript和事件 9 1.9 标准化JavaScript和W3C 11 1.9.1 JavaScript对象 12 1.9.2 文档对象模型 12 1.10 关于浏览器 13 1.10.1 JavaScript的版本 14 1.10.2 你的浏览器遵循标准吗 16 1.10.3 ...

    Python和JavaScript间代码转换的4个工具

    JavaScript 已经成为众多其它编程语言争相选择的转换目标(相关实例包括 TypeScript、Emscripten、Cor 以及 Cheerp)。而 Python 则拥有庞大的追随者群体,另外现有的强大库资源则使其成为面向 JavaScript 的理想待...

    JavaScript基础教程第8版

    书中从JavaScript语言基础开始,分别讨论了图像、框架、浏览器窗口、表单、正则表达式、用户事件和cookie,并在上一版的基础上新增了两章,讲述jQuery框架的基础知识。本书不仅介绍了基础知识和使用方法,也深入探讨...

    javascript逆向 猿人学 js混淆 回溯 逆向学习

    同时,对JavaScript语言本身的特性和常见的混淆技术有深入的理解也是十分重要的,这样才能更好地理解和还原混淆后的代码。总之,JavaScript逆向学习是一项需要耐心和技术积累的工作,通过不断的实践和学习,可以提升...

    JavaScript 编译器Babel.rar

    Babel 是一个工具链,主要用于将采用 ECMAScript 2015+ 语法编写的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。下面列出的是 Babel 能为你做的事情: 语法转换 通过 ...

    JavaScript入门经典(第3版) 附书源代码.rar

    判断、循环和函数3.1 选择语句——if语句和switch语句3.2 循环语句——for语句和while语句3.3 函数3.4 创建一个“在线小测试”程序7中的基本函数3.5 小结3.6 习题第4章 JavaScript——基于对象的语言第5章 浏览器...

    JavaScript权威指南(第6版)

    《JavaScript权威指南(第6版)》是程序员学习核心JavaScript语言和由WEB浏览器定义的JavaScript API的指南和综合参考手册。 《JavaScript权威指南(第6版)》涵盖html5和ecmascript 5。很多章节完全重写,以便与时俱进...

    JS简体繁体在线转换工具.zip

    JS简体繁体在线转换工具.zip

    JavaScript中文参考手册

    本书是 JavaScript 语言的参考手册,包括核心语言中的对象和客户端、服务器端的扩展。JavaScript 是 Netscape 跨平台的基于对象的适合于客户和服务器的脚本语言。 本书已经更新于 JavaScript 1.2 的新特性,其它...

Global site tag (gtag.js) - Google Analytics