Welcome!

Java Authors: Elizabeth White, Hovhannes Avoyan, Dale Kim, Liz McMillan, Ruxit Blog

Related Topics: Java, Microservices Journal, Open Source, Eclipse

Java: Article

OSGi Application Testing with Tycho

A detailed tutorial

The OSGi framework is a popular platform for developing multifunctional desktop systems, enterprise systems and complex applications.

OSGi uses a modular approach where each bundle is regarded as a relatively independent and separate unit. The framework controls maintenance-based tasks such as managing interactions between bundles, resolving dependencies, and managing lifecycles. Therefore, programmers can reallocate their time with less routine work and concentrate solely on solution development.

However, testing such applications is a real problem. It is more demanding than regular Java application testing: there is a need to test interactions between the bundles, and the tests must occur within a real environment. In this case, the test must run inside the OSGi platform; thereby creating the need for specialized test frameworks.

The article focuses on OSGi application testing solutions based on the Tycho Project and Pax Exam. It provides a detailed tutorial with examples.

Actual Experience with Pax Exam
Creating a complex project from scratch that included development of an OSGi-based enterprise platform, we sought a specialized testing framework that effectively examines application functionality.

We were using Eclipse as the IDE for application development. Initially our tests were created as a JUnit Plug-in Test, which is a part of Eclipse. This approach is very helpful for developers because it allows tracking of problems and errors during the development process right after code is changed. Eclipse traces all changes on the fly without any additional manipulations; this data is presented in the test results. In addition, testing runs within the OSGi environment.

The aforementioned approach has one critical disadvantage: tests run only within Eclipse. We used Maven2 as the open source build tool and Hudson CI as the automated build monitoring system. There was no way to use tests with Maven, but we strongly needed test automation.

We quickly discovered that this area was not well established (see http://java.dzone.com/articles/dozen-osgi-myths-and) as only two specialized testing frameworks for the OSGi Platform functional existed: Pax Exam and Spring-DM. Pax Exam, based on JUnit4, was the only appropriate choice for us (Spring-DM is based on JUnit3).

We used Pax Exam over a year and faced a number of issues related to test development, running test suites, and sharing test results. We created a number of workarounds, but some issues were still irresolvable due to framework limitations.

We started with version 1.2.0 and finished using version 1.2.2, the latest available update at the time. Pax Exam gave us the ability to create integration tests using JUnit. The test for Maven was created as a Maven plugin. How does it work? It starts the OSGi platform, installs bundles necessary for testing, wraps the test in temporary OSGi bundle and installs itself in the OSGi platform. The test is able to use and check bundles within OSGi. You just need to configure the plugin in pom.xml and set configurations for each test. The bundle list can be set using paths on file system, using URLs or using artifacts from the Maven repository. (See the user guide)

This was the cause of our first difficulty. There was no way to set a bundle list as Maven dependencies, an approach which could have  independently resolved all bundle dependency issues. Instead, Pax Exam tests required links to the file system or the Maven repository. This method for bundle dependencies resolution had the following advantages and disadvantages for our project:

  • All bundles for testing had to be built and ready before test execution. This required testing from the application building process.
  • Separated build and testing processes made the build and automation process more complex
  • Dependency management was not easy to use
  • The advantages were similar: as long as the Maven repository contained build bundles, then a user could run testing processes independent from the main application building process; an application's source code was not required.

The main problem for us was the absence of an easy-to-use test framework inside Eclipse. We could run tests from Eclipse using the Eclipse Maven plugin; results were processed and shown as a regular JUnit test. However, it was the same as running tests with Maven from the command line. Eclipse workspace did not affect tests. For those using Pax Exam desiring to run tests from Eclipse after changing the testable code, one must perform several actions. First, one must build/install all necessary bundles which are changed. Second, one must clean the project with tests. Only once these steps are completed can a test be run. For our application some parts took up to two minutes for complete building. At the same time Eclipse refreshed and rebuilt the same project in seconds. It was very inconvenient to perform these time-consuming procedures for changing one line of code. This created many errors and problems during development.

We found that Pax Exam runs the test as a separate Java process. As a result, a remote debugger had to be used, which was more complex than regular debugging. On the other hand it was not enough to stop the test from Eclipse or terminate Maven execution should a test need to be cancelled. One must terminate the appropriate Java process. Moreover, Pax Exam was limited since it cannot run two or more simultaneous tests.

However, Pax Exam has a feature which was important for our tests. It runs each test method inside a separate OSGi environment; this guarantees that all tests run independently and isolated. Of course, this feature has a side effect - execution time.

Tests used files/resources during execution. It was helpful that Pax Exam allowed our programmers to set a working directory for each test.

Finally, difficulties arose due to the fact that the test project was not a regular OSGi bundle; thus, it was impossible to control dependencies. We needed to use third party libraries in several tests, but testable bundles did not use or provide them. With the OSGi bundle one can include it to a bundle's class path. But we were unable find a way to do so for the Pax Exam tests. We had to create special bundles for support which provided necessary libraries for tests.

In spite of all the disadvantages of the described framework for our project, we used it successfully for more than a year and it resolved our tasks. Pax Exam constantly updates and improves.

Tycho as a Solution for Test Development
The Tycho Project is an approach to building OSGi bundles, Eclipse plug-ins, and so on. Tycho is currently in the Incubation Phase.

In November 2010 we decided to use the Tycho Project and Maven 3 for the entire project because these technologies radically simplify the building process. This was a great opportunity to use the advantages of Tycho for testing. Eventually, we resolved almost all limitations and difficulties related to Pax Exam. After migrating our tests to Tycho, the development process became easier and faster.

Briefly, Tycho runs tests the same way as Eclipse runs JUnit Plug-in tests, but from Maven. Generally, the testing approach with Tycho has no differences from the testing approach with Pax Exam. We also had a separate project with tests. But in the Tycho case, it was real OSGi bundle with manifest which contained main configuration and dependencies. This contrasts Pax Exam which uses pom.xml for same aims.

I should start with the fact that the migration process from Pax Exam to Tycho did not take a long time nor did it create any difficulties. It was quite simple. The main problem was the following: in contrast to Pax Exam, Tycho does not start a separate OSGi platform for each test, but runs all tests inside one OSGi environment. This was the source of many errors and conflicts in tests because we relied on a ‘clean' system for each method. We were forced to reinitialize the application before every test. Nevertheless, we found new problems related to improper termination of some application components. For example, HTTP or JMS servers which were started for one test could affect another test.

However, this method had an advantage- execution time. Execution time was decreased from four hours to one hour. We removed a workaround related to constant hangs during test execution and disregarded the problem.

We found that many disadvantages of Pax Exam for our project were solved with Tycho.

One of the main advantages of Tycho is that testable bundles are set as dependencies in the manifest of the project with tests. They are resolved using Maven. There is no need to define links to prepared bundles from the file system or in the Maven repository. Moreover, there is no need to separate the testing and build processes. Testing became a part of the main build process and Maven resolved all dependencies to testable bundles on the fly. The test project became more accurate, more logical and simpler.

In regards to project with OSGi bundle tests, one can add any third party library in one's class path and use it within the test. This allowed us to remove special separated bundles which provided necessary libraries for tests which we created when Pax Exam was used.

The main problem for us - using tests from Eclipse IDE - was solved. All tests were JUnit Plug-in tests and run easily. There was no need to do several Maven operations before running a test. Eclipse resolved all dependent projects from workspace instead of using the Maven plugin. Any change in workspace affected tests immediately.

One more advantage I want to mention is that Tycho allows running several tests in one time and it does not start separate Java process for each test; thereby, simplifying test debugging, starting and stopping.

Tycho supports target platforms, similar to Eclipse IDE, which was very necessary for us.

In summation, Tycho simplified and sped up development, debugging, automation, and the process of finding and fixing bugs. The approach itself seems more elegant, clear and appropriate for our aims.

Tutorial. Testing with Tycho
The following tutorial will show you how to create a simple OSGi bundle in Eclipse and create JUnit Plug-in tests. You also learn how to build and test created application with Tycho.

Prerequisites
This tutorial assumes that you have installed Java 1.6, Eclipse 3.6 and Maven3 and have a basic understanding of Java, OSGi and Maven.

OSGi Bundles
We are going to create simple OSGi bundles. See the detailed tutorial related to OSGi http://www.vogella.de/articles/OSGi/article.html .

Create a new plugin projects "com.axmor.osgiexample.providera" and "com.axmor.osgiexample.providerb". Both of these bundles will provide simple service that returns current prices for companies A and B:

Activator.java
package com.axmor.osgiexample.providera;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class Activator implements BundleActivator {

private static BundleContext context;

static BundleContext getContext() {
return context;
}

public void start(BundleContext bundleContext) throws Exception {
PriceAService service = new PriceAServiceImpl();
bundleContext.registerService(PriceAService.class.getName(), service, null);
System.out.println("Stock price provider A is registered");
Activator.context = bundleContext;
}

public void stop(BundleContext bundleContext) throws Exception {
System.out.println("Stopping provider A");
Activator.context = null;
}
}

PriceAService.java
package com.axmor.osgiexample.providera;

public interface PriceAService {
public int getPrice();
}

PriceAServiceImpl.java
package com.axmor.osgiexample.providera;

public class PriceAServiceImpl implements PriceAService {

private static final int REFRESH_RATE = 3 * 1000;
private int price;
private long time = 0;

public int getPrice() {
long currentTime = System.currentTimeMillis();
if (currentTime - time > REFRESH_RATE) {
price = (int) (Math.random() * 100);
time = currentTime;
}
return price;
}
}

"com.axmor.osgiexample.providerb" has the almost the same code.

Open MANIFEST.MF and add the package with the code to Exported Packages for both bundles (see Figure 1).

Create a new plugin project "com.axmor.osgiexample.stockanalyser" which will use services from the described bundles and provide simple information based on received prices. Add previously created bundles to Required Plug-ins in MANIFEST.MF (see Figure 2). Add "com.axmor.osgiexample.stockanalyser" package to Exported Packages.

Activator.java

package com.axmor.osgiexample.stockanalyser;


import org.osgi.framework.BundleActivator;

import org.osgi.framework.BundleContext;

import org.osgi.framework.ServiceReference;


import com.axmor.osgiexample.providera.PriceAService;

import com.axmor.osgiexample.providerb.PriceBService;


public class Activator implements BundleActivator {


private BundleContext context;


public void start(BundleContext bundleContext) throws Exception {

this.context = bundleContext;


ServiceReference reference1 = context.getServiceReference(PriceAService.class.getName());

PriceAService serviceA = (PriceAService) context.getService(reference1);

ServiceReference reference2 = context.getServiceReference(PriceBService.class.getName());

PriceBService serviceB = (PriceBService) context.getService(reference2);


StockAnalyserService analyserService = new StockAnalyserServiceImpl();

analyserService.setServiceA(serviceA);

analyserService.setServiceB(serviceB);

context.registerService(StockAnalyserService.class.getName(), analyserService, null);

System.out.println("Stock Analyser service is registered");

}


public void stop(BundleContext bundleContext) throws Exception {

System.out.println("Stoping Stock Analyser");

this.context = null;

}

}

StockAnalyserServiceImpl.java

package com.axmor.osgiexample.stockanalyser;


import com.axmor.osgiexample.providera.PriceAService;

import com.axmor.osgiexample.providerb.PriceBService;


public class StockAnalyserServiceImpl implements StockAnalyserService {


private PriceAService serviceA;

private PriceBService serviceB;


public double getAverageValue() {

int priceA = serviceA.getPrice();

int priceB = serviceB.getPrice();

return (double) (priceA + priceB) / 2;

}


public int getMinPrice() {

int priceA = serviceA.getPrice();

int priceB = serviceB.getPrice();

return priceA <= priceB ? priceA : priceB;

}


public int getMaxPrice() {

int priceA = serviceA.getPrice();

int priceB = serviceB.getPrice();

return priceA >= priceB ? priceA : priceB;

}


public synchronized void setServiceA(PriceAService service) {

this.serviceA = service;


}


public synchronized void setServiceB(PriceBService service) {

this.serviceB = service;

}

}

 

Enable the "Activate this plug-in when one of its classes is loaded" option in MANIFEST.MF for all created bundles (see Figure 3). Testable application is ready.

Bundle with Tests
Now we are able to create tests for the described application.

Create an OSGi bundle as before. An activator class is not required; therefore, you can remove it or disable the appropriate option in Eclipse wizard.

Add following bundles to Required Plug-ins sections in MANIFEST.MF:

  • com.axmor.osgiexample.providera
  • com.axmor.osgiexample.providerb
  • com.axmor.osgiexample.stockanalyser
  • org.junit

Create test classes:

TestProviderA.java

package com.axmor.osgiexample.tests;


import static org.junit.Assert.assertEquals;

import static org.junit.Assert.assertNotSame;

import static org.junit.Assert.assertTrue;


import org.junit.Before;

import org.junit.Test;

import org.osgi.framework.BundleContext;

import org.osgi.framework.FrameworkUtil;

import org.osgi.framework.ServiceReference;


import com.axmor.osgiexample.providera.PriceAService;


public class TestProviderA {


private BundleContext bundleContext = null;

private PriceAService serviceA = null;


@Before

public void init() {

bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();

ServiceReference ref = bundleContext.getServiceReference(PriceAService.class.getName());

serviceA = (PriceAService) bundleContext.getService(ref);

}


@Test

public void testPriceLimit() {

System.out.println("***************");

int priceA = serviceA.getPrice();

assertTrue("Price must be more than 0", priceA >= 0);

assertTrue("Price must be less than 100", priceA <= 100);

System.out.println("Price for company A: $" + priceA + " OK");

}


@Test

public void testPriceChanging() throws Exception {

System.out.println("***************");

for (int i = 0; i < 3; i++) {

int price1 = serviceA.getPrice();

Thread.sleep(3500);

int price2 = serviceA.getPrice();

int price3 = serviceA.getPrice();

// implementation of the Price A provider allowed price to be

// unchanged,

// but let the test define such situation as incorrect

assertNotSame("Price must change", price1, price2);

assertEquals("Price should be the same", price2, price3);

System.out.println("Price for company A was changed from $" + price1 + " to $"

+ price2 + " OK");

}

}

}

TestProviderB.java is almost the same as TestProviderA.java

TestAnalyser.java

package com.axmor.osgiexample.tests;


import static org.junit.Assert.assertEquals;


import org.junit.Before;

import org.junit.Test;

import org.osgi.framework.BundleContext;

import org.osgi.framework.FrameworkUtil;

import org.osgi.framework.ServiceReference;


import com.axmor.osgiexample.providera.PriceAService;

import com.axmor.osgiexample.providerb.PriceBService;

import com.axmor.osgiexample.stockanalyser.StockAnalyserService;



public class TestAnalyser {


private BundleContext bundleContext = null;

private StockAnalyserService analyzerService = null;

private PriceAService serviceA = null;

private PriceBService serviceB = null;


@Before

public void init() {

bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();

ServiceReference ref = bundleContext.getServiceReference(StockAnalyserService.class

.getName());

analyzerService = (StockAnalyserService) bundleContext.getService(ref);

ref = bundleContext.getServiceReference(PriceAService.class.getName());

serviceA = (PriceAService) bundleContext.getService(ref);

ref = bundleContext.getServiceReference(PriceBService.class.getName());

serviceB = (PriceBService) bundleContext.getService(ref);

}


@Test

public void testCheckAverageValue() throws Exception {

System.out.println("***************");

for (int i = 0; i < 3; i++) {

Thread.sleep(3500);

int priceA = serviceA.getPrice();

int priceB = serviceB.getPrice();

double avg = analyzerService.getAverageValue();

double expectedAvgVal = (double) (priceA + priceB) / 2;

assertEquals(expectedAvgVal, avg, 0);

System.out.println("Price A = " + priceA + " Price B = " + priceB);

System.out.println("Stock average value: " + avg + " OK");

}

}


@Test

public void testCheckMinPrice() throws Exception {

System.out.println("***************");

for (int i = 0; i < 3; i++) {

Thread.sleep(3500);

int priceA = serviceA.getPrice();

int priceB = serviceB.getPrice();

int min = analyzerService.getMinPrice();

int expectedMin = Math.min(priceA, priceB);

assertEquals(expectedMin, min);

System.out.println("Price A = " + priceA + " Price B = " + priceB);

System.out.println("Stock min price: " + min + " OK");

}

}


@Test

public void testCheckMaxPrice() throws Exception {

System.out.println("***************");

for (int i = 0; i < 3; i++) {

Thread.sleep(3500);

int priceA = serviceA.getPrice();

int priceB = serviceB.getPrice();

int max = analyzerService.getMaxPrice();

int expectedMax = Math.max(priceA, priceB);

assertEquals(expectedMax, max);

System.out.println("Price A = " + priceA + " Price B = " + priceB);

System.out.println("Stock max price: " + max + " OK");

}

}

}

Now you can run each test in Eclipse as a JUnit Plug-in test (see Figure 4). You are able to change the run configuration: include or exclude bundles from the workspace and target platform (see Figure 5). By default, the run configuration will use the "Launch with all workspace and enabled target plug-ins" option. To start above tests, you need not change the run configuration option.

Building and Testing with Tycho
In this section we will add a configuration to build and test the created application using Maven.

Create parent Maven POM and POMs for each project:

Parent pom.xml


<?xml version="1.0" encoding="UTF-8"?>

<project>

<modelVersion>4.0.0</modelVersion>

<groupId>com.axmor.osgiexample</groupId>

<artifactId>parent</artifactId>

<version>1.0.0-SNAPSHOT</version>

<packaging>pom</packaging>

<modules>

<module>com.axmor.osgiexample.providera</module>

<module>com.axmor.osgiexample.providerb</module>

<module>com.axmor.osgiexample.stockanalyser</module>

<module>com.axmor.osgiexample.tests</module>

</modules>


<properties>

<tycho-version>0.10.0</tycho-version>

</properties>


<repositories>

<repository>

<id>helios</id>

<layout>p2</layout>

<url>http://download.eclipse.org/releases/helios</url>

</repository>

</repositories>


<build>

<plugins>

<plugin>

<groupId>org.sonatype.tycho</groupId>

<artifactId>tycho-maven-plugin</artifactId>

<version>${tycho-version}</version>

<extensions>true</extensions>

</plugin>

<plugin>

<groupId>org.sonatype.tycho</groupId>

<artifactId>target-platform-configuration</artifactId>

<version>${tycho-version}</version>

<configuration>

<resolver>p2</resolver>

</configuration>

</plugin>

</plugins>

</build>


</project>

Pay attention that the p2 repository was used as a target platform for the Tycho plugin. You can change it to another or your own target platform.

All child POMs will inherit the Tycho plugin configuration from the parent POM.

Testable project's pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project>

<modelVersion>4.0.0</modelVersion>


<parent>

<groupId>com.axmor.osgiexample</groupId>

<artifactId>parent</artifactId>

<version>1.0.0-SNAPSHOT</version>

</parent>


<artifactId>com.axmor.osgiexample.stockanalyser</artifactId>

<packaging>eclipse-plugin</packaging>


</project>


pom.xml for project with tests


<?xml version="1.0" encoding="UTF-8"?>

<project>

<modelVersion>4.0.0</modelVersion>


<parent>

<groupId>com.axmor.osgiexample</groupId>

<artifactId>parent</artifactId>

<version>1.0.0-SNAPSHOT</version>

</parent>


<artifactId>com.axmor.osgiexample.tests</artifactId>

<packaging>eclipse-test-plugin</packaging>


<build>

<plugins>

<plugin>

<groupId>org.sonatype.tycho</groupId>

<artifactId>maven-osgi-test-plugin</artifactId>

</plugin>

</plugins>

</build>


</project>


Start build/test process from root directory:

mvn install

See Figure 6 for results.

Conclusion
Test development for OSGi applications is rather complex, but an inherent part of the development process. Programmers will meet many problems and obstacles before carving out a complete testing solution. We hope our experiences and tips shared in this article will help programmers avoid typical mistakes.

Resources

  1. http://java.dzone.com/articles/dozen-osgi-myths-and
  2. http://java.dzone.com/articles/putting-osgi-test-pax-exam
  3. http://tycho.sonatype.org/how-to-create-a-new-osgi-bundle.html
  4. http://www.vogella.de/articles/OSGi/article.html

More Stories By Marat Meirmanov

Marat Meirmanov is a Senior Software Engineer at Axmor Software, a software development company located in Novosibirsk, Russia. He has over 5 years of experience in software development and holds a bachelor degree in Computer Science. He has been a developer in several successfully completed projects for US customers. During the last year of working in Axmor’s IBM Solutions Group, he has acted as a QA Development Lead in a large-scale enterprise project.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


@ThingsExpo Stories
DevOps Summit 2015 New York, co-located with the 16th International Cloud Expo - to be held June 9-11, 2015, at the Javits Center in New York City, NY - announces that it is now accepting Keynote Proposals. The widespread success of cloud computing is driving the DevOps revolution in enterprise IT. Now as never before, development teams must communicate and collaborate in a dynamic, 24/7/365 environment. There is no time to wait for long development cycles that produce software that is obsolete at launch. DevOps may be disruptive, but it is essential.
Avnet, Inc. has announced that it ranked No. 4 on the InformationWeek Elite 100 – a list of the top business technology innovators in the U.S. Avnet was recognized for the development of an innovative cloud-based training system that serves as the foundation for Avnet Academy – the company’s education and training organization focused on technical training around top IT vendor technologies. The development of this system allowed Avnet to quickly expand its IT-related training capabilities around the world, while creating a new service that Avnet and its IT solution providers can offer to their...
SYS-CON Events announced today that B2Cloud, a provider of enterprise resource planning software, will exhibit at SYS-CON's 16th International Cloud Expo®, which will take place on June 9-11, 2015, at the Javits Center in New York City, NY. B2cloud develops the software you need. They have the ideal tools to help you work with your clients. B2Cloud’s main solutions include AGIS – ERP, CLOHC, AGIS – Invoice, and IZUM
The Internet of Things Maturity Model (IoTMM) is a qualitative method to gauge the growth and increasing impact of IoT capabilities in an IT environment from both a business and technology perspective. In his session at @ThingsExpo, Tony Shan will first scan the IoT landscape and investigate the major challenges and barriers. The key areas of consideration are identified to get started with IoT journey. He will then pinpoint the need of a tool for effective IoT adoption and implementation, which leads to IoTMM in which five maturity levels are defined: Advanced, Dynamic, Optimized, Primitive,...
With major technology companies and startups seriously embracing IoT strategies, now is the perfect time to attend @ThingsExpo in Silicon Valley. Learn what is going on, contribute to the discussions, and ensure that your enterprise is as "IoT-Ready" as it can be! Internet of @ThingsExpo, taking place Nov 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA, is co-located with 17th Cloud Expo and will feature technical sessions from a rock star conference faculty and the leading industry players in the world. The Internet of Things (IoT) is the most profound change in personal an...
Containers and microservices have become topics of intense interest throughout the cloud developer and enterprise IT communities. Accordingly, attendees at the upcoming 16th Cloud Expo at the Javits Center in New York June 9-11 will find fresh new content in a new track called PaaS | Containers & Microservices Containers are not being considered for the first time by the cloud community, but a current era of re-consideration has pushed them to the top of the cloud agenda. With the launch of Docker's initial release in March of 2013, interest was revved up several notches. Then late last...
There is no doubt that Big Data is here and getting bigger every day. Building a Big Data infrastructure today is no easy task. There are an enormous number of choices for database engines and technologies. To make things even more challenging, requirements are getting more sophisticated, and the standard paradigm of supporting historical analytics queries is often just one facet of what is needed. As Big Data growth continues, organizations are demanding real-time access to data, allowing immediate and actionable interpretation of events as they happen. Another aspect concerns how to deliver ...
Enterprise IoT is an exciting and chaotic space with a lot of potential to transform how the enterprise resources are managed. In his session at @ThingsExpo, Hari Srinivasan, Sr Product Manager at Cisco, will describe the challenges in enabling mass adoption of IoT, and share perspectives and insights on architectures/standards/protocols that are necessary to build a healthy ecosystem and lay the foundation to for a wide variety of exciting IoT use cases in the years to come.
The world's leading Cloud event, Cloud Expo has launched Microservices Journal on the SYS-CON.com portal, featuring over 19,000 original articles, news stories, features, and blog entries. DevOps Journal is focused on this critical enterprise IT topic in the world of cloud computing. Microservices Journal offers top articles, news stories, and blog posts from the world's well-known experts and guarantees better exposure for its authors than any other publication. Follow new article posts on Twitter at @MicroservicesE
WebRTC defines no default signaling protocol, causing fragmentation between WebRTC silos. SIP and XMPP provide possibilities, but come with considerable complexity and are not designed for use in a web environment. In his session at @ThingsExpo, Matthew Hodgson, technical co-founder of the Matrix.org, discussed how Matrix is a new non-profit Open Source Project that defines both a new HTTP-based standard for VoIP & IM signaling and provides reference implementations.
So I guess we’ve officially entered a new era of lean and mean. I say this with the announcement of Ubuntu Snappy Core, “designed for lightweight cloud container hosts running Docker and for smart devices,” according to Canonical. “Snappy Ubuntu Core is the smallest Ubuntu available, designed for security and efficiency in devices or on the cloud.” This first version of Snappy Ubuntu Core features secure app containment and Docker 1.6 (1.5 in main release), is available on public clouds, and for ARM and x86 devices on several IoT boards. It’s a Trend! This announcement comes just as...
The security devil is always in the details of the attack: the ones you've endured, the ones you prepare yourself to fend off, and the ones that, you fear, will catch you completely unaware and defenseless. The Internet of Things (IoT) is nothing if not an endless proliferation of details. It's the vision of a world in which continuous Internet connectivity and addressability is embedded into a growing range of human artifacts, into the natural world, and even into our smartphones, appliances, and physical persons. In the IoT vision, every new "thing" - sensor, actuator, data source, data con...
It's time to put the "Thing" back in IoT. Whether it’s drones, robots, self-driving cars, ... There are multiple incredible examples of the power of IoT nowadays that are shadowed by announcements of yet another twist on statistics, databases, .... Sorry, I meant, Big Data(TM), tiered storage(TM), complex systems(TM), smart nations(TM), .... In his session at WebRTC Summit, Dr Alex Gouaillard, CTO and Co-Founder of Temasys, will discuss the concrete, cool, examples of IoT already happening today, and how mixing all those different sources of visual and audio input can make your life happier ...
The Internet of Things is not new. Historically, smart businesses have used its basic concept of leveraging data to drive better decision making and have capitalized on those insights to realize additional revenue opportunities. So, what has changed to make the Internet of Things one of the hottest topics in tech? In his session at @ThingsExpo, Chris Gray, Director, Embedded and Internet of Things, discussed the underlying factors that are driving the economics of intelligent systems. Discover how hardware commoditization, the ubiquitous nature of connectivity, and the emergence of Big Data a...
SYS-CON Events announced today the IoT Bootcamp – Jumpstart Your IoT Strategy, being held June 9–10, 2015, in conjunction with 16th Cloud Expo and Internet of @ThingsExpo at the Javits Center in New York City. This is your chance to jumpstart your IoT strategy. Combined with real-world scenarios and use cases, the IoT Bootcamp is not just based on presentations but includes hands-on demos and walkthroughs. We will introduce you to a variety of Do-It-Yourself IoT platforms including Arduino, Raspberry Pi, BeagleBone, Spark and Intel Edison. You will also get an overview of cloud technologies s...
SYS-CON Media announced today that @WebRTCSummit Blog, the largest WebRTC resource in the world, has been launched. @WebRTCSummit Blog offers top articles, news stories, and blog posts from the world's well-known experts and guarantees better exposure for its authors than any other publication. @WebRTCSummit Blog can be bookmarked ▸ Here @WebRTCSummit conference site can be bookmarked ▸ Here
Scott Jenson leads a project called The Physical Web within the Chrome team at Google. Project members are working to take the scalability and openness of the web and use it to talk to the exponentially exploding range of smart devices. Nearly every company today working on the IoT comes up with the same basic solution: use my server and you'll be fine. But if we really believe there will be trillions of these devices, that just can't scale. We need a system that is open a scalable and by using the URL as a basic building block, we open this up and get the same resilience that the web enjoys.
The WebRTC Summit 2015 New York, to be held June 9-11, 2015, at the Javits Center in New York, NY, announces that its Call for Papers is open. Topics include all aspects of improving IT delivery by eliminating waste through automated business models leveraging cloud technologies. WebRTC Summit is co-located with 16th International Cloud Expo, @ThingsExpo, Big Data Expo, and DevOps Summit.
Chuck Piluso will present a study of cloud adoption trends and the power and flexibility of IBM Power and Pureflex cloud solutions. Speaker Bio: Prior to Data Storage Corporation (DSC), Mr. Piluso founded North American Telecommunication Corporation, a facilities-based Competitive Local Exchange Carrier licensed by the Public Service Commission in 10 states, serving as the company's chairman and president from 1997 to 2000. Between 1990 and 1997, Mr. Piluso served as chairman & founder of International Telecommunications Corporation, a facilities-based international carrier licensed by t...
There are lots of challenges in IoT around secure, scalable and business friendly infrastructure for enterprises. For large corporations, IoT implementations are one of the top priorities of the decade. All industries are seeing a competitive need to sustain by investing in IoT initiatives. The value addition comes from improved customer service, innovative product and additional revenue streams. The data from these IP-connected devices can be leveraged for a variety of business applications as well as responsive action controls. The various architectural building blocks of an IoT ...