最終更新:2013-03-18 (月) 08:23:13 (4423d)
altJS
Top / altJS
Alternatives to JavaScript
Compile-to-JavaScript Languages
- Caffeine? - A dialect of CoffeeScript that support packages and classes import, useful for browser applications.
- CoffeeScript - An alternative syntax for JavaScript inspired by Ruby, Python and others.
- CoffeeScript Redux? - Independent rewrite of the CoffeeScript compiler.
- Coco? - A CoffeeScript variant with cutting-edge experimental features.
- Contracts.coffee? - CoffeeScript dialect with runtime contracts.
- GorillaScript? - A compile-to-JavaScript language designed to empower coders whilst also preventing some common programming errors.
- heap.coffee? - A dialect of CoffeeScript that offers a C-like type system with manual memory management.
- IcedCoffeeScript? - A CoffeeScript dialect that adds support for await and defer keywords which simplify async control flow.
- Jack - A language that emphasizes simplicity, fun and productivity.
- JMacro? - An untyped mixture of JavaScript and Haskell syntax that bridges a gap between those two languages. Can be used in a Haskell environment or run as a standalone compiler.
- JS11? - [complete but currently inactive] A flexible set of syntax transformations that all compile line-for-line to proper JavaScript equivalents.
- Kaffeine? - Progressive enhancement of JavaScript, aimed at professionals.
- LittleSmallscript? - A project with philosophical similarity to CoffeeScript, except that the language syntax is based on Little Smalltalk.
- LispyScript? - A JavaScript with Lispy syntax and Macros.
- LiveScript? - Coco? but much more compatible with CoffeeScript, more functional, and more feature rich.
- LLJS? - "bastard child of C and JavaScript" that offers explicit memory management and other C-like features in a typed dialect of JavaScript. Research project.
- Moescript? - Indent-based language.
- Move? - A simplified language intended for new programmers.
- pogoscript? - Language that emphasises readability, handles async control flow nicely, is friendly to domain specific languages and compiles to regular JavaScript.
- Sibilant? - An expandable JavaScript-like language inspired by Lisp.
- ToffeeScript? - A dialect of CoffeeScript that support Asynchronous Syntax, Symbol and Regexp operator =~.
- Parsec CoffeeScript? - An extensible fork of the CoffeeScript project.
- Uberscript?, a CoffeeScript fork that adds type annotations which are compiled to Google closure compiler type annotation comments.
- Zedscript? - Pseudocode-ish syntax alternative to the ECMAScript syntax.
JavaScript Enhancements
Security Enforcement
- ADsafe? - Client-side static verifier and API, making third party scripts safe.
- Caja - Compiles ES5/strict to ES3 and supports object-capabilities.
- Dojo Secure? - Framework for building secure mashups.
- FBJS? - Facebook JavaScript, used for scripting Facebook gadgets.
- Jacaranda? - Static verifier supporting object-capabilities.
- Gatekeeper - Microsoft Research project.
- Microsoft - Web Sandbox Technology preview, security through isolation.
Static Typing
- Some of the others listed are statically typed, such as mobl, GWT, NS Basic?, and Haxe.
- Elm - type-safe functional language that compiles to HTML, CSS, and JavaScript.
- JSX - a faster, safer, easier alternative to JavaScript.
- Lambdascript? - [superceded by the Haste project] A prototype language intended to allow strongly-typed purely functional web scripting.
- MileScript? - [commercial] A strongly-typed language similar to C# and Java, but which compiles to JS. free for non-profit, educational use.
- Mascara? - [commercial] Enhances JavaScript with powerful features like classes, namespaces and type-checking.
- Pit? - F♯ to Javascript compiler.
- Prefix? - C♯ like language with readable output.
- Roy? - Functional language with type inference, structural typing, sum types, pattern matching - tries to stay close to JavaScript semantics.
- SafeJS? - Typed JS with optional syntactic sugar.
- Script♯? - [commercial] Compiles C♯ to JS.
- TypeScript - Microsoft's open source expansion of JavaScript with Visual Studio Intellisense to make building typed JS applications easier.
Synchronous to Asynchronous (CPS)
- async.js? - Async utilities for Node.js and the browser.
- Continuation.js? - A lightweight JIT compiler for simplifying asynchronous JavaScript programming with no runtime dependences. It supports both Node.js and browser-side JavaScript and is compatible with CoffeeScript (also TypeScript, and any other scripts compile to JS).
- Jscex? - Write simple JavaScript code, execute it asynchronously by compiling to monadic form. Works in any ECMAScript 3 engines directly.
- jwacs? - JavaScript With Advanced Continuation Support.
- mobl - Screen-driven language and toolset for building mobile web apps.
- NarrativeJS? - JavaScript extension with asynchronous futures and promises.
- StratifiedJS? - JavaScript plus structured concurrency.
- Streamline.js? - Uses underscore (_) to stand for callbacks. This fork preserves line numbers for debugging.
- TameJS? - From OkCupid?, a cleaner way to write async JavaScript.
- Wind.js? - Wind.js is an advanced library which enable us to control flow with plain JavaScript for asynchronous programming (and more) without additional pre-compiling steps.
Language Extensions
- ContextJS? - is an implementation of Context-oriented Programming for JavaScript.
- Cycript? - An Objective-C / JavaScript bridge that can also be used to compile and compress standard or hybrid JavaScript syntax.
- Flapjax? - Event-driven, reactive evaluation.
- Jangaroo? - AS3 (ActionScript) to JavaScript.
- JavaScript++? - Superset of JS that includes features such as classes, block scoping and a pluggable type system.
- jLang? - adds object oriented syntax, namespaces, operators overriding.
- JS2? - Object-oriented JavaScript with syntactic sugar (curry, foreach, property). Released as a Ruby gem.
- Mochiscript? - Object-oriented JavaScript with syntactic sugar. Released as a Ruby gem.
- Objective-J? - Shares with JavaScript the same relationship that Objective-C has with the C programming language: that of being a strict, but small, superset.
- Restrict? - Mode Tightens up the behavior of several JavaScript operators, including ==.
- Six - Six is a language super-set of JavaScript that enables new syntactic features from the 6th edition of ECMAScript to be used, through a transpiler, in your scripts today.
- TIScript? - gentle extension of JavaScript.
Ports of Existing Languages
Ruby
- 8ball? - Specifically targets the V8 engine, and transforms a partial subset of Ruby into JavaScript.
- ColdRuby? - A Ruby 1.9 MRI bytecode compiler and JS runtime. (includes a C++ runtime incorporating the V8 engine for native execution.)
- HotRuby? - Runs opcode, compiled by YARV on Ruby inside a web browser or in Flash.
- Opal - A Ruby to JavaScript compiler created by Adam Beynon, with a tiny runtime that can be used in any JS environment. Has custom integration with jQuery, node.js and Rails.
- rb2js? - Converts Ruby to JavaScript.
- Red? - Writes like Ruby and runs like JavaScript.
- Quby? - Used for game coding site, not open source (requires HTML5).
Ruby-related Libraries
- RubyJS? - Endorsed by Yukihiro (Matz?) Matsumoto, creator of Ruby. A JS library that ports the code-lib functions of Ruby to JavaScript, yielding an R object that can be used as an alternative to libraries like Underscore.js. Integrates nicely with CoffeeScript syntax.
Python
- Brython - Browser Python.
- PYXC-PJ? - Python to JS. Can generate a (line/col)-number mappings file.
- Pyjaco? - Python to JavaScript compiler with module support.
- Pyjamas? - Python to JS.
- Pyjs - Python to (readable) JS.
- PyCow? - Python to MooTools JS.
- PyvaScript? - Python-like syntax to JavaScript.
- RapydScript? - Improved PyvaScript?
- Skulpt? - Python. Client side.
Perl
Java - and JVM
- BicaVM? - A JVM in JavaScript.
- Ceylon - a modular static-typed JVM language compilable to JavaScript.
- Doppio? - JVM interpreter on CoffeeScript.
- GrooScript? - Little framework to convert Groovy code to JavaScript.
- GWT - Google Web Toolkit, compiles java to JavaScript.
- j2js? - Java bytecode to JavaScript.
- Java2Script? - Eclipse Java to JavaScript compiler plugin and JavaScript version of SWT.
- Kotlin - has a nascent JavaScript backend.
- Processing, a Java-based visualization language that interprets to JavaScript.
- STJS? - (Strongly-Typed JavaScript) Maven plugin that generates JS from Java source.
Scala
- js.scala? - - JavaScript - as an embedded DSL in Scala
- Scala+GWT? - Aims to compile Scala code for the browser via the GWT toolchain.
C♯, F♯, .NET related languages
- Blade - Visual Studio add-on for converting C♯ to JavaScript.
- FunScript? - F♯ to JavaScript compiler with jQuery etc. mappings through a TypeScript type provider.
- jsc - [experimental] Recompile your .NET assembly to JavaScript, ActionScript, PHP or Java.
- JSIL? - MSIL (.NET bytecode) to JavaScript.
- NemerleWeb? - Nemerle language compiled to JS.
- Pit? - F♯ to JavaScript compiler.
- Prefix? - [in development]
- Saltarelle? - C♯ to JavaScript Compiler.
- SharpKit? - [commercial] C♯ to JavaScript cross-compiler.
- Script♯? Compiles C♯ to JS.
- WebSharper? - Lets you compile F♯ to JS.
Lisp, Clojure - & Scheme
- BiwaScheme? - Scheme (R6RS?) in JavaScript.
- Chlorinejs? - A fork of ClojureJs? with a port of clojure.core? library.
- ClojureScript? - From the official Clojure/core team. Converts a majority of Clojure to JS.
- clojurejs? - Subset of Clojure to JS.
- EdgeLisp? - A Lisp for JavaScript.
- Fargo? - Scheme in JavaScript.
- LispScript? - A Common Lisp program that translates Lisp programs into JavaScript.
- Moby Scheme? - A Scheme running in JS.
- nconc? - scheme interpreter in JavaScript with stack-friendly tail calls and full call/cc.
- Oppo? - A javascripter's lisp. Inspired by javascript, clojure and coffeescript. Compiler built using Jison.
- Outlet? - A language Lisp-like in nature.
- Parenscript? - Subset of Common Lisp to JS.
- Ralph? - Lisp-1? dialect to JavaScript.
- scheme2js? - Scheme to JavaScript.
- Scriptjure? - Library for generating JavaScript from Clojure forms.
- Spock? - A Scheme to JavaScript compiler that uses Henry Baker's Cheney-on-the-MTA compilation strategy.
- Whalesong? - Racket to JS compiler.
OCaml/ML
- Ocamljs - OCaml to JS.
- O'Browser? - OCaml bytecode interpreter in JS.
- Js_of_ocaml? - OCaml bytecode to JS compiler.
- SMLtoJs? - Compiler from Standard ML to JavaScript.
Haskell
- Fay? - A small language that compiles a proper subset of Haskell into JavaScript.
- ghcjs? - Linux-oriented Haskell-to-JavaScript compiler project that uses the Glasgow Haskell Compiler? (GHC), WebKit JavaScriptCore, and other libraries.
- Haste? - Intended to be a drop-in replacement for GHC that generates lean JavaScript code.
- jshaskell? - A Haskell parser, supporting JS library and build tool for deploying a subset of Haskell to JavaScript.
- JSHC? - Haskell to JavaScript compiler in JavaScript.
- UHC? - (Utrecht Haskell Compiler?) backend converts UHC core to JavaScript, allowing the compiling of Haskell code to JS.
- YHC? - (York Haskell Compiler?) backend, as above but with YHC? core language.
Smalltalk
- Amber - An implementation Smalltalk-80? with IDE that runs on the JavaScript runtime (formerly JTalk?).
- Clamato? - a Smalltalk dialect that is designed to operate within JavaScript.
- Lively Kernel? - Smalltalk/Squeak-like development environment in the browser.
- Silver Smalltalk? - [commercial] Smalltalk in the browser.
C/C++
- Emscripten - LLVM to JavaScript compiler.
- maja? - Vala (GObject) to JavaScript.
- Clue - C language compiler to different runtimes (Lua, JS, Perl 5?, C, Java, CL).
BASIC
- NS Basic?/App Studio? [commercial] Visual Basic-style BASIC to JavaScript compiler. Includes IDE. Targets iOS and Android.
- qb.js? - An implementation of QBASIC? in JavaScript.
Pascal
- Smart Mobile Studio? - [commercial] Object Pascal to JavaScript compiler and Delphi like IDE that brings classes, inheritance, interfaces and more to JavaScript.
- Elevate Web Builder? - [commercial] Visual development tool for web applications that compiles standard Object Pascal? source code into JavaScript.
Go
- Go2js? - Line-to-line translator from Go to JavaScript.
Multitarget
- Haxe - compiles to several platforms (C++, Flash, JS, Neko?, PHP).
- Hence? - "heavily work-in-progress" stack-oriented language with English-like syntax (runs on PHP).
- Fantom? - Evolutionary object-oriented language emphasizing succinct and effective APIs (JVM, CLR, JS).
- LZX - (OpenLaszlo) A XAML-like language used to design applications on what's described as "the only run-anywhere, no lock-in rich Internet platform. Period." OpenLazslo? (originally Lazslo Presentation Server) outputs to a variety of formats including Flash.
- Monkey - [commercial] Massively multi platform language (HTML5, Native OpenGL/OpenAL (Windows + Mac), Android, Flash, iOS, XNA).
- Clue - C language compiler to different runtimes (Lua, JS, Perl 5?, C, Java, CL).
- jsc - [experimental] Recompile your .NET assembly to JavaScript, ActionScript, PHP or Java.
- JSIL? - Compiles .NET bytecode (CIL) to JavaScript.
- IL2JS? - Generates JavaScript, CSS and HTML files from .NET DLL files
その他
Tierless Languages (produce both client & server)
- Opa? - Industrial programming language for high-security distributed web applications.
- Fun? - A programming language for realtime webapps - compiles to client-side and server-side JS.
- Ur? - In the tradition of ML and Haskell.
- WebSharper? - Lets you compile F♯ to JS.
- mobl - The new language for programming the mobile web.
- E? - Compiles E? to JS. E? is a secure distributed persistent pure object language.
- Sugar - new programming language designed to replace JavaScript for client-side (and server-side) web development.
Visual JavaScript Tools
- Blockly - web-based, graphical programming language. Users can drag blocks together to build an application.
- Illumination? - [Commercial] Visual, cross-platform tool creates apps for Android, iPhone, iPad, Desktops and HTML5 or Flash websites. The I language underlies the tool.
- JsMaker? - Visual JavaScript programming.
- Meemoo? - Flow-based visual programming framework for hackable web apps.
- NoFlo? - JavaScript implementation of Flow-Based Programming. Programs (network graphs) can be visually created with DrawFBP?,
- ScriptBlocks?
- Snap? - JavaScript of BYOB?, which is a fork of Scratch.
- Waterbear?
Other Projects
- Agda? - A dependently typed functional programming language and mechanized proof assistant.
- browserl? - An Erlang Emulator written in JavaScript.
- Dart - A class-based programming language for creating structured web applications.
- erljs? - Run Erlang in JavaScript.
- ErlyJS? - (abandoned) JavaScript to Erlang compiler.
- FalconJS? - Part of Adobe's donation of Flex technology to The Apache Foundation?; compiles ActionScript and MXML to JavaScript.
- Gnusto? - a Z-Machine VM interpreter written in JavaScript.
- jsForth?
- Logo Interpreter?
- lua.js? - Lua parser.
- MIPS.coffee? Simple MIPS Interpretor.
- newspeak? - in progress, converting compiler from Java to JavaScript.
- Nile? - Declarative Stream Processing for Media Applications (with JS backend).
- NGN APL? - an APL?-to-JavaScript compiler written in CoffeeScript.
- Oia? - A port of Io? to JavaScript.
- p2js? - Perl to JavaScript converter.
- php.js - PHP to JavaScript converter and VM written in JavaScript.
- phype? - Run a limited subset of PHP in a browser.
- Plaid? - A gradually-typed, typestate-oriented language designed as a better Java.
- Pygmy? - a dynamic language that compiles to JavaScript designed to be readable but concise enough to be competitive in code golf.
- Reb2Static? - Rebol? to JavaScript.
- RPN? - Interpreter for a language with a Reverse Polish Notation syntax.
- SMLtoJs? - SML to JavaScript compiler.
- tcl.js? - Tcl implementation in JavaScript.
- TIScript?
- Topaz? - Rebol? inspired language on top of JavaScript.
- wForth?
- Quixe? - a Glulx VM? interpreter written in JavaScript.
- XLCC? - Interpret LCC into JavaScript on node.js.
Tools for Compiler Writers
JavaScript Parsers & Extensions
- Narcissus? - Mozilla's experimental JavaScript compiler in JavaScript by Brendan Eich and others.
- Traceur - Google's vehicle for JavaScript Language Design Experimentation.
- EcmaScript 5 Parser? (es-lab?)
- EcmaScript 5 Parser? (qfox?)
- reflect.js? Implementation of Mozilla's (SpiderMonkey) Parser API in JavaScript.
- bdParse? - a JavaScript LL(1) parser in JavaScript.
- parse-js? - Common Lisp JavaScript parser.
- ZeParser?
- Esprima - Educational (but fast) ECMAScript parser with output compatible to Mozilla Parser API?
- js.js - A JavaScript JavaScript interpreter. Instead of trying to create an interpreter from scratch, SpiderMonkey is compiled into LLVM and then Emscripten translates the output into JavaScript.
JavaScript Optimizers
- Closure Compiler - An optimizing compiler. Can generate a (line/col)-number mappings file.
- UglifyJS - JavaScript compressor/minifier written in JavaScript. It also contains tools that allow one to automate working with JavaScript code.
- UglifyJS2? - JavaScript parser / mangler / compressor / beautifier toolkit.
JavaScript Parser Generators
- Pjison? - Bison in JavaScript , used by CoffeeScript
- OMeta/JS? -(source) metacompiler for many languages to many targets, including js.
- PEG.js? - parser generator for JavaScript based on the parsing expression grammar formalism
- Language.js? - PEG with error nodes being inserted into the tree for unique error handling
- Canopy? - Self-hosting PEG parser compiler for JavaScript, influenced by Ruby parser generators such as Treetop? and[[ Citrus]]. Depends on JS.Class? library
- JS/CC? - LALR(1) parser generator
- jsparse?
- ReParse? - parser combinator library for JavaScript like Haskell's Parsec
- p4js? - Monadic parser library for JavaScript
- JSGLR? - Scannerless, Generalized Left-to-right Rightmost (SGLR?) derivation parser for JavaScript
- antlr? - has a JavaScript target
- Cruiser.Parse? - LL(k) parser
JavaScript AST (Abstract Syntax Tree)
- Acorn - A tiny, fast JavaScript parser in JavaScript created by Marijn Haverbeke.
- burrito? & js-traverse? - see this post for more info, as well as node-stackedy for an example and node-browserify for running it in a browser instead of node.js.
- Closure Compiler AST Documentation
- escodegen? - JavaScript code generator.
- JavaScript Shaper? an extensible framework for JavaScript syntax tree shaping.
- JsonML? - AST format used by the ES5 parser.
- ECMAScript 5 parser? - A parser for ES5, the current version of ECMAScript.
- Esprima - ECMAScript parsing infrastructure for multipurpose analysis.
- language-javascript? - JavaScript parser for Haskell.
- Mozilla SpiderMonkey Parser API? - For use with the SpiderMonkey shell.
- Source Map - Map JavaScript debugger output to original source.
- treehugger? - JavaScript AST transformation tools.
- Zeon? - A static visual JavaScript analyzer / editor. See also ZeParser?.