| <!DOCTYPE HTML> |
| <html> |
| |
| <head> |
| |
| <!-- ************* Meta ************* --> |
| <title>Eclipse N4JS Language and IDE</title> |
| |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" /> |
| |
| <!-- ************* OpenGraph ************--> |
| <meta name="description" content="High-quality JavaScript development for large Node.js projects"> |
| |
| <meta property="og:site_name" content="Eclipse N4JS"/> |
| <meta property="og:title" content="Eclipse N4JS Language and IDE"/> |
| <meta property="og:url" content="https://eclipse.org/n4js"/> |
| <meta property="og:description" content="The Eclipse N4JS language and its IDE enable high-quality JavaScript development for large Node.js projects."/> |
| <meta property="og:image" content="images/n4js.png"> |
| |
| <!-- ************* JQuery ************* --> |
| <script src="https://code.jquery.com/jquery-1.12.4.js"></script> |
| <script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script> |
| |
| <!-- ************* Favicon ************--> |
| <link rel="icon" href="images/favicon.ico" /> |
| <link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32" /> |
| <link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16" /> |
| <!-- ************* Styles ************* --> |
| <link rel="stylesheet" type="text/css" href="styles/styles.min.css"> |
| |
| <!-- ****************** Required for buttom to top scripts ****************** --> |
| <link rel="stylesheet" type="text/css" href="styles/backtotop.css"> |
| |
| <!-- ****************** Scripts ****************** --> |
| <script type="text/javascript" src="scripts/scripts-legacy.js"></script> |
| <script type="text/javascript" src="scripts/scripts.js"></script> |
| </head> |
| |
| <body> |
| |
| <header class="Grid"> |
| <div class="Cell Cell--4-12"> |
| <a href="#"><img src="images/n4js-logo.png" alt="Eclipse N4JS Language and IDE"></a> |
| </div> |
| |
| <div class="Cell Cell--8-12"> |
| <nav> |
| <a href="downloads.html">Download</a> · |
| <a href="community.html">Community</a> · |
| <a href="userguides/index.html">Documentation</a> |
| </nav> |
| </div> |
| </header> |
| |
| <div class="Main"> |
| |
| <article class="Intro Grid Grid--fullWidth"> |
| <div class="Intro-Slogan Cell Cell--9-12" style="text-align: center;"> |
| High-quality JavaScript development<br/> |
| for large Node.js projects |
| </div> |
| |
| <img src="images/N4JS_VSCODE.png"> |
| </article> |
| |
| |
| <article class="Grid"> |
| |
| <div class="Cell Cell--12-12"> |
| <h2 id="introduction">N4JS is for Java and JavaScript Developers</h2> |
| |
| <ul> |
| <li>You are a Java developer and missing the comfort of familiar tools while developing for JavaScript environments?</li> |
| <li>You are a JavaScript developer and want to write large-scale server-side applications in a way that it stays maintainable?</li> |
| <li>You are a TypeScript developer and ran into problems the type checker didn't catch? </li> |
| </ul> |
| |
| <p>N4JS is a general-purpose programming language based on ECMAScript. |
| It adds a static type system as reliable as that of Java, but with the flexibility of JavaScript. |
| The language provides built-in support for state-of-the-art programming paradigms such as dependency injection and test support. |
| Code is validated as you type with the addition of tools such as content-assist and quick-fixes which ensure your code is written safely and intuitively. |
| N4JS transpiles to ECMAScript code, using features supported by Node.js. |
| Based on the Language Server Protocol, the N4JS language server can be integrated into several LSP clients. |
| For VSCode we provide an extension for N4JS via the VSCode marketplace. |
| </p> |
| </div> |
| |
| </article> |
| |
| |
| <br/> |
| |
| <article class="Grid"> |
| <div class="Cell Cell--12-12"> |
| <h2 id="introduction">Feature Overview</h2> |
| </div> |
| <div id="features" class="FeatureTabs Grid Grid--fullWidth"> |
| |
| <div class="FeatureTabs-nav Cell Cell--3-12"> |
| <ul data-tab-nav> |
| <li><a href="#feature-modules" class="is-activeTab">Modules</a></li> |
| <li><a href="#feature-typing">Nominal And Structural Typing</a></li> |
| <li><a href="#feature-generics">Generics</a></li> |
| <li><a href="#feature-async-await">Async/Await</a></li> |
| <li><a href="#feature-di">Dependency Injection</a></li> |
| <li><a href="#feature-testing">Test Driven</a></li> |
| <li><a href="#feature-nodejs">Node.js Support</a></li> |
| </ul> |
| </div> |
| |
| <div id="feature-modules" class="FeatureTabs-stage is-activeTab"> |
| <h2><a href="features/modules.html">Modules</a></h2> |
| <ul> |
| <li>ES2015 module syntax</li> |
| <li>Manage npm dependencies in IDE</li> |
| <li>Organize imports in IDE</li> |
| </ul> |
| <img class="" src="images/modules.png"> |
| <p><a href="features/modules.html">Read More about Modularization with N4JS ›</a></p> |
| </div> |
| |
| <div id="feature-typing" class="FeatureTabs-stage"> |
| <h2><a href="features/nominal-and-structural-typing.html">Nominal And Structural Typing</a></h2> |
| <ul> |
| <li>Nominal typing (by default)</li> |
| <li>Structural typing</li> |
| <li>Combining both</li> |
| </ul> |
| <img class="" src="images/typing.png"> |
| <p><a href="features/nominal-and-structural-typing.html">Nominal And Structural Typing in N4JS ›</a></p> |
| </div> |
| |
| <div id="feature-generics" class="FeatureTabs-stage"> |
| <h2><a href="features/generics.html">Generics</a></h2> |
| <ul> |
| <li>Generic classes & interfaces</li> |
| <li>Generic functions & methods</li> |
| <li>Wildcards</li> |
| <li>Familiar from Java</li> |
| </ul> |
| <img class="" src="images/generics.png"> |
| <p><a href="features/generics.html">Read More about Generics in N4JS ›</a></p> |
| </div> |
| |
| <div id="feature-async-await" class="FeatureTabs-stage"> |
| <h2><a href="features/async-await.html">Async/Await</a></h2> |
| <ul> |
| <li>Async functions & methods</li> |
| <li>Await on functions/methods returning a Promise</li> |
| <li>@Promisifiable and @Promisify</li> |
| </ul> |
| <img class="" src="images/async.png"> |
| <p><a href="features/async-await.html">Read More about Async/Await with N4JS ›</a></p> |
| </div> |
| |
| <div id="feature-di" class="FeatureTabs-stage"> |
| <h2><a href="features/dependency-injection.html">Dependency Injection</a></h2> |
| <ul> |
| <li>Configure bindings with @Bind</li> |
| <li>Nesting injectors @WithParentInjector</li> |
| <li>DI support in N4JS test framework</li> |
| </ul> |
| <img class="" src="images/di.png"> |
| <p><a href="features/dependency-injection.html">Read More about Dependency Injection with N4JS ›</a></p> |
| </div> |
| |
| <div id="feature-testing" class="FeatureTabs-stage"> |
| <h2><a href="features/testing.html">Testing</a></h2> |
| <ul> |
| <li>Built-in test support</li> |
| <li>Annotations <code>@Test</code>, <code>@Ignore</code>, etc.</li> |
| <li>IDE support for running & viewing results</li> |
| </ul> |
| <img class="" src="images/testing.png"> |
| <p><a href="features/testing.html">Read More about Testing with N4JS ›</a></p> |
| </div> |
| |
| <div id="feature-nodejs" class="FeatureTabs-stage"> |
| <h2><a href="features/nodejs-support.html">Node.js Support</a></h2> |
| <ul> |
| <li>On-Demand npm Installation</li> |
| <li>N4JS type definitions</li> |
| <li>npm package export feature</li> |
| </ul> |
| <img class="" src="images/nodejs.png"> |
| <p><a href="features/nodejs-support.html">Read More about Node.js Support in N4JS ›</a></p> |
| </div> |
| |
| </div> |
| </article> |
| |
| <br/> |
| |
| <article class="Grid"> |
| <div class="Cell Cell--12-12"> |
| <h2>The N4JS Project</h2> |
| </div> |
| |
| <div class="Cell Cell--8-12 m-Cell--withMargin"> |
| |
| <h3>N4JS Project Status</h3> |
| <p> |
| The Eclipse N4JS project is in the <a href="https://wiki.eclipse.org/Development_Resources/HOWTO/Incubation_Phase">Incubation Phase</a> and there is no official Eclipse release available yet |
| (for all releases see the <a href="downloads.html">download page</a>). |
| This doesn't mean that N4JS is unstable; we have an extensive test suite (>90.000 tests) to ensure a stable nightly build and N4JS has been in use in several large non-public projects for years. |
| There still may be bugs (there are always bugs) and features which are under development. |
| We encourage feedback from all users! You can ask questions about getting started with using the N4JS Language and IDE for developing your own projects at <a href="https://www.eclipse.org/forums/index.php/f/365/">the forum</a> or you can create bug reports and feature requests using <a href="https://github.com/eclipse/n4js/issues">GitHub issues</a> at the official Eclipse repository for N4JS. |
| Note that it's also possible to <a href="releases/reporting-bugs.html#reporting_bugs">write and submit bug reports</a> from within the N4JS IDE itself. |
| </p> |
| </div> |
| |
| <div class="Cell Cell--4-12"> |
| <h3>Incubation</h3> |
| <div align="left"><a href="https://www.eclipse.org/projects/what-is-incubation.php"> |
| <img align="center" src="images/egg-incubation.png" border="0" alt="Incubation" style="width:98px;height:128px;"/></a></div> |
| </div> |
| |
| </article> |
| |
| <br/> |
| <br/> |
| </div> |
| |
| |
| <footer class="Grid" style="color:#d5dfea"> |
| <div class="Cell Cell--2-12 m-Cell--withMargin"> |
| <h2>Quick Links</h2> |
| <ul> |
| <li><a href="downloads.html">Download</a></li> |
| <li><a href="userguides/index.html">Documentation</a></li> |
| <li><a href="https://github.com/eclipse/n4js/">Source</a></li> |
| <li><a href="https://github.com/eclipse/n4js/issues">Issues</a></li> |
| </ul> |
| </div> |
| <div class="Cell Cell--2-12 m-Cell--withMargin"> |
| <br/><br/> |
| <ul> |
| <li><a href="https://www.eclipse.org/forums/index.php/f/365/">Forum</a></li> |
| <li><a href="http://n4js.blogspot.de/">Blog</a></li> |
| <li><a href="https://dev.eclipse.org/mailman/listinfo/n4js-dev">Mailing List</a></li> |
| <li><a href="https://projects.eclipse.org/projects/technology.n4js">Eclipse Project Page</a></li> |
| <li><a href="https://twitter.com/n4jsdev">Tweets by n4jsdev</a></li> |
| </ul> |
| </div> |
| <div class="Cell Cell--2-12 m-Cell--withMargin"> |
| <br/><br/> |
| <ul> |
| <li><a href="http://www.eclipse.org/">Eclipse Home</a></li> |
| <li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li> |
| <li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li> |
| <li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li> |
| <li><a href="http://www.eclipse.org/legal/">Legal</a></li> |
| </ul> |
| </div> |
| <div style="clear: both; height: 0; overflow: hidden;"></div> |
| </footer> |
| |
| |
| <script type="text/javascript"> |
| dp.SyntaxHighlighter.HighlightAll('code'); |
| smoothScroll.init(); |
| featureCards.init(); |
| </script> |
| <script type="text/javascript"> |
| // Create a back to top button |
| $('body').append('<a href="#" class="back-to-top" style="right:5%">Back to Top</a>'); |
| var amountScrolled = 300; |
| $(window).scroll(function() { |
| if ( $(window).scrollTop() > amountScrolled ) { |
| $('a.back-to-top').fadeIn('slow'); |
| } else { |
| $('a.back-to-top').fadeOut('slow'); |
| } |
| }); |
| $('a.back-to-top, a.simple-back-to-top').click(function() { |
| $('html, body').animate({ |
| scrollTop: 0 |
| }, 700); |
| return false; |
| }); |
| </script> |
| </body> |
| </html> |