<!DOCTYPE html>
<html>

<head>
	<meta charset="UTF-8">
	<title>OSBP - Documentation</title>
	
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta name="description"
		content="The website of Eclipse OSBP, an open-source no-code and low-code development platform for business and enterprise applications">
	<meta name="author" content="(c) Compex Systemhaus GmbH, Germnany">
	
	<!--  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="images/OS-logo-32x18.jpg">
	
	<link href="css/bootstrap.css" rel="stylesheet" type='text/css'>
	<link href="css/bootstrap-responsive.css" rel="stylesheet" type='text/css'>
	<link href="css/shield-responsive.css" rel="stylesheet" type='text/css'>
	<link href='css/fonts.css' rel='stylesheet' type='text/css'>
	<link href="css/prettyPhoto.css" rel="stylesheet" media="screen" type='text/css'>
	<link href="css/prettify.css" type="text/css" rel="stylesheet"/>
	<link href="css/style.css" rel="stylesheet" type='text/css'>
	<!-- cover flow -->
	<link href="css/coverflow.css" rel="stylesheet" type='text/css'>
	<!--[if lt IE 9]>
	  <link href="css/iebugs.css" rel="stylesheet" type='text/css'>
	<![endif]-->
</head>


<body>
  <!-- Google Tag Manager --   >
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-TGDS5S"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<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=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-TGDS5S');</script>
<!-- End Google Tag Manager -->

<header class="site-header">
  <!-- Navbar -->
  <div class="navbar navbar-fixed-top">
    <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="index.html"></a>
        
		<div class="nav-collapse collapse" style="height: 0px;">
          <ul class="nav">
            <!--li ><a href="news.html">News</a></li-->
			<li ><a href="index.html">Home</a></li>						
            <li ><a href="download.html">Download</a></li>
            <li ><a href="documentation.html">Documentation</a></li>
            <li ><a href="community.html">Community</a></li>
			<li ><a href="OS-bea-WG.html">OS.bea Working Group</a></li>			
            <li class="dropdown">
              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Support &amp; Training<span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="http://www.osbee.org/services/" target="_blank">OS.bee</a></li>
                <li><a href="http://www.compex-commerce.com/en/services/" target="_blank">Compex</a></li>
              </ul>
            </li>
          </ul>
        </div>
        <!--/.nav-collapse -->
      </div>
    </div>
  </div>
  <!-- Navbar End -->

</header>


