<!DOCTYPE html>
<html>

  <head>
	<meta charset="UTF-8">
	<title>Xtend - Community</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="row">
			<div class="span5 team">
			  <a href="https://groups.google.com/group/xtend-lang" class="anchor-in-div" title="The Xtend Google Group is the first source for getting answers in case you got stuck. The community is very friendly. Please ask any questions clearly and with sufficient information attached."></a>
			  <div class="row">
			    <div class="span1">
			      <img src="/xtend/images/discussion-white.png" alt="image" class="image_left">
			    </div>
			    <div class="span4">
			      <h3 >Discussion Group</h3>
					<p></p>
				</div>
			  </div>
			</div>
			<div class="span5 team">
				 <a href="https://github.com/eclipse/xtext-xtend/issues" class="anchor-in-div" title="Bug reports and enhancement request are tracked at GitHub. Please explain the problem and provide a reduced but reproducable eample. Also please explain the concrete use case when requesting enhancements."></a>
				 <div class="row">
				    <div class="span1">
				      <img src="/xtend/images/bug-white.png" width="80" height="80" alt="image" class="image_left">
					</div>
				    <div class="span4">
				      <h3 >Found a Bug?</h3>
					</div>
				</div>
			</div>
		  </div>
		  <div class="row">
			<div class="span5 team">
				 <a href="https://github.com/eclipse/xtext" class="anchor-in-div" title="The Xtend source code is available on GitHub. You'll find more information on how to contribute to the project in the README.md contained there."></a>
				 <div class="row">
				    <div class="span1">
				      <img src="/xtend/images/github-mark-white.png" alt="image" class="image_left">
					</div>
				    <div class="span4">
				      <h3 >Source Code</h3>
					</div>
				</div>
			</div>
			<div class="span5 team">
			  <a href="https://twitter.com/xtendlang" class="anchor-in-div" title="If you are on twitter and want to get notified about Xtend, you should consider following @xtendlang."></a>
			  <div class="row">
			    <div class="span1">
			      <img src="/xtend/images/Twitter-bird-white.png" alt="image" class="image_left">
			    </div>
			    <div class="span4">
			      <h3 >Xtend on Twitter</h3>
				</div>
			  </div>
			</div>
		  </div>
		</div>
	</div>
