<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
  <!--head-->
  <head>
    <meta charset="utf-8">
    <title>Eclipse OM2M - Open Source platform for M2M communication</title>
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
    <meta name="description" content="The OM2M project is an open source implementation of the SmartM2M standard. It provides a framework for developing services independently of the underlying network, with the aim to facilitate the deployment of vertical applications and heterogeneous devices.">
    <meta name="author" content="Yassine Banouar">
    <!-- Icon -->
    <link rel="shortcut icon" href="img/OM2M_icon.ico"/>
    <!-- site css -->
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="css/bootstrap-responsive.min.css">
    <link rel="stylesheet" href="css/site.min.css">
    <link rel="stylesheet" href="css/bg.css">


   <!-- <link href="http://fonts.googleapis.com/css?family=Open+Sans:400,300,600,800,700,400italic,600italic,700italic,800italic,300italic" rel="stylesheet" type="text/css">-->
    <!-- <link href='http://fonts.googleapis.com/css?family=Lato:300,400,700' rel='stylesheet' type='text/css'> -->
    <!-- HTML5 shim, for IE6-8 support of HTML5 elements. All other JS at the end of file. -->
    <!--[if lt IE 9]>
      <script src="js/html5shiv.js"></script>
      <script src="js/respond.min.js"></script>
    <![endif]-->

<style>
	 .btn.active,.btn:focus, .btn:hover{
		background-color: #FF4A1E;
	}

.topic .container a.btn{
	padding:10px;
}
</style>

  </head>

  <!--End of head-->

  <!--Body-->
  <body style="background-color: #f1f2f6;">
    <div class="docs-header">
      <!--nav-->
      <nav class="navbar navbar-default navbar-custom" role="navigation">
        <div class="container">
          <div class="navbar-header">
            <a href="http://eclipse.org/om2m"><img src="img/OM2M_logo.png" height="90"></a>
          </div>
          <!--<a href="http://www.eclipse.org/projects/what-is-incubation.php" target="_blank"><img class="hidden-phone pull-right" src='img/incubation.png' style="height: 100px; opacity: 0.7" alt="Eclipse Incubation egg"></a>-->
        </div>
      </nav>


      <!--header-->
      <div class="topic">
        <div class="container">
          <div class="row">
            <div class="col-md-9">
            </br>
              <center>
                <h2 style="color:#000">What is Eclipse OM2M?</h2>
                <h4 style="color:#000">The Eclipse OM2M project, initiated by <a href="https://www.laas.fr/public/en" target="_blank">LAAS-CNRS</a>, is an open source implementation of <a href="http://www.onem2m.org" target="_blank">oneM2M</a> and <a href="http://www.etsi.org/technologies-clusters/technologies/m2m" target="_blank">SmartM2M</a> standard. It provides a horizontal M2M service platform for developing services independently of the underlying network, with the aim to facilitate the deployment of vertical applications and heterogeneous devices.</h4>
              </center>
              <center>
                <div class="btn-group">

                  <a class="btn btn-cool" href="https://wiki.eclipse.org/OM2M/one" target="_blank">Wiki</a>
                  <a class="btn btn-cool" href="http://www.eclipse.org/forums/eclipse.om2m" target="_blank">Forum</a>
                  <a class="btn btn-cool" href="https://dev.eclipse.org/mailman/listinfo/om2m-dev" target="_blank">Mailing List</a>
                  <a class="btn btn-cool" href="https://bugs.eclipse.org/bugs/buglist.cgi?list_id=11457280&order=changeddate%20DESC%2Cbug_status&product=OM2M&query_based_on=&query_format=advanced" target="_blank">Bug Tracker</a>
                  <!--<a class="btn btn-cool" href="https://git.eclipse.org/r/#/q/om2m" target="_blank">Gerrit</a>
		  <a class="btn btn-cool" href="http://git.eclipse.org/c/om2m/org.eclipse.om2m.git/" target="_blank">Repo</a>-->
                  <a class="btn btn-cool" href="https://wiki.eclipse.org/OM2M/Public_documentation" target="_blank">Resources</a>
                  <a class="btn btn-cool" href="https://wiki.eclipse.org/OM2M/Team" target="_blank">Team</a>
                  <a class="btn btn-cool" href="https://wiki.eclipse.org/OM2M/Community" target="_blank">Community</a>
                  <a class="btn btn-cool" href="https://wiki.eclipse.org/OM2M/Roadmap" target="_blank">Roadmap</a>
                </div>
