| <!DOCTYPE html> |
| <html> |
| |
| <head> |
| <meta charset="UTF-8"> |
| <title>Xtend - Modernized Java</title> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <meta name="description" |
| content="Xtend is a statically typed programming language sitting on top of Java."> |
| <meta name="author" content="Sven Efftinge"> |
| <meta name="author" content="Miro Spoenemann"> |
| <!-- styles --> |
| <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements --> |
| <!--[if lt IE 9]> |
| <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> |
| <![endif]--> |
| |
| <!-- Le fav and touch icons --> |
| |
| <link rel="shortcut icon" href="/xtend/images/favicon.png"> |
| |
| <link href="/xtend/css/bootstrap.css" rel="stylesheet" type='text/css'> |
| <link href="/xtend/css/bootstrap-responsive.css" rel="stylesheet" type='text/css'> |
| <link href="/xtend/css/shield-responsive.css" rel="stylesheet" type='text/css'> |
| <link href='/xtend/css/fonts.css' rel='stylesheet' type='text/css'> |
| <link href="/xtend/css/prettyPhoto.css" rel="stylesheet" media="screen" type='text/css'> |
| <link href="/xtend/css/prettify.css" type="text/css" rel="stylesheet"/> |
| <link href="/xtend/css/style.css" rel="stylesheet" type='text/css'> |
| |
| <!--[if lt IE 9]> |
| <link href="css/iebugs.css" rel="stylesheet" type='text/css'> |
| <![endif]--> |
| |
| <!-- BEGIN Cookie Consent |
| <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.css" /> |
| <script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.js"></script> |
| <script> |
| window.addEventListener("load", function(){ |
| window.cookieconsent.initialise({ |
| "palette": { |
| "popup": { |
| "background": "#000" |
| }, |
| "button": { |
| "background": "#f1d600" |
| } |
| }, |
| "theme": "edgeless", |
| "type": "opt-in", |
| onInitialise: function (status) { |
| var type = this.options.type; |
| var didConsent = this.hasConsented(); |
| if (type == 'opt-in' && didConsent) { |
| // TODO: enable cookies |
| } |
| if (type == 'opt-out' && !didConsent) { |
| // TODO: disable cookies |
| } |
| }, |
| onStatusChange: function(status, chosenBefore) { |
| var type = this.options.type; |
| var didConsent = this.hasConsented(); |
| if (type == 'opt-in' && didConsent) { |
| // TODO: enable cookies |
| } |
| if (type == 'opt-out' && !didConsent) { |
| // TODO: disable cookies |
| } |
| }, |
| onRevokeChoice: function() { |
| var type = this.options.type; |
| if (type == 'opt-in') { |
| // TODO: disable cookies |
| } |
| if (type == 'opt-out') { |
| // TODO: enable cookies |
| } |
| }, |
| "content": { |
| "href": "http://www.eclipse.org/legal/privacy.php" |
| } |
| })}); |
| </script> |
| END Cookie Consent --> |
| </head> |
| |
| |
| <body> |
| |
| <!-- Navbar --> |
| <div class="navbar navbar-fixed-top" |
| style="border-bottom: 1px solid #000;"> |
| <div class="navbar-inner"> |
| <div class="container"> |
| <a class="btn btn-navbar" data-toggle="collapse" |
| data-target=".nav-collapse"> <span class="icon-bar"></span> <span |
| class="icon-bar"></span> <span class="icon-bar"></span> |
| </a> <a class="brand" href="/xtend/index.html"></a> |
| <div class="nav-collapse collapse" style="height: 0px;"> |
| <ul class="nav"> |
| <li ><a href="/xtend/download.html">Download</a></li> |
| <li ><a href="/xtend/documentation/index.html">Documentation</a></li> |
| <li ><a href="/xtend/community.html">Community</a></li> |
| <li ><a href="http://xtext.org">Xtext</a></li> |
| <li ><a href="http://www.eclipse.org">Eclipse.org</a></li> |
| </ul> |
| <!--div class="btn-group pull-right"> |
| <div class="g-plusone" data-href="http://www.xtend-lang.org"></div> |
| </div--> |
| </div> |
| <!--/.nav-collapse --> |
| </div> |
| </div> |
| </div> |
| <!-- Navbar End --> |
| |
| |
| <div id="header_wrapper"> |
| <div class="container"> |
| <div class="flexslider image-slider"> |
| <div class="span6" style="margin-left:7px;"> |
| <h2 class="front-title"> |
| Java with spice! |
| </h2> |
| <br /> |
| <p>Xtend is a flexible and expressive dialect of Java, which compiles into readable Java 8 compatible source code. |
| You can use any existing Java library seamlessly. The compiled output is readable |
| and pretty-printed, and tends to run as fast as the equivalent |
| handwritten Java code.</p> |
| <p>Get productive and write beautiful code with <a href="documentation/204_activeannotations.html">powerful macros</a>, <a href="documentation/203_xtend_expressions.html#lambdas">lambdas</a>, <a href="documentation/203_xtend_expressions.html#operators">operator overloading</a> and many more modern language features.</p> |
| <a href="download.html" class="btn_download"></a> |
| <a href="documentation/index.html" class="btn_documentation"></a> |
| </div> |
| <div class="span4"> |
| <video id="video" class="embedded-video" controls width="100%" poster="images/intro_thumb.png"> |
| <source src="media/Xtend_intro_720p.mp4" type="video/mp4"> |
| |
| Your browser does not support the video tag. |
| </video> |
| <script type="text/javascript"> |
| var base = "media/xtend_intro_"; |
| if (location.hostname === "localhost" || location.hostname === "127.0.0.1") { |
| base = location.protocol+"//eclipse.org/xtend/media/xtend_intro_"; |
| } |
| var videoList = new Array(base+"720p.mp4",base+"360p.mp4",base+"270p.mp4"); |
| var video = document.getElementById('video'); |
| if (window.innerWidth <= 800) video.setAttribute("src", videoList[2]); |
| else if (window.innerWidth <= 1400) video.setAttribute("src", videoList[1]); |
| else video.setAttribute("src", videoList[0]); |
| </script> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| <div id="intro"> |
| <div class="container"> |
| <ul class="newsticker"> |
| <li><!--a href="http://dslmeinte.wordpress.com/2012/09/24/a-trick-for-speeding-up-xtend-building/"-->“I love Xtend and use it as much as possible.” (Meinte Boersma) |
| <li><!--a href="https://groups.google.com/d/msg/xtend-lang/xxDwxnSeaco/xWj7Y-CovmAJ"-->“Xtend is a wonderful language for improving the developer experience.” (Salvatore Romeo) |
| <li><!--a href="https://groups.google.com/d/msg/xtend-lang/ABhngFZ4Qxg/cV76ZsFKUDEJ"-->“I am loving Xtend, and I wanted to say thanks.” (Jacob Goodson) |
| <li><!--a href="https://groups.google.com/d/msg/xtend-lang/ABhngFZ4Qxg/7sZbQy_inXYJ"-->“It's very comfortable to work with Xtend.” (Ross Judson) |
| <li><!--a href="https://groups.google.com/d/msg/xtend-lang/bdMs7kCBZSc/61jGMxH6ZmgJ"-->“Xtend rocks and I love using it :-)” (Christian Vogel) |
| <li><!--a href="https://groups.google.com/d/msg/xtend-lang/BqqPjXxxfMk/j8XDk1bAtp4J"-->“I love the expressiveness in Xtend and the ability to write cleaner code.” (Jesper Eskilson) |
| <li><!--a href="https://groups.google.com/d/msg/xtend-lang/En6rF8PTnG4/1mdU0QmJ3nYJ"-->“I love it!” (Francois Green) |
| <li><!--a href="https://groups.google.com/d/msg/xtend-lang/ABhngFZ4Qxg/7sZbQy_inXYJ"-->“Having idiomatic Java generated by the compiler is a great safety net.” (Ross Judson) |
| <li><!--a href="https://twitter.com/meinte37/status/507135731920556032"-->“Xtend could be described as “Scala, the good parts“.” (Meinte Boersma) |
| <li><!--a href="https://groups.google.com/d/msg/xtend-lang/mKAansrVhms/SzcfLEwZo_UJ"-->“Xtend is awesome for Android Programming!” (Eugen) |
| </ul> |
| </div> |
| </div> |
| |
| <div id="features"> |
| <div class="container"> |
| <div class="row"> |
| <br/> |
| <br /> |
| <div class="span6 float feature"> |
| <div class="span2"> |
| <img src="images/android_logo.png" alt="Android" /> |
| </div> |
| <div class="span3"> |
| <h4>Android Development</h4> |
| <p> |
| Xtend works great on Android, as it doesn't produce additional runtime overhead. |
| The very thin lib and the advanced support for code generation increase productivity |
| while helping to keep your Android apps small. |
| </p> |
| </div> |
| </div> |
| <div class="span6 float feature"> |
| <div class="span2"> |
| <img src="images/gwt-logo.png" alt="Google Web Toolkit" /> |
| </div> |
| <div class="span3"> |
| <h4>Web Development</h4> |
| <p> |
| The Google Web Toolkit translates Java source code to fast Javascript code. Xtend makes typical |
| GWT programming a joy. There are many nice examples and cool enhancements <a href="https://github.com/DJCordhose/todomvc-xtend-gwt">out there</a>. |
| </p> |
| </div> |
| </div> |
| <div class="span6 float feature"> |
| <div class="span2"> |
| <img src="images/Java_Duke_learning.png" alt="Java FX" /> |
| </div> |
| <div class="span3"> |
| <h4>Fast Learning Curve!</h4> |
| <p> |
| If you know Java, you will be productive with Xtend in a few hours. |
| Xtend is an extension to Java, so you can reuse all your knowledge about tools and libraries. |
| Also complicated language features like generics remain unchanged. |
| </p> |
| </div> |
| </div> |
| <div class="span6 float feature"> |
| <div class="span2"> |
| <img src="images/eclipse_logo.png" alt="Eclipse" /> |
| </div> |
| <div class="span3"> |
| <h4>Advanced IDE Support</h4> |
| <p> |
| Static typing is not only important for early error detection but even more so for good IDE support. |
| To ensure a great and holistic user experience, Xtend's IDE and language have been designed side by side. And of course |
| the tools integrate seamlessly with the Eclipse Java IDE. |
| </p> |
| </div> |
| </div> |
| <div class="span6 float feature"> |
| <div class="span2"> |
| <img src="images/java8_logo.png" alt="Java FX" /> |
| </div> |
| <div class="span3"> |
| <h4>Java 8 Ready</h4> |
| <p> |
| Xtend works well with Java 8 APIs as it does the same kind of target typing coercion for lambdas. |
| With its additional syntactical flexibility, of course Xtend code looks much better than the equivalent Java 8 code. |
| <a href="http://blog.efftinge.de/2012/12/java-8-vs-xtend.html">Here are some examples</a>. |
| </p> |
| </div> |
| </div> |
| <div class="span6 float feature"> |
| <div class="span2"> |
| <img src="images/javafx_logo.jpg" alt="Java FX" /> |
| </div> |
| <div class="span3"> |
| <h4>XtendFX</h4> |
| <p> |
| UI programming in Java can be very tedious. |
| Checkout the <a href="https://github.com/svenefftinge/xtendfx">XtendFX project</a> to see how you can get rid of |
| Java boiler plate easily. It contains some very useful <a href="documentation/204_activeannotations.html">active annotations</a> for |
| automatically generating JavaFX properties. |
| </p> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| <footer class="site-footer"> |
| <div id="extra"> |
| <div class="container inner-footer"> |
| <div class="row"> |
| <div class="span6"> |
| <h3 class="footer-links-header">Quick Links</h3> |
| <ul class="footer-links clearfix"> |
| <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> |
| <ul class="footer-links clearfix"> |
| <li><a href="http://www.eclipse.org">Eclipse Home</a></li> |
| <li><a href="http://marketplace.eclipse.org/">Market Place</a></li> |
| <li><a href="http://live.eclipse.org/">Eclipse Live</a></li> |
| <li><a href="http://www.planeteclipse.org/">Eclipse Planet</a></li> |
| </ul> |
| </div> |
| <div class="span6"> |
| <!-- Social Media Links --> |
| <h3 class="footer-links-header"">Social Media</h3> |
| <ul class="footer-links clearfix"> |
| <li> |
| <a href="https://twitter.com/xtendlang"><img src="/xtend/images/Twitter-bird-darkgray.png" class="img-responsive" style="margin-right: 5px;height: 1em;" alt="Twitter icon">@xtendlang on Twitter</a> |
| </li> |
| </ul> |
| </div> |
| |
| </div> |
| </div> |
| </div> |
| <a href="#" class="scrollup fadeOutRight animated" style="display: none;">ScrollUp</a> |
| <a href="http://dryicons.com/">Icons by http://dryicons.com</a> |
| <!-- Le javascript |
| ================================================== --> |
| <!-- Placed at the end of the document so the pages load faster --> |
| <script src="/xtend/js/jquery-1.7.1.min.js" type="text/javascript"></script> |
| <script src="/xtend/js/bootstrap.min.js" type="text/javascript"></script> |
| |
| <!-- include pretty-print files --> |
| <script src="/xtend/js/prettify.js" type="text/javascript" ></script> |
| <script src="/xtend/js/lang-xtend.js" type="text/javascript"></script> |
| |
| <!-- Include the plug-in --> |
| <script src="/xtend/js/jquery.prettyPhoto.js" type="text/javascript"></script> |
| <script src="/xtend/js/jquery.easing.1.3.js" type="text/javascript"></script> |
| <script src="/xtend/js/custom.js" type="text/javascript"></script> |
| <!--script src="https://apis.google.com/js/platform.js" async defer></script--> |
| <!--script type="text/javascript"> |
| var _gaq = _gaq || []; |
| _gaq.push([ '_setAccount', 'UA-2429174-4' ]); |
| _gaq.push([ '_trackPageview' ]); |
| (function() { |
| var ga = document.createElement('script'); |
| ga.type = 'text/javascript'; |
| ga.async = true; |
| ga.src = ('https:' == document.location.protocol ? 'https://ssl' |
| : 'http://www') |
| + '.google-analytics.com/ga.js'; |
| var s = document.getElementsByTagName('script')[0]; |
| s.parentNode.insertBefore(ga, s); |
| })(); |
| </script--> |
| </footer> |
| |
| </body> |
| |
| </html> |