</div>

	  <div class="inner">
		<div class="container clearfix"> 
			<h2>Videos of Presentations</h2>
			<hr>
			<div class="row">
				<div class="span12">
					<table class="table table-striped">
						<tr><td>Video</td><td><h2><a href="http://jdk.io/index.php/program/enterprise-java/20-xtend-in-action">Eclipse Xtend: A Language Made for Java Developers (JDK.IO 2014, Kobenhavn)</a></h2></td></tr>
						<tr><td>Video</td><td><h2><a href="https://www.parleys.com/talk/5297729ae4b039ad2298c9b5/chapter0/about">Xtend in Action (Devoxx 2013)</a></h2></td></tr>
						<tr><td>Video</td><td><h2><a href="https://www.youtube.com/watch?v=EzH5MPd13iI">Eclipse Xtend: A Language Made for Java Developers (JavaOne 2012, SF)</a></h2></td></tr>
						<tr><td>Video</td><td><h2><a href="https://skillsmatter.com/skillscasts/2917-xtend-xtest">Eclipse Xtend: A Language Made for Java Developers (Skills Matter 2012, London)</a></h2></td></tr>
					</table>
				</div>
			</div>
		</div>
		<div>
		  <div class="inner">
			<div class="container clearfix"> 
				<h2>Articles and Blog Posts</h2>
				<hr>
				<div class="row">
					<div class="span12">
					<table class="table table-striped">
					<tr><td>Blog</td><td><h2><a href="http://spoenemann.blogspot.de/2015/02/xtend-for-java-8.html">Xtend for Java 8</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://futurice.com/blog/android-development-has-its-own-swift">Android Development has its own Swift</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://the-dusty-deck.blogspot.de/2014/06/xtend-gentle-and-functional-java.html">Xtend, the Gentle and Functional Java</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://www.infoq.com/articles/unusual-ways-to-create-a-mobile-app">Android and Xtend</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://jnario.org/org/jnario/jnario/documentation/20FactsAboutXtendSpec.html">20 Facts about Xtend</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://www.sebastianbenz.de/5-Things-that-make-Xtend-a-great-Language-for-Java-developers">5 things that make Xtend a great language</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://www.javacodegeeks.com/2013/02/building-vaadin-ui-with-xtend.html">Building Vaadin UIs with Xtend</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://blog.efftinge.de/2012/12/java-8-vs-xtend.html">Java 8 vs. Xtend</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://duncan.mac-vicar.com/2012/09/30/a-better-java-scala-or-xtend/">A better Java: Scala or Xtend</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://mnmlst-dvlpr.blogspot.de/2014/07/rxjava-and-xtend.html">RxJava and Xtend</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://mnmlst-dvlpr.blogspot.de/2014/07/rxjava-and-xtend.html">The Software Life: First Impressions of Xtend</a></h2></td></tr>
					<tr><td>Article</td><td><h2><a href="https://pragprog.com/magazines/2011-12/extending-java">Extending Java - Xtend a New Language for Java Developers</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://tomsondev.bestsolution.at/2012/04/11/javafx-xtend-a-perfect-match/">JavaFX & Xtend - A Perfect Match</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://tomsondev.bestsolution.at/2012/04/11/javafx-xtend-a-sensational-perfect-match/">JavaFX & Xtend - A Sensational Perfect Match</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://tomsondev.bestsolution.at/2012/05/29/javafx-xtend-an-ongoing-love/">JavaFX & Xtend - An Ongoing Love</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://tomsondev.bestsolution.at/2012/06/19/xtend-javafx-properties-and-operator-overloading/">Xtend, JavaFX-Properties and Operator Overloading</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://blog.moritz.eysholdt.de/2011/12/building-swt-user-interfaces-with-xtend.html">Building SWT User Interfaces with Xtend</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://blog.efftinge.de/2012/06/vertx-and-xtend.html">Vert.x & Xtend</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://blog.efftinge.de/2012/05/distance-time-speed.html">Distance / Time = Speed - A Post on Operator Overloading in Xtend</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://blog.efftinge.de/2012/04/xtend-examples-used-at-eclipsecon-2012.html">Xtend Example Screencasts</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://blog.efftinge.de/2012/04/xtend-example-working-with-distances.html">Working With Distances using Xtend (Operator Overloading Applied)</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://blog.efftinge.de/2012/01/i-like-free-beer.html">I Like Free Beer (99 Bottles in Xtend)</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://blog.efftinge.de/2011/12/groovy-scala-java-xtend-stupid.html">Groovy, Scala, Java, Xtend - A Stupid Comparism</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://blog.efftinge.de/2011/12/groovy-scala-java-xtend-updated-stupid.html">Groovy, Scala, Java, Xtend - An UPDATED Stupid Comparism</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://blog.efftinge.de/2011/12/writing-android-uis-with-xtend.html">Writing Android Apps with Xtend</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://blog.efftinge.de/2011/11/whats-so-special-about-xtends-extension.html">What's so special about Xtend's extension methods</a></h2></td></tr>
					<tr><td>Blog</td><td><h2><a href="http://blog.efftinge.de/2011/10/xtend-21-type-safe-groovy-style-builder.html">Xtend - Type-safe Groovy-style Builder APIs</a></h2></td></tr>
					<tr><td>Article</td><td><h2><a href="http://it-republik.de/jaxenter/artikel/Codegenerierung-mit-Eclipse-Xtend-4186.html">Xtend - eine Sprache für Java Entwickler (German)</a></h2></td></tr>
				</table>
					</div>
				</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>