<div class="page-content">
  <script>
    function startSearch(event) {
        if (event.keyCode == 13) {
            var q = 'site:eclipse.orgdocumentation+' + event.target.value;
            window.open('https://www.google.com/search?q=' + q, "_self");
        }
    }
  </script>
  <div class="wrapper">
  	<div id="page">  
      <div class="inner">
        <div id="maincontainer" class="container">
          <span class="edit-on-github pull-right">
            <a href="https://github.com/eclipseedit/website-published/xtext-website/documentation/index.html">Edit on Github</a>
          </span>
          <div class="span3" style="margin-left: 0px;">
			<div class="search-bar">
			  <img src="images/search-gray.png"/>
			  <input type="search" id="google-search" onkeyup="startSearch(event);"/>
			</div>
					
			<ul id="nav-outline" style="margin-left: 0px;">
			<li class="nav-part">Getting Started</li>
			<li><a href="102_domainmodelwalkthrough.html">15 Minutes Tutorial</a></li>
			<li><a href="103_domainmodelnextsteps.html">15 Minutes Tutorial - Extended</a></li>
			<li><a href="104_jvmdomainmodel.html">Five simple steps to your JVM language</a></li>
				
			<li class="nav-part">Reference Documentation</li>
			<li><a href="301_grammarlanguage.html">The Grammar Language</a></li>
			<li><a href="302_configuration.html">Configuration</a></li>
			<li><a href="303_runtime_concepts.html">Language Implementation</a></li>
			<li><a href="305_xbase.html">Integration with Java</a></li>
			<li><a href="307_special_languages.html">Typical Language Configurations</a></li>
			<li><a href="308_emf_integration.html">Integration with EMF</a></li>
			<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
			<!--li><a href="320_idea_support.html">IntelliJ IDEA Support</a></li-->
			<li><a href="330_web_support.html">Web Editor Support</a></li>
			<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
			</ul>
		  </div>
  		  <div class="span8 doc-contents">
			<div class="clearfix">
				 <div class="span9">
					<h1>How to get started?</h1>
					<p>If you are not quite sure whether OSBP is an appropriate development environment for your application, 
					we recommend to watch the videos below, as it gives you a good overview of what OSBP can do. If you want to dive in and learn more, 
					you should start with one of the documentation links on the left.</p>
				 </div>
				 
				<div class="span9">
					<h2>OSBP installation</h2>
				</div>
				<div class="span5">
					<p>Get started by watching this step-by-step tutorial! After following the instructions, you will be ready to use the OSBP software factory 
					and create your own business applications. The system requirements are the installation of Eclipse and Java (for more information check the documentation page).  
					It’s easy, try it yourself!
					</p>
				</div>
				<div class="span4">
					<iframe width="560" height="315" src="https://www.youtube.com/embed/19P1m23Ug3I" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
				</div>
				
				<div class="span9">
					<h2>My 1st app</h2>
				</div>
				<div class="span5">
					<p>In this video you will learn how to generate your first app within a few minutes. 
					By following the instructions in this video, you can check if your OS.bee installation was successful, 
					and you can generate your first app by using the wizard which is included in the initial installation package. 
					</p>
				</div>
				<div class="span4">
					<iframe width="560" height="315" src="https://www.youtube.com/embed/Ucd7MLlKpQY" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
				</div>
		   </div>
		  </div>
        </div>
      </div>
    </div>
  </div>
</div>
    
<footer class="site-footer">
  <div id="extra">
    <div class="inner">
      <div class="container">
        <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><br>
              <a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a><br>
              <a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a><br>
              <a href="http://www.eclipse.org/legal/">Legal</a></li>
            </ul>
          </div>
		  <div class="span6">
            <h3 class="footer-links-header">&nbsp;  </h3>

			<ul class="footer-links clearfix">
              <li><a href="http://www.eclipse.org">Eclipse Home</a><br>
              <a href="http://marketplace.eclipse.org/">Market Place</a><br>
              <a href="http://live.eclipse.org/">Eclipse Live</a><br>
              <a href="http://www.planeteclipse.org/">Eclipse Planet</a></li>
            </ul>

          </div>		  
       </div>
      </div>
    </div>
  </div>
  
  <a href="#" class="scrollup fadeOutRight animated" style="display: none;">ScrollUp</a>
  
  <!-- Le javascript
      ==================================================
      Placed at the end of the document so the pages load faster -->
  
  <script src="js/jquery-1.11.3.min.js"></script>
  <script src="js/bootstrap.min.js"></script>
  <script src="js/jquery.easing.1.3.js" type="text/javascript"></script>
  <script src="js/jquery.prettyPhoto.js" type="text/javascript"></script>
  <script src="js/twitter.js" type="text/javascript"></script>
  <script src="js/prettify.js" type="text/javascript"></script>
  <script src="js/lang-xtend.js" type="text/javascript"></script>
  <script src="js/lang-common.js" type="text/javascript"></script>
  <script src="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-3' ]);
    _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-->
  
  <script src="js/coverflow.min.js" type="text/javascript"></script>
  <script>
      $(function() {
        $('#coverflow').coverflow({
          active : 1,
          visibleAside: 2,
          overlap : 0.5,
          scale : 0.9,
          angle : 20,
          trigger : {
            "itemfocus" : true,
            "swipe" : true,
            "mousewheel" : false
          }
        });
        $('#coverflow :hidden').toggle();
        $(window).resize(function() {
          $('#coverflow').coverflow();
        });
      });

  </script>
</footer>


  </body>

</html>
