blob: 49648c9f9ddf0ea6d17fe80d6c538e4bda6eab7e [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112407000-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'UA-112407000-2');
</script>
<!-- Google Tag Manager -->
<script>
(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start': new Date().getTime(),
event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-KS8HHSF');
</script>
<!-- End Google Tag Manager -->
<head>
<title>Getting Started with Codewind in Eclipse | Codewind</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Eclipse Codewind">
<meta name="keywords" content="Eclipse, docker, container, devops, applications, development, iteration, microservices, cloud, services, rapid, integrated"/>
<link rel="icon" type="image/png" sizes="16x16" href="images/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="images/favicon/favicon-32x32.png">
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:300,400,600&display=swap" rel="stylesheet">
<!-- Bootstrap CSS CDN -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<link rel="stylesheet" href="css/styles.css">
<link rel="stylesheet" href="css/docs.css">
<link rel="stylesheet" href="css/blog.css">
<link rel="stylesheet" href="css/guides.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/themes/prism.min.css">
</head>
<body data-spy="scroll" data-target="#toc">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KS8HHSF"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div class="main">
<!-- Bootstrap NavBar -->
<nav class="navbar navbar-expand-lg navbar-light cw-banner fixed-top" aria-label="topnav">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse"
data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="/codewind/">
<img alt="Codewind logo image" title="Codewind logo image" src="images/header/header-logo.svg" class="cw-header-logo" alt="">
</a>
<div class="collapse navbar-collapse justify-content-end cw-navbar-padding" id="navbarNavDropdown">
<ul class="navbar-nav cw-navbar-nav">
<li class="nav-item cw-navbar-item cw-header-link-docs">
<a class="nav-link cw-nav-link cw-header-link-text" href="overview.html">Docs</a>
</li>
<li class="nav-item cw-navbar-item cw-header-link-news">
<a class="nav-link cw-nav-link cw-header-link-text" href="news.html">News</a>
</li>
<li class="nav-item cw-navbar-item cw-header-link-blog">
<a class="nav-link cw-nav-link cw-header-link-text" href="blog.html">Blog</a>
</li>
<li class="nav-item cw-navbar-item cw-header-link-guides">
<a class="nav-link cw-nav-link cw-header-link-text" href="guides.html">Guides</a>
</li>
<li class="nav-item cw-navbar-item cw-header-link">
<a class="nav-link cw-nav-link" href="https://github.com/eclipse/codewind"><img alt="Codewind Github" class="banner-image" title="Codewind Github" data-toggle="tooltip" data-placement="top" id="cw_github_stars" title="..." src="images/header/github.svg"/></a>
</li>
<li class="nav-item cw-navbar-item cw-header-link">
<a class="nav-link cw-nav-link" href="https://twitter.com/EclipseCodewind"><img alt="Codewind Twitter" class="banner-image" title="Codewind Twitter" src="images/header/twitter.png"/></a>
</li>
<li class="nav-item cw-navbar-item cw-header-link">
<a class="nav-link cw-nav-link" href="https://mattermost.eclipse.org/eclipse/channels/eclipse-codewind"><img alt="Codewind Mattermost" class="banner-image" title="Codewind Mattermost" src="images/header/mattermost.png"/></a>
</li>
<li class="nav-item cw-navbar-item cw-header-link">
<a class="nav-link cw-nav-link" href="https://www.youtube.com/channel/UCnKCVK6RFDyHFqUmXlAhCHQ"><img alt="Codewind YouTube" class="banner-image" title="Codewind YouTube" src="images/header/youtube.png"/></a>
</li>
<!-- li class="nav-item cw-navbar-item" id="download-li">
<button onClick="window.location.href='https://microclimate.dev/download/codewind';" type="button" class="btn cw-download-button">Download</button>
<a href="https://microclimate.dev/download/codewind" class="nav-link cw-nav-link cw-download-link" href="#">Download</a>
</li> -->
<!-- Smaller devices menu END -->
</ul>
</div>
</nav>
<!-- End Bootstrap NavBar -->
<div class="row" id="post-row">
<div class="col-xs-12 col-lg-1"></div>
<div class="py-5 px-5 col-xs-12 col-lg-10">
<div class="cw-docs-spacer"></div>
<div id="post-content">
<h1>Getting Started with Codewind in Eclipse</h1>
<p>14 May 2020</p>
<div role="main"><h1 id="getting-started-with-codewind-in-eclipse">Getting Started with Codewind in Eclipse</h1>
<h2 id="objectives">Objectives</h2>
<ul>
<li>Install Eclipse and Codewind</li>
<li>Develop a simple microservice, using Eclipse Codewind in Eclipse</li>
</ul>
<h2 id="overview">Overview</h2>
<p>Eclipse Codewind provides the ability to create application projects from <code class="highlighter-rouge">Application Stacks</code> that your company has built, enabling developers to focus on their code and not infrastructure and Kubernetes. Application deployments to Kubernetes occur via pipelines when developers commit their local code to the correct Git repos Kabanero is managing via webhooks.</p>
<p>Eclipse Codewind provides the ability to create projects based on a variety of different template types. These include IBM Cloud starters, OpenShift Do (odo), and Appsody templates. Today, there are templates for: IBM Cloud Starters, odo, Eclipse MicroProfile/Java EE, Springboot, Node.js, Node.js with Express, and Node.js with Loopback.</p>
<h2 id="developing-with-eclipse">Developing with Eclipse</h2>
<p>You can use Codewind for Eclipse to develop and debug your containerized projects from within a local Eclipse IDE.</p>
<h3 id="prerequisite">Prerequisite</h3>
<p>Before you can develop a microservice with Eclipse, you need to:</p>
<ul>
<li><a href="https://docs.docker.com/install/">Install Docker</a>
<ul>
<li><strong>Note:</strong> Make sure to install or upgrade to minimum Docker version 19.03.</li>
</ul>
</li>
<li><a href="https://www.eclipse.org/downloads/packages/release/">Install Eclipse</a>
<ul>
<li><strong>Note:</strong> Make sure to install or upgrade to mimimum Eclipse version 2019-09 R (4.13.0).</li>
</ul>
</li>
</ul>
<h3 id="installing-codewind-for-eclipse">Installing Codewind for Eclipse</h3>
<p>The Codewind installation pulls the following images that form the Codewind backend:</p>
<ol>
<li><code class="highlighter-rouge">eclipse/codewind-performance-amd64</code></li>
<li><code class="highlighter-rouge">eclipse/codewind-pfe-amd64</code></li>
</ol>
<p>The Codewind installation includes two parts:</p>
<ol>
<li>The Eclipse plug-in installs when you install Codewind from the <a href="https://marketplace.eclipse.org/content/codewind">Eclipse Marketplace</a> or when you install by searching in the <code class="highlighter-rouge">Eclipse Extensions</code> view.</li>
<li>The Codewind backend containers install after you click <code class="highlighter-rouge">Install</code>. Clicking <code class="highlighter-rouge">Install</code> downloads the Codewind backend containers, ~1GB.</li>
</ol>
<h3 id="configuring-codewind-to-use-application-stacks">Configuring Codewind to use application stacks</h3>
<p>Configure Codewind to use Appsody templates so you can focus exclusively on your code. These templates include an Eclipse MicroProfile stack that you can use to follow this guide. Complete the following steps to select the Appsody templates:</p>
<ol>
<li>Click the <code class="highlighter-rouge">Codewind</code> tab.</li>
<li>Expand <code class="highlighter-rouge">Codewind</code> by clicking the drop-down arrow.</li>
<li>Right-click <code class="highlighter-rouge">Local [Running]</code>.</li>
<li>Select <code class="highlighter-rouge">Manage Template Sources...</code>.</li>
<li>Select <code class="highlighter-rouge">Appsody Stacks - incubator</code>.</li>
<li>Click the <code class="highlighter-rouge">OK</code> button.</li>
</ol>
<p>You have now configured Codewind to use Appsody templates and can proceed to develop your microservice within Codewind.</p>
<p>If your organization uses customized application stacks and has given you a URL that points to an <code class="highlighter-rouge">index.json</code> file, you can add it to Codewind:</p>
<ol>
<li>Return to <code class="highlighter-rouge">Codewind</code> and right-click <code class="highlighter-rouge">Local [Running]</code>.</li>
<li>Select <code class="highlighter-rouge">Manage Template Sources...</code>.</li>
<li>Click the <code class="highlighter-rouge">Add...</code> button to add your URL.</li>
<li>Add your URL in the <code class="highlighter-rouge">URL:</code> box in the pop up window and save your changes.</li>
</ol>
<h3 id="creating-an-appsody-project">Creating an Appsody project</h3>
<p>Appsody helps you develop containerized applications and removes the burden of managing the full software development stack. If you want more context about Appsody, visit the <a href="https://appsody.dev/docs">Appsody welcome page</a>.</p>
<ol>
<li>Right-click <code class="highlighter-rouge">Local [Running]</code> under <code class="highlighter-rouge">Codewind</code> in the <code class="highlighter-rouge">Codewind</code> tab.</li>
<li>Select <code class="highlighter-rouge">+ Create New Project...</code>
<ul>
<li><strong>Note:</strong> Make sure Docker is running. Otherwise, you get an error.</li>
</ul>
</li>
<li>Name your project <code class="highlighter-rouge">appsody-calculator</code>.</li>
<li>Under <code class="highlighter-rouge">Template</code>, select <code class="highlighter-rouge">Appsody Open Liberty template</code>. 
<ul>
<li>If you don’t see an Appsody template, select the <code class="highlighter-rouge">Manage Template Sources...</code> link at the end of the window.</li>
<li>Select the <code class="highlighter-rouge">Appsody Stacks - appsodyhub</code> checkbox.</li>
<li>Click <code class="highlighter-rouge">OK</code>.</li>
<li>The templates are refreshed, and the Appsody templates are available.</li>
</ul>
</li>
<li>Click <code class="highlighter-rouge">Finish</code>.
<ul>
<li>To monitor your project’s progress, right-click on your project, and select <code class="highlighter-rouge">Show Log Files</code>.</li>
<li>Select <code class="highlighter-rouge">Show All</code>. Then a <code class="highlighter-rouge">Console</code> tab is displayed where you see your project’s build logs.</li>
</ul>
</li>
</ol>
<p>Your project is displayed in the <code class="highlighter-rouge">Local [Running]</code> section. The progress for creating your project is tracked next to the project’s name.</p>
<p>Your project is complete when you see your project is running and its build is successful.</p>
<h3 id="accessing-the-application-endpoint-in-a-browser">Accessing the application endpoint in a browser</h3>
<ol>
<li>Return to your project under the Codewind tab.</li>
<li>Right-click your project and select <code class="highlighter-rouge">Open Application</code>.</li>
</ol>
<p>Your application is now opened in a browser, showing the welcome to your Appsody microservice page.</p>
<h3 id="adding-a-rest-service-to-your-application">Adding a REST service to your application</h3>
<ol>
<li>Go to your project’s workspace under the Project Explorer tab.</li>
<li>Navigate to <code class="highlighter-rouge">Java Resources-&gt;src/main/java-&gt;dev.appsody.starter</code>.</li>
<li>Right-click <code class="highlighter-rouge">dev.appsody.starter</code> and select <code class="highlighter-rouge">New-&gt;Class</code>.</li>
<li>Create a Class file, name it <code class="highlighter-rouge">Calculator.java</code>, and select <code class="highlighter-rouge">Finish</code>. This file is your JAX-RS resource.</li>
<li>Populate the file with the following code and then <strong>save</strong> the file:</li>
</ol>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">package</span> <span class="n">dev</span><span class="o">.</span><span class="na">appsody</span><span class="o">.</span><span class="na">starter</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.ws.rs.core.Application</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.ws.rs.GET</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.ws.rs.Path</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.ws.rs.Produces</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.ws.rs.core.MediaType</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.ws.rs.core.Response</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.ws.rs.PathParam</span><span class="o">;</span>
<span class="nd">@Path</span><span class="o">(</span><span class="s">"/calculator"</span><span class="o">)</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">Calculator</span> <span class="kd">extends</span> <span class="nc">Application</span> <span class="o">{</span>
<span class="nd">@GET</span>
<span class="nd">@Path</span><span class="o">(</span><span class="s">"/aboutme"</span><span class="o">)</span>
<span class="nd">@Produces</span><span class="o">(</span><span class="nc">MediaType</span><span class="o">.</span><span class="na">TEXT_PLAIN</span><span class="o">)</span>
<span class="kd">public</span> <span class="nc">String</span> <span class="nf">aboutme</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="s">"You can add (+), subtract (-), and multiply (*) with this simple calculator."</span><span class="o">;</span>
<span class="o">}</span>
<span class="nd">@GET</span>
<span class="nd">@Path</span><span class="o">(</span><span class="s">"/{op}/{a}/{b}"</span><span class="o">)</span>
<span class="nd">@Produces</span><span class="o">(</span><span class="nc">MediaType</span><span class="o">.</span><span class="na">TEXT_PLAIN</span><span class="o">)</span>
<span class="kd">public</span> <span class="nc">Response</span> <span class="nf">calculate</span><span class="o">(</span><span class="nd">@PathParam</span><span class="o">(</span><span class="s">"op"</span><span class="o">)</span> <span class="nc">String</span> <span class="n">op</span><span class="o">,</span> <span class="nd">@PathParam</span><span class="o">(</span><span class="s">"a"</span><span class="o">)</span> <span class="nc">String</span> <span class="n">a</span><span class="o">,</span> <span class="nd">@PathParam</span><span class="o">(</span><span class="s">"b"</span><span class="o">)</span> <span class="nc">String</span> <span class="n">b</span><span class="o">)</span> <span class="o">{</span>
<span class="kt">int</span> <span class="n">numA</span> <span class="o">=</span> <span class="nc">Integer</span><span class="o">.</span><span class="na">parseInt</span><span class="o">(</span><span class="n">a</span><span class="o">);</span>
<span class="kt">int</span> <span class="n">numB</span> <span class="o">=</span> <span class="nc">Integer</span><span class="o">.</span><span class="na">parseInt</span><span class="o">(</span><span class="n">b</span><span class="o">);</span>
<span class="k">switch</span> <span class="o">(</span><span class="n">op</span><span class="o">)</span> <span class="o">{</span>
<span class="k">case</span> <span class="s">"+"</span><span class="o">:</span>
<span class="k">return</span> <span class="nc">Response</span><span class="o">.</span><span class="na">ok</span><span class="o">(</span><span class="n">a</span> <span class="o">+</span> <span class="s">"+"</span> <span class="o">+</span> <span class="n">b</span> <span class="o">+</span> <span class="s">"="</span> <span class="o">+</span> <span class="o">(</span><span class="nc">Integer</span><span class="o">.</span><span class="na">toString</span><span class="o">((</span><span class="n">numA</span> <span class="o">+</span> <span class="n">numB</span><span class="o">)))).</span><span class="na">build</span><span class="o">();</span>
<span class="k">case</span> <span class="s">"-"</span><span class="o">:</span>
<span class="k">return</span> <span class="nc">Response</span><span class="o">.</span><span class="na">ok</span><span class="o">(</span><span class="n">a</span> <span class="o">+</span> <span class="s">"-"</span> <span class="o">+</span> <span class="n">b</span> <span class="o">+</span> <span class="s">"="</span> <span class="o">+</span> <span class="o">(</span><span class="nc">Integer</span><span class="o">.</span><span class="na">toString</span><span class="o">((</span><span class="n">numA</span> <span class="o">-</span> <span class="n">numB</span><span class="o">)))).</span><span class="na">build</span><span class="o">();</span>
<span class="k">case</span> <span class="s">"*"</span><span class="o">:</span>
<span class="k">return</span> <span class="nc">Response</span><span class="o">.</span><span class="na">ok</span><span class="o">(</span><span class="n">a</span> <span class="o">+</span> <span class="s">"*"</span> <span class="o">+</span> <span class="n">b</span> <span class="o">+</span> <span class="s">"="</span> <span class="o">+</span> <span class="o">(</span><span class="nc">Integer</span><span class="o">.</span><span class="na">toString</span><span class="o">((</span><span class="n">numA</span> <span class="o">*</span> <span class="n">numB</span><span class="o">)))).</span><span class="na">build</span><span class="o">();</span>
<span class="k">default</span><span class="o">:</span>
<span class="k">return</span> <span class="nc">Response</span><span class="o">.</span><span class="na">ok</span><span class="o">(</span><span class="s">"Invalid operation. Please Try again"</span><span class="o">).</span><span class="na">build</span><span class="o">();</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span>
</code></pre></div></div>
<p>Any changes you make to your code are automatically built and re-deployed by Codewind and you can view them in your browser.</p>
<h3 id="working-with-the-example-calculator-microservice">Working with the example calculator microservice</h3>
<p>You now can work with the example calculator microservice.</p>
<ul>
<li>Use the port number you saw when you first opened the application.</li>
<li>Make sure to remove the <code class="highlighter-rouge">&lt; &gt;</code> symbol in the URL.</li>
<li><code class="highlighter-rouge">http://127.0.0.1:&lt;port&gt;/starter/calculator/aboutme</code></li>
<li>You see the following response:</li>
</ul>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>You can add (+), subtract (-), and multiply (*) with this simple calculator.
</code></pre></div></div>
<p>You can try a few of the sample calculator functions:</p>
<ul>
<li><code class="highlighter-rouge">http://127.0.0.1:&lt;port&gt;/starter/calculator/{op}/{a}/{b}</code>, where you can input one of the available operations <code class="highlighter-rouge">(+, _, *)</code>, and an integer a, and an integer b.</li>
<li>So for <code class="highlighter-rouge">http://127.0.0.1:&lt;port&gt;/starter/calculator/+/10/3</code> you should see: <code class="highlighter-rouge">10+3=13</code>.</li>
</ul>
<h2 id="what-you-have-learned">What you have learned</h2>
<p>In this quick guide, you have learned to:</p>
<ol>
<li>Install Codewind on Eclipse</li>
<li>Develop your own microservice using Codewind</li>
</ol>
<h2 id="next-steps">Next Steps</h2>
<p>See other quick guides to learn how to develop with Codewind:</p>
<ul>
<li><a href="codewind-vscode-quick-guide.html">Codewind in VS Code</a></li>
</ul>
</div>
</div>
</div>
<div class="col-xs-12 col-lg-1"></div>
</div>
<!-- footer row -->
<footer>
<div id="footer-div-mobile">
<div class="row">
<div class="col-sm-12 text-center">
<span>Useful Links:</span>
<br/><br/>
<a class="cw-footer-links" href="http://www.eclipse.org">Eclipse Foundation</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/termsofuse.php">Website Terms of Use</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal">Legal</a><br/>
</div>
</div>
<div class="cw_footer_display_flex cw-footer-same-height cw-footer-center">
<div class="cw_footer_display_icons row">
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="mailto:codewind-dev@eclipse.org"><img alt="Send us an email" title="Send us an email" src="images/footer/email-icon.svg" class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="https://twitter.com/EclipseCodewind"><img alt="Codewind Twitter" title="Codewind Twitter" src="images/footer/twitter-logo.svg" class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="https://github.com/eclipse/codewind"><img alt="Codewind Github" title="Codewind Github" src="images/footer/github-logo.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
<div class=" cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="https://mattermost.eclipse.org/eclipse/channels/eclipse-codewind"><img alt="Codewind Mattermost" title="Codewind Mattermost" src="images/footer/mattermost-logo.png" class="cw-logo-mm" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="https://www.youtube.com/channel/UCnKCVK6RFDyHFqUmXlAhCHQ"><img alt="Codewind YouTube" title="Codewind YouTube" src="images/footer/youtube-logo-dark.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="http://www.eclipse.org"><img class="cw-logo-eclipse-mobile" alt="Eclipse" title="Eclipse" src="images/footer/eclipse.svg"/></a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row cw-footer-desktop" id="footer-div">
<div class="cw-footer-left">
<div class="px-5 cw-font-12>
<span class="cw-font-14">Useful Links:</span>
<br/><br/>
<a class="cw-footer-links" href="http://www.eclipse.org">Eclipse Foundation</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/termsofuse.php">Website Terms of Use</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal">Legal</a><br/>
</div>
</div>
<div class="cw-footer-border-right"></div>
<div class="cw_footer_display_flex cw-footer-same-height cw-footer-center">
<div class="cw_footer_display_icons">
<div class="cw-footer-col text-center">
<div>
<div>
<a href="mailto:codewind-dev@eclipse.org"><img alt="Send us an email" title="Send us an email" src="images/footer/email-icon.svg" class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center">
<div>
<div>
<a href="https://twitter.com/EclipseCodewind"><img alt="Codewind Twitter" title="Codewind Twitter" src="images/footer/twitter-logo.svg" class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center">
<div>
<div>
<a href="https://github.com/eclipse/codewind"><img alt="Codewind Github" title="Codewind Github" src="images/footer/github-logo.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
<div class=" cw-footer-col text-center">
<div class="cw-logo-mm" >
<div class="cw-logo-mm" >
<a href="https://mattermost.eclipse.org/eclipse/channels/eclipse-codewind"><img alt="Codewind Mattermost" title="Codewind Mattermost" src="images/footer/mattermost-logo.png" class="cw-logo-mm" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center">
<div>
<div>
<a href="https://www.youtube.com/channel/UCnKCVK6RFDyHFqUmXlAhCHQ"><img alt="Codewind YouTube" title="Codewind YouTube" src="images/footer/youtube-logo-dark.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
</div>
</div>
<div class="cw-footer-border-right"></div>
<div class="cw-footer-right cw-footer-same-height cw-footer-vcenter">
<div class="cw-footer-eclipse-img cw-footer-same-height px-5 ">
<a href="http://www.eclipse.org">
<img alt="Eclipse" title="Eclipse" src="images/footer/eclipse.svg"/>
</a>
</div>
</div>
</div>
</footer>
<!-- footer row END -->
<!-- Jquery -->
<script
src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous">
</script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous">
</script>
<!-- Font Awesome JS -->
<script defer src="https://use.fontawesome.com/releases/v5.0.13/js/solid.js"
integrity="sha384-tzzSw1/Vo+0N5UhStP3bvwWPq+uvzCMfrN1fEFe+xBmv1C/AtVX5K0uZtmcHitFZ" crossorigin="anonymous">
</script>
<script defer src="https://use.fontawesome.com/releases/v5.0.13/js/fontawesome.js"
integrity="sha384-6OIrr52G08NpOFSZdxxz1xdNSndlD4vdcf/q2myIUVO0VsqaGHJsB0RaBE01VTOY" crossorigin="anonymous">
</script>
<script src="js/jquery.matchHeight-min.js"></script>
<script src="js/index.js"></script>
<script src="js/docs.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/prism.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/components/prism-docker.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/components/prism-json.min.js"></script>
</div>
</body>
</html>