<hr class="visible-phone">
                <!--<div class="row ">
                  <a href="https://wiki.eclipse.org/OM2M" target="_blank">Wiki</a> |
                  <a href="http://git.eclipse.org/c/om2m" target="_blank">Source Code</a> |
                  <a href="http://www.eclipse.org/forums/eclipse.om2m" target="_blank">Forum</a> |
                  <a href="https://dev.eclipse.org/mailman/listinfo/om2m-dev" target="_blank">Mailing List</a> |
                  <a href="https://bugs.eclipse.org/bugs/buglist.cgi?list_id=11457280&order=changeddate%20DESC%2Cbug_status&product=OM2M&query_based_on=&query_format=advanced" target="_blank">Bug Tracker</a> |
                  <a href="https://wiki.eclipse.org/OM2M/Public_documentation" target="_blank">Resources</a> |
                  <a href="https://wiki.eclipse.org/OM2M/Team" target="_blank">Team</a>
                  <a href="https://wiki.eclipse.org/OM2M/Roadmap" target="_blank">Roadmap</a>
                </div>-->
              </center>
          </div>
            <div class="col-md-3">
              <ol class="rounded-list">
                <li><a href="http://wiki.eclipse.org/OM2M/Download" target="_blank">Download</a></li>
                <li><a href="http://wiki.eclipse.org/OM2M/one/Clone" target="_blank">Clone & Build</a></li>
                <li><a href="http://wiki.eclipse.org/OM2M/one/Starting" target="_blank">Config & Start</a></li>
                <li><a href="http://wiki.eclipse.org/OM2M/one/Web_Interface" target="_blank">Web Interface</a></li>
                <li><a href="http://wiki.eclipse.org/OM2M/one/REST_API" target="_blank">REST API</a></li>
                <li><a href="http://wiki.eclipse.org/OM2M/one/Developer" target="_blank">Add Your Plugin</a></li>
              </ol>
            </div>
          </div>
        </div>
        <div class="topic__infos">
          <div class="container" style="color:#000;font-size: 16px;">
            Open source project under EPL license. Contact us on: <a style="color: #FF4A1E;font-weight: 700;" href="https://dev.eclipse.org/mailman/listinfo/om2m-dev"/>om2m-dev@eclipse.org </a> <!--For operational support contact <a href="http://sensinov.com/">Sensinov SAS--></a>
          </div>
        </div>
      </div>
      <!-- End of header-->
    </div>

    <!--documents-->
    <div class="container documents">
      <!-- properties -->
      <div class="example">
        <div class="row">
          <div class="col-sm-6 col-md-4">
            <div class="thumbnail">
            <center><i><img src="img/communication.png"></i></center>
            <div class="caption" style="text-align: justify">
                <center><h3 style="color:#ff4a1e">Standard-based Platform</h3></center>
                <p>OM2M implements <a href="http://www.onem2m.org" target="_blank">oneM2M</a> and <a href="http://www.etsi.org/technologies-clusters/technologies/m2m" target="_blank">SmartM2M</a> standard. It provides a horizontal Service Common Entity (CSE) that can be deployed in an M2M server, a gateway, or a device. Each CSE provides Application Enablement, Security, Triggering, Notification, Persistency, Device Interworking, Device Management, etc.</p>
              </div>
            </div>
          </div>
          <div class="col-sm-6 col-md-4">
            <div class="thumbnail">
            <center><i><img src="img/ying.png"></i></center>
              <div class="caption" style="text-align: justify">
                <center><h3 style="color:#ff4a1e">RESTful API</h3></center>
                <p>OM2M exposes a <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm" target="_blank">RESTful API</a> providing primitive procedures for machines authentication, resources discovery, applications registration, containers management, synchronous and asynchronous communications, access rights authorization, groups organisation, and re-targeting.
              </div>
            </div>
          </div>
          <div class="col-sm-6 col-md-4">
            <div class="thumbnail">
            <center><i><img src="img/plug.png"></i></center>
              <div class="caption"  style="text-align: justify">
                <center><h3 style="color:#ff4a1e">Modularity & Extensibility</h3></center>
                <p>OM2M is a Java implementation running on top of an <a href="http://www.osgi.org/">OSGi</a> Equinox runtime, making it highly extensible via plugins. It is built as an Eclipse product using <a href="http://maven.apache.org/">Maven</a> and <a href="http://www.eclipse.org/tycho/">Tycho</a>. Each plugin offers specific functionalities, and can be remotely installed, started, stopped, updated, and uninstalled without requiring a reboot.</p>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- End Features -->

      <!-- Others -->
      <div class="row">
        <div class="col-md-4">
          <h3>Get and use OM2M</h3>
          <p style="text-align: justify">You can get OM2M by cloning the <a href="http://git.eclipse.org/c/om2m/org.eclipse.om2m.git" target="_blank"> repository</a>, build it and get started following the <a href="https://wiki.eclipse.org/OM2M/one#Getting_started" target="_blank"> OM2M Get Started</a>.</p>
          <p style="text-align: justify">For all documentation, you can take a look at the <a href="https://wiki.eclipse.org/OM2M/one" target="_blank"> OM2M Eclipse Wiki</a>.</p>
        </div>
        <div class="col-md-4">
          <h3>New and Noteworthy</h3>
          <p style="text-align: justify"><a href="https://wiki.eclipse.org/OM2M/Roadmap" target="_blank"> New and Noteworthy</a> is here to describe the new features of each release from the previous one.</p>
        </div>
        <div class="col-md-4">
          <h3>Prerequisites</h3>
          <ul>
          	<li>Git is required to clone OM2M.</li>
            <li>JAVA 1.7 or later is required to run OM2M.</li>
            <li>Maven 3 or later is required to build OM2M.</li>
        </div>
      </div>
      <!-- End Others -->
      </div>
    <!-- End Documents -->

    <!-- Footer -->
    <div id="extra">
      <div class="container">
        <div class="row foo">
          <div class="col-md-7">
            <h3>Quick links</h3>
            <ul>
              <li><a href="http://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a></li>
              <li><a href="http://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a></li>
              <li><a href="http://www.eclipse.org/legal/copyright.php" target="_blank">Copyright Agent</a></li>
              <li><a href="http://www.eclipse.org/legal/" target="_blank">Legal</a></li>
            </ul>
            <ul>
              <li><a href="http://www.eclipse.org" target="_blank">Eclipse Home</a></li>
              <li><a href="http://live.eclipse.org/" target="_blank">Eclipse Live</a></li>
              <li><a href="http://www.planeteclipse.org/" target="_blank">Eclipse Planet</a></li>
              <li><a href="https://www.eclipse.org/security/" target="_blank">Eclipse Security</a></li>              
              <li><a href="http://marketplace.eclipse.org/" target="_blank">Market Place</a></li>              
            </ul>
          </div>
          <div class="col-md-5">
            <h3>About OM2M</a></h3>
            <p>Follow us on Twitter <a href="https://twitter.com/openm2m" target="_blank">@OpenM2M</a></p>
          
          </div>
        </div>
        <center>
        <p class="copyright">Copyright © 2015 The Eclipse Foundation. All Rights Reserved.</p>
      </center>
      </div>

    </div>
    <!-- End Footer -->

    <!-- JS in the end for a faster document loading -->
    <script type="text/javascript" src="js/site.min.js"></script>
    <script type="text/javascript" src="js/bootstrap.min.js"></script>
    <!-- Google Analytics -->
    <!--  <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-51133686-2', 'eclipse.org');
      ga('send', 'pageview');

     </script>-->
    <!-- End Google Analytics Code -->

    <!-- Piwik -->
 <!--    <script type="text/javascript">
    var _paq = _paq || [];
    _paq.push(['trackPageView']);
    _paq.push(['enableLinkTracking']);
    (function() {
      var u=(("https:" == document.location.protocol) ? "https" : "http") + "://bazar.laas.fr:8888/piwik/";
      _paq.push(['setTrackerUrl', u+'piwik.php']);
      _paq.push(['setSiteId', 1]);
      var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript';
      g.defer=true; g.async=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
    })();
  </script> -->
<!--   <noscript><p><img src="http://bazar.laas.fr:8888/piwik/piwik.php?idsite=1" style="border:0;" alt="" /></p></noscript>
  End Piwik Code

  </body> -->
</html>
