blob: 073069776e5e5866c1ba20dd80f91f96a7d9f189 [file] [log] [blame]
<!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&nbsp;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/"-->&ldquo;I love Xtend and use it as much as possible.&rdquo; (Meinte Boersma)
<li><!--a href="https://groups.google.com/d/msg/xtend-lang/xxDwxnSeaco/xWj7Y-CovmAJ"-->&ldquo;Xtend is a wonderful language for improving the developer experience.&rdquo; (Salvatore Romeo)
<li><!--a href="https://groups.google.com/d/msg/xtend-lang/ABhngFZ4Qxg/cV76ZsFKUDEJ"-->&ldquo;I am loving Xtend, and I wanted to say thanks.&rdquo; (Jacob Goodson)
<li><!--a href="https://groups.google.com/d/msg/xtend-lang/ABhngFZ4Qxg/7sZbQy_inXYJ"-->&ldquo;It&#39;s very comfortable to work with Xtend.&rdquo; (Ross Judson)
<li><!--a href="https://groups.google.com/d/msg/xtend-lang/bdMs7kCBZSc/61jGMxH6ZmgJ"-->&ldquo;Xtend rocks and I love using it :-)&rdquo; (Christian Vogel)
<li><!--a href="https://groups.google.com/d/msg/xtend-lang/BqqPjXxxfMk/j8XDk1bAtp4J"-->&ldquo;I love the expressiveness in Xtend and the ability to write cleaner code.&rdquo; (Jesper Eskilson)
<li><!--a href="https://groups.google.com/d/msg/xtend-lang/En6rF8PTnG4/1mdU0QmJ3nYJ"-->&ldquo;I love it!&rdquo; (Francois Green)
<li><!--a href="https://groups.google.com/d/msg/xtend-lang/ABhngFZ4Qxg/7sZbQy_inXYJ"-->&ldquo;Having idiomatic Java generated by the compiler is a great safety net.&rdquo; (Ross Judson)
<li><!--a href="https://twitter.com/meinte37/status/507135731920556032"-->&ldquo;Xtend could be described as &ldquo;Scala, the good parts&ldquo;.&rdquo; (Meinte Boersma)
<li><!--a href="https://groups.google.com/d/msg/xtend-lang/mKAansrVhms/SzcfLEwZo_UJ"-->&ldquo;Xtend is awesome for Android Programming!&rdquo; (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>