将你擅长的语言编译为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的步伐。
其他编译工具
编译为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。
相关推荐
Babel是一个转换工具,它可以将ES6+的语法转换为当前浏览器能理解的JavaScript。 6. **测试框架**:Mocha、Jest和Jasmine是JavaScript中常用的测试框架,它们提供了编写单元测试和集成测试的平台,保证代码质量。 ...
在"JavaScript语言与Ajax应用(第二版)"这本书中,作者董宁深入探讨了这两者的核心概念和技术应用。 1. **JavaScript基础**:JavaScript语言的基础包括变量、数据类型、运算符、流程控制(条件语句、循环语句)、...
转换工具可能还包含对JSON数据的处理,因为JavaScript对象和JSON(JavaScript Object Notation)之间有直接的对应关系。JSON常用于在服务器和客户端之间传递数据,JavaScript可以通过`JSON.stringify()`将对象转换为...
本篇文章将深入探讨JavaScript语言的核心概念、语法以及JScript教程,同时还会提及fileSystemObject对象的相关知识。 首先,JavaScript语法是理解编程的基础。它采用C语言风格,包含变量声明、数据类型(如字符串、...
总的来说,HTML转换工具是开发过程中的一款实用辅助工具,它简化了代码迁移和跨语言协作的过程,提高了开发效率,使得开发者能够更加专注于业务逻辑和用户体验设计,而非底层语言的差异。对于那些需要在多种技术环境...
代码转换工具是一种软件应用,主要用于将HTML代码转换成其他编程语言的代码,如JavaScript、PHP或ASP。这种工具对于开发者来说非常有用,因为它们能够帮助跨平台开发或者在不同的技术栈之间迁移代码,提高开发效率。...
总的来说,JavaScript是Web开发的核心技术之一,理解和掌握其基础知识和常用工具对于前端和后端开发者都至关重要。随着技术的发展,JavaScript的生态系统不断壮大,如React、Vue、Angular等框架,以及TypeScript这样...
总结来说,"网页JavaScript脚本语言提取器"是开发者和学习者的重要工具,它能够帮助我们深入理解网页背后的JavaScript逻辑,进行有效的测试和分析,提升开发效率和网页性能。对于那些需要从网页中获取或分析...
转换工具可以方便地将代码从一种语言转成另一种,以便于优化代码结构和性能。 3. **学习辅助**:对于初学者,这种工具可以作为学习辅助,帮助他们理解不同语言的语法结构,加深对各种技术的理解。 4. **兼容性问题...
JSON转换工具是用来将JSON格式的数据转换成其他格式(如XML、CSV、Java对象等),或者反过来,将其他格式的数据转换为JSON的软件工具。 在IT行业中,JSON转换工具是开发人员日常工作中不可或缺的一部分,尤其在处理...
JavaScript是一种广泛应用于Web开发的脚本语言,它的灵活性和强大功能使其成为构建动态网页和复杂应用程序的核心工具。然而,为了保护源代码不被轻易理解或修改,开发者有时会使用混淆技术来使代码变得难以阅读。这...
javascript编写的模仿语言包的繁简体转换工具
这种转换器的核心是SharpKit,一个高效且功能强大的编译工具,它允许开发者编写C#代码,然后在编译过程中自动将其转化为可以在浏览器环境中运行的JavaScript代码。 SharpKit的主要优点在于其编译时转换机制,这意味...
JavaScript,作为一种广泛应用于Web开发的脚本语言,其调试工具对于开发者来说至关重要。这些工具能够帮助我们找出并修复代码中的错误,优化性能,以及更好地理解程序的运行过程。以下将详细介绍JavaScript调试工具...
EasyHTMLToAnyScriptConverter是一款强大的代码转换工具,它能帮助开发者将HTML文件和代码块轻松转化为其他脚本语言,如ASP、PHP、Perl、JSP和JavaScript等。这一工具的出现,极大地提升了开发者的生产力,减少了在...
3. **数据交换**:XMLSpy还支持不同数据格式间的转换,比如XML与JSON(JavaScript Object Notation)之间的转换,这在Web服务和API开发中非常有用。 4. **XML Schema设计**:XMLSpy提供XML Schema设计工具,帮助...
11. **事件和事件处理**:JavaScript通过事件监听和触发机制处理用户输入和其他交互,如点击按钮、提交表单等。 12. **Promise与async/await**:现代JavaScript中的异步编程模型,帮助解决回调地狱问题,使代码更加...
总结,JavaScript简体繁体在线转换工具的开发是一项融合了语言学、编码原理和技术实践的任务。理解其背后的工作机制,不仅能帮助开发者更好地实现此类工具,也能推动他们在其他领域如本地化、多语言支持等方面的应用...