Distributed Embedded Systems

Size: px
Start display at page:

Download "Distributed Embedded Systems"

Transcription

1 Distributed Embedded Systems Computer Architecture and Operating Systems 2

2 Content 1. Motivation 2. An Overview of Distributed Software Architecture Approaches 2.1 Pro & Contra Middleware 2.2 Message-Based Architectures 2.3 Service-Based Architectures 2.4 Subscribe-Based Architectures 2.5 Component-Based Architectures 3. Example: MPI 4. Example: Web Services 5. Example: OPC UA 6. Example: DDS 7. Redundancy and Consistency 8. MultiCore Programming and Synchronous Languages

3 Subscribe-Based Architectures Idea Data-centric approach, i.e. all communication is with data objects. Data objects have a type, a value and further describing attributes (update timing, redundancy, etc). No direct communication between software modules. Components can write and read data values. Furthermore, components may be notified about value changes, e.g. by calling a callback function in the component. Subscribed-based architecture Component Component Component read current value set new value notify about new value set new value Temperature1:Double updatetime = "100ms" velocity:double updatetime = "10ms"

4 Subscribe-Based Architectures Idea Data is stored in a repository Application can access the data independent of the data s and the application s location Component Component Component set new value read current value set new value Communication System notify about new value velocity:double updatetime = "10ms" Temperature1:Double updatetime = "100ms" Data Repository

5 Subscribe-Based Architectures QoS Subscribers and publishers can model the required and provided Quality of Service (QoS). Subscribers and publishers can access the same data iff the provided QoS matches the required QoS. Component Component Component Read every 10ms only if alive publish every 100ms latency <50ms velocity:double Temperature1:Double

6 Subscribe-Based Architectures QoS Typical QoS are: 1. Deadline: data is provided or required at least every x time steps 2. Latency: maximum permitted delay between sending and receiving new data 3. Filter: subscriber wants a maximum of one new value every x time steps 4. Lifespan: required/provided data must be valid for at least x time steps 5. History: the history for required/provided data must be available for at least x time steps 6. Reliability: e.g. required/provided data must be produced or transmitted redundantly 7. Ownership: required/provided data is provided by a maximum of n publishers Component Component Component Read every 10ms only if alive publish every 100ms latency <50ms velocity:double Temperature1:Double

7 Subscribe-Based Architectures Subscriber Subscribers can use two different pattern to access data: 1. Callback method: Whenever new data is available, the repository calls the subscriber 2. Wait method: The subscriber waits (i.e. it is blocked) until new data is available. In this case, the subscriber has sleep until a set of predefined conditions are fulfilled. Typical conditions are: new data exists data crosses a threshold data ceases to exist time out...

8 Subscribe-Based Architectures Transactions Often several data elements have to change their value consistently. I.e. a group of several values changes have to be treated atomically. Subscribers receive all data at the same time or not at all

9 Introduction The Data Distribution Service (DDS) is defined by the The Object Management Group (OMG) Standardization of different Publish/Subscribe solution (CosEvent, CosNotification, JMS,...) Standard since 2002 DDS comprises two layer: Lower Layer: Efficient access to data Higher Layer: Easy integration into application, i.e. data

10 Idea General concept from:

11 DCPS Structure DCPS conceptual model from:

12 Example 1: Publisher Create the participant DomainParticipant participant = DomainParticipantFactory.get_instance().create_participant( 0, // Domain ID = 0 DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT, null, // listener StatusKind.STATUS_MASK_NONE); if (participant == null) { System.err.println("Unable to create domain participant"); return; Source: RTI DDS Examples

13 Example 1: Publisher Create the topic, i.e. the published variable // Create the topic "Hello World" for the String type Topic topic = participant.create_topic( "Hello, World", This is the unique identifier for the topic StringTypeSupport.get_type_name(), DomainParticipant.TOPIC_QOS_DEFAULT, Quality of Service null, // listener StatusKind.STATUS_MASK_NONE); if (topic == null) { System.err.println("Unable to create topic."); return; Source: RTI DDS Examples

14 DCPS Structure Publisher-DataWriter relation from:

15 Example 1: Publisher Create the writer, i.e. the method that can be used to write to the variable // Create the data writer using the default publisher StringDataWriter datawriter = (StringDataWriter) participant.create_datawriter( topic, Publisher.DATAWRITER_QOS_DEFAULT, null, // listener StatusKind.STATUS_MASK_NONE); if (datawriter == null) { System.err.println("Unable to create data writer\n"); return; Source: RTI DDS Examples

16 Example 1: Publisher Write a new variable value try { datawriter.write( This is a new variable value, InstanceHandle_t.HANDLE_NIL); catch (RETCODE_ERROR e) { // This exception can be thrown from DDS write operation e.printstacktrace(); Source: RTI DDS Examples

17 DCPS Structure Topic-Key concept from:

18 DCPS Structure Platform Independent Model (PIM) of DCPS from:

19 DCPS Structure Infrastructure Module from:

20 DCPS Structure Domain Module from:

21 DCPS Structure Topic-Definition Module from:

22 DCPS Structure Topic-Definition Module How are types transmitted if different platforms and different programming languages are involved? from:

23 Example 1: Subscriber Create the the subscriber calls and the participant public class HelloSubscriber extends DataReaderAdapter {.. Must extend the DataReaderAdapter since HelloSubscriber is also used as a callback object DomainParticipant participant = DomainParticipantFactory.get_instance().create_participant( 0, // Domain ID = 0 DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT, null, // listener StatusKind.STATUS_MASK_NONE); if (participant == null) { System.err.println("Unable to create domain participant"); return; Source: RTI DDS Examples

24 Example 1: Subscriber Create the topic, i.e. the wanted variable // Create the topic "Hello World" for the String type Topic topic = participant.create_topic( "Hello, World", This is the unique identifier for the topic StringTypeSupport.get_type_name(), DomainParticipant.TOPIC_QOS_DEFAULT, Quality of Service null, // listener StatusKind.STATUS_MASK_NONE); if (topic == null) { System.err.println("Unable to create topic."); return; Source: RTI DDS Examples

25 Example 1: Subscriber Create the reader which reads the variable // Create the data reader using the default publisher StringDataReader datareader = (StringDataReader) participant.create_datareader( topic, Subscriber.DATAREADER_QOS_DEFAULT, new HelloSubscriber(), // Listener StatusKind.DATA_AVAILABLE_STATUS); if (datareader == null) { System.err.println("Unable to create DDS Data Reader"); return; The on_data_availabe method of this object is called as a callback function Source: RTI DDS Examples

26 Example 1: Subscriber This callback function is called when new data arrives public void on_data_available(datareader reader) { StringDataReader stringreader = (StringDataReader) reader; SampleInfo info = new SampleInfo(); for (;;) { try { String sample = stringreader.take_next_sample(info); get new value if (info.valid_data) { System.out.println(sample); catch (RETCODE_NO_DATA nodata) { // No more data to read break; catch (RETCODE_ERROR e) { // An error occurred e.printstacktrace(); Source: RTI DDS Examples

27 Example 1 The publisher program: The subscriber program: Source: RTI DDS Examples

28 Types 3 solutions exists to access data: 1. support for basic types such as int32, double, string, 2. types are accessed via reflection 3. types are generated (from a language-independent description) at compile time via code generation

29 DCPS Structure DDS specifies that for non basic types special classes are generated at compile time. This allows for a type-safe access to data. Since the types are defined in a programming language independent specification language (IDL, Interface Definition Language), DSS supports different programming languages. No files have to be generated for basic types such as int, float, string,... Java IDL C Abstract Type Definition C# from:

30 DCPS Structure The DDS specifies the following classes to be generated for a type foo : from:

31 DCPS Structure Publication Module from:

32 DCPS Structure Publication Module and transactions: A publisher may start a transaction by calling publisher.begin_coherent_changes() A publisher may end a transaction by calling publisher.end_coherent_changes() Within a transaction several changes might occur, these changes are treated atomically, i.e. they become visible to subscribers at the same time (or not at all). Several calls to publisher.begin_coherent_changes() and publisher.end_coherent_changes() might occur nestedly. The transaction end with the last call to publisher.end_coherent_changes(). from:

33 DCPS Structure Subscription Module from:

34 DCPS Structure Supported QoS from:

35 QoS Example // Get the default QoS for the Topic participant.get_default_topic_qos(data_topic_qos); // We need exclusive ownership of this Topic so... data_topic_qos.ownership.kind = OwnershipQosPolicyKind.EXCLUSIVE_OWNERSHIP_QOS; // And create a Topic with Default QoS and default listener. // Note: Ownership is Shared by default. data_topic = participant.create_topic("throughput", ThroughputTypeSupport.get_type_name(), data_topic_qos, null, StatusKind.STATUS_MASK_NONE);

36 DCPS Structure Wait conditions: from:

37 Publishing interaction (part 1): DCPS Structure from:

38 Publishing interaction (part 2): DCPS Structure from:

39 Subscription interaction (via listeners, possibility 1): DCPS Structure from:

40 Subscription interaction (via listeners, possibility 2): DCPS Structure from:

41 Subscription interaction (via wait-conditions, part 1): DCPS Structure from:

42 Subscription interaction (via wait-conditions, part 2): DCPS Structure from:

43 Transactions Publication Module reminder Start transaction End transaction from:

44 Example 2 Publishing complex, user-defined data types Usage of code generation at compile-time Source: RTI DDS Examples

45 Example 2 Publisher Sends n packets to publisher Source: RTI DDS Examples

46 Example 2 Subscriber Computes statistic about received packets Source: RTI DDS Examples

47 Example 2 File Structure manually implemented manually implemented manually implemented generated files

48 Example 2 File HelloWorld.idl /* The following constants will be available in the generated code as macros. * If you use #define in an IDL file, the value will be substituite by a * preprocessor before generating the code (this constant won't be available * in your program). */ const long HELLODDS_MAX_PAYLOAD_SIZE = 8192; const long HELLODDS_MAX_STRING_SIZE = 64; /* This custom structure contains an opaque buffer (blob) of maximum size * 8Kb, an unsigned long and a simple string (max size=64 characters) */ struct HelloWorld { string<hellodds_max_string_size> prefix; long sample_id; sequence<octet, HELLODDS_MAX_PAYLOAD_SIZE> payload; ; Source: RTI DDS Examples

49 Example 2 File Hello.java: Main program, installs new type and starts publishers & subscribers public class Hello { public static void main(string[] argv) { CommandLineArguments args = new CommandLineArguments(); System.out.println("Hello Example Application"); // Finally start the application startapplication(args); System.out.println("Done."); Source: RTI DDS Examples

50 Example 2 File Hello.java: Main program, installs new type and starts publishers & subscribers private static void startapplication(final CommandLineArguments arg) { new participant DomainParticipant participant = DomainParticipantFactory.get_instance().create_participant( arg.domainid, DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT, null, // listener StatusKind.STATUS_MASK_NONE); HelloWorldTypeSupport.register_type(participant, register type HelloWorldTypeSupport.get_type_name()); create topic Topic topic = participant.create_topic( arg.topicname, HelloWorldTypeSupport.get_type_name(), DomainParticipant.TOPIC_QOS_DEFAULT, null, // listener StatusKind.STATUS_MASK_NONE); generated class definition generated class definition Source: RTI DDS Examples

51 Example 2 File Hello.java: Main program, installs new type and starts publishers & subscribers HelloPublisher publisher = new HelloPublisher( participant, topic, arg.verbose, arg.datasize, arg.samplecount); create publisher publisher.writesamples(); write samples HelloSubscriber subscriber = new HelloSubscriber( participant, topic, arg.verbose, arg.samplecount); create subsriber subscriber.waitfortermination(); wait until all samples have been received /* Shutdown, when samplecount is finite */ if(participant!= null) { participant.delete_contained_entities(); DomainParticipantFactory.TheParticipantFactory. delete_participant(participant); clean up DomainParticipantFactory.finalize_instance(); Source: RTI DDS Examples

52 File HelloPublisher.java Example 2 public class HelloPublisher { // Maximum consecutive write error after stopping the write process private static final int MAX_CONSECUTIVE_WRITE_ERROR = 5; private HelloWorldDataWriter _thedatawriter; private int _thedatasize; private int _theverbose; private int _thesamplecount = 0; Reference to generated class // ************************************************************************ /** * Builds a new HelloPublisher object and initialize the inner DDS * entities. * This method only creates the entities, but it does not actually write * the data. * To write the data, use the method run(). * participant the DDS Domain participant topic the DDS topic verbose an integer to control the output verbosity datasize the size of the payload data */ public HelloPublisher(DomainParticipant participant, Topic topic, int verbose, int datasize, int samplecount) { _thedatasize = datasize; _theverbose = verbose; _thesamplecount = samplecount; Source: RTI DDS Examples

53 File HelloPublisher.java Example 2 just like before... Publisher publisher = participant.create_publisher( DomainParticipant.PUBLISHER_QOS_DEFAULT, null, // listener StatusKind.STATUS_MASK_NONE); if (publisher == null) { System.err.println("! Unable to create DDS Publisher"); throw new RuntimeException("HelloPublisher creation failed"); _thedatawriter = (HelloWorldDataWriter) publisher.create_datawriter(topic, Publisher.DATAWRITER_QOS_DEFAULT, null, // listener StatusKind.STATUS_MASK_NONE); reference to generated class Source: RTI DDS Examples

54 File HelloPublisher.java Example 2 void writesamples() { HelloWorld instance = new HelloWorld(); // Initialize the data instance.prefix = "Hello world"; instance.payload.setsize(_thedatasize); byte arr[] = (byte [])instance.payload.getprimitivearray(); for (int i = 0; i < _thedatasize; ++i) { arr[i] = (byte)(i % 0xff); Source: RTI DDS Examples System.out.println("Sending data...\n"); int consecutiveerrors = 0; for (instance.sample_id = 0;; ++(instance.sample_id) ) { try { _thedatawriter.write(instance, InstanceHandle_t.HANDLE_NIL); catch(retcode_error e) { System.err.println("! Write error " + e.getclass().tostring() + ": " + e.getmessage()); if (++consecutiveerrors > MAX_CONSECUTIVE_WRITE_ERROR) { System.out.println("! Reached maximum number of failure, " + "stopping writer..."); return; // Always clear the error count in case of successful write consecutiveerrors = 0; if (_theverbose > 0 && (instance.sample_id % 10000) == 0) { System.out.println("Sent " + Integer.toString(instance.sample_id) + " samples..."); if (_thesamplecount!= 0 && (instance.sample_id >= _thesamplecount)) { System.out.println("\nSent " + Integer.toString(instance.sample_id) + " samples."); return;

55 File HelloSubscriber.java public class HelloSubscriber implements DataReaderListener { public HelloSubscriber(DomainParticipant participant, Topic topic, int verbose, int samplecount) { for the callbacks... Example 2 Subscriber subscriber = participant.create_subscriber( DomainParticipant.SUBSCRIBER_QOS_DEFAULT, null, // listener StatusKind.STATUS_MASK_NONE); generated class definition _reader = (HelloWorldDataReader) subscriber.create_datareader( topic, Subscriber.DATAREADER_QOS_DEFAULT, this, StatusKind.STATUS_MASK_ALL); Source: RTI DDS Examples

56 File HelloSubscriber.java public void waitfortermination() { waits for end of transmission Example 2 for (;;) { try { Thread.sleep(POLL_PERIOD_MILLISEC); // If this is the first sample received, mark the sample ID and // get the time /* Then calculate the statistics */ catch (InterruptedException e) { /*ignore*/ Source: RTI DDS Examples

57 File HelloSubscriber.java Example 2 public void on_data_available(datareader reader) { HelloWorldDataReader HelloWorldReader = (HelloWorldDataReader)reader; if (_thesamplercvdmax!= 0 && (_thesamplercvdcount >= _thesamplercvdmax)) { return; try { HelloWorldReader.take( _dataseq, _infoseq, get data ResourceLimitsQosPolicy.LENGTH_UNLIMITED, SampleStateKind.ANY_SAMPLE_STATE, ViewStateKind.ANY_VIEW_STATE, InstanceStateKind.ANY_INSTANCE_STATE); for (int i = 0; i < _dataseq.size(); ++i) { SampleInfo info = (SampleInfo)_infoSeq.get(i); the callback function generated class if (info.valid_data) { _processdata((helloworld)_dataseq.get(i)); catch (RETCODE_NO_DATA nodata) { // No data to process finally { HelloWorldReader.return_loan(_dataSeq, _infoseq); Source: RTI DDS Examples

58 File HelloSubscriber.java public void on_sample_lost(datareader reader, SampleLostStatus status) { ++_thesamplelost; if (_theverbose > 0) { System.out.println("->Callback: sample lost."); public void on_requested_deadline_missed (DataReader reader, RequestedDeadlineMissedStatus status) { if (_theverbose > 0) { System.out.println("->Callback: requested deadline missed."); public void on_requested_incompatible_qos (DataReader reader, RequestedIncompatibleQosStatus status) { if (_theverbose > 0) { System.out.println("->Callback: requested incompatible QoS."); public void on_sample_rejected (DataReader reader, SampleRejectedStatus status) { if (_theverbose > 0) { System.out.println("->Callback: sample rejected."); public void on_liveliness_changed (DataReader reader, LivelinessChangedStatus status) { if (_theverbose > 0) { System.out.println("->Callback: liveliness changed."); Example 2 the callback function for lost samples the callback function for missed deadlines the callback function incompatible QoS the callback function used if the receiver does not want a sample the callback function called if the data turns dead public void on_subscription_matched (DataReader reader, SubscriptionMatchedStatus status) { if (_theverbose > 0) { System.out.println("->Callback: subscription matched."); Source: RTI DDS Examples

59 File HelloWorld.java (generated) Example 2 public class HelloWorld implements Copyable { public HelloWorld(HelloWorld other) { this(); copy_from(other); public static Object create() { return new HelloWorld(); public boolean equals(object o) { public Object copy_from(object src) { return this; public String tostring(string desc, int indent) {

60 File HelloWorldTypeSupport.java (generated) Example 2 public class HelloWorldTypeSupport extends TypeSupportImpl { private static final String TYPE_NAME = "HelloWorld"; private static final HelloWorldTypeSupport _singleton = new HelloWorldTypeSupport(); public static String get_type_name() { return _singleton.get_type_namei(); public static void register_type(domainparticipant participant, String type_name) { _singleton.register_typei(participant, type_name); public static void unregister_type(domainparticipant participant, String type_name) { _singleton.unregister_typei(participant, type_name); public static HelloWorldTypeSupport get_instance() { return _singleton; public static HelloWorldTypeSupport getinstance() { return get_instance(); public Object create_data() { return new HelloWorld(); public void destroy_data(object data) { return; public Object create_key() { return new HelloWorld(); public void destroy_key(object key) { return; public Object copy_data(object destination, Object source) { HelloWorld typeddst = (HelloWorld) destination; HelloWorld typedsrc = (HelloWorld) source; return typeddst.copy_from(typedsrc);

61 File HelloWorldDataWriter.java (generated) Example 2 public class HelloWorldDataWriter extends DataWriterImpl { public InstanceHandle_t register_instance(helloworld instance_data) { return register_instance_untyped(instance_data);. public void unregister_instance(helloworld instance_data, InstanceHandle_t handle) { unregister_instance_untyped(instance_data, handle); public void write(helloworld instance_data, InstanceHandle_t handle) { write_untyped(instance_data, handle); public void dispose(helloworld instance_data, InstanceHandle_t instance_handle){ dispose_untyped(instance_data, instance_handle); public void get_key_value(helloworld key_holder, InstanceHandle_t handle) { get_key_value_untyped(key_holder, handle); public InstanceHandle_t lookup_instance(helloworld key_holder) { return lookup_instance_untyped(key_holder); /*package*/ HelloWorldDataWriter(long native_writer, DataWriterListener listener, int mask, TypeSupportImpl type) { super(native_writer, listener, mask, type);

62 Example 2 File HelloWorldDataWriter.java (generated) public class HelloWorldDataReader extends DataReaderImpl { public void read(helloworldseq received_data, SampleInfoSeq info_seq, int max_samples, int sample_states, int view_states, int instance_states) { read_untyped(received_data, info_seq, max_samples, sample_states, view_states, instance_states); public void take(helloworldseq received_data, SampleInfoSeq info_seq, int max_samples, int sample_states, int view_states, int instance_states) { take_untyped(received_data, info_seq, max_samples, sample_states, view_states, instance_states); public void read_next_sample(helloworld received_data, SampleInfo sample_info) { read_next_sample_untyped(received_data, sample_info); public void get_key_value(helloworld key_holder, InstanceHandle_t handle){ get_key_value_untyped(key_holder, handle); public InstanceHandle_t lookup_instance(helloworld key_holder) { return lookup_instance_untyped(key_holder); /*package*/ HelloWorldDataReader(long native_reader, DataReaderListener listener, int mask, TypeSupportImpl data_type) { super(native_reader, listener, mask, data_type);

63 Example 3 Publishing complex, user-defined data types Usage reflection to access complex data Source: RTI DDS Examples

64 Example 3 Publisher Sends n packets to publisher Source: RTI DDS Examples

65 Example 3 Subscriber Computes statistic about received packets Source: RTI DDS Examples

66 File HelloWorldType.java: Dynamically generate type Example 3 public final class HelloWorldType { public static String gettypename() { return "HelloWorld";... public static TypeCode create() { TypeCodeFactory factory = TypeCodeFactory.get_instance(); TypeCode stringtc = null; try { stringtc = factory.create_string_tc(hellodds_max_string_size); TypeCode sequencetc = null; sequencetc = factory.create_sequence_tc(hellodds_max_payload_size, factory.get_primitive_tc(tckind.tk_octet)); TypeCode structtc = null; structtc = factory.create_struct_tc("helloworld", new StructMember[0]); structtc.add_member("prefix", // name (short)-1, // initial_id stringtc, // Typecode TypeCode.NONKEY_MEMBER, // member_flags (short)-1, // access false, // is_pointer (short)-1); // bits structtc.add_member("sampleid", (short)-1, factory.get_primitive_tc(tckind.tk_long), TypeCode.NONKEY_MEMBER, (short)-1, false, (short)-1); structtc.add_member("payload", (short)-1, sequencetc, TypeCode.NONKEY_MEMBER, (short)-1, false, (short)-1); return structtc; new struct member new struct member new type new struct member

67 Example 3 File Hello.java: Main program, installs new type and starts publishers & subscribers public class Hello { public static void main(string[] argv) { CommandLineArguments args = new CommandLineArguments(); System.out.println("Hello Example Application"); // Finally start the application startapplication(args); System.out.println("Done."); Source: RTI DDS Examples

68 Example 3 File Hello.java: Main program, installs new type and starts publishers & subscribers private static void startapplication(final CommandLineArguments arg) { new participant DomainParticipant participant = DomainParticipantFactory.get_instance().create_participant( arg.domainid, DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT, null, // listener StatusKind.STATUS_MASK_NONE); // Create TypeCode, DynamicDataTypeSupport for dynamic data type TypeCode type = HelloWorldType.create(); if (type == null) { System.err.println("! Unable to create dynamic type code"); return; dynamically generate class definition // Create the Dynamic data type support object DynamicDataTypeSupport typesupport = new DynamicDataTypeSupport( type, DynamicDataTypeSupport.TYPE_PROPERTY_DEFAULT); // Register type before creating topic typesupport.register_type(participant, HelloWorldType.getTypeName()); register type Source: RTI DDS Examples

69 Example 3 File Hello.java: Main program, installs new type and starts publishers & subscribers create topic Topic topic = participant.create_topic( arg.topicname, HelloWorldTypeSupport.get_type_name(), DomainParticipant.TOPIC_QOS_DEFAULT, null, // listener StatusKind.STATUS_MASK_NONE); Source: RTI DDS Examples

70 Example 3 File Hello.java: Main program, installs new type and starts publishers & subscribers HelloPublisher publisher = new HelloPublisher( participant, topic, arg.verbose, arg.datasize, arg.samplecount); create publisher publisher.writesamples(); write samples HelloSubscriber subscriber = new HelloSubscriber( participant, topic, arg.verbose, arg.samplecount); create subsriber subscriber.waitfortermination(); wait until all samples have been received /* Shutdown, when samplecount is finite */ if(participant!= null) { participant.delete_contained_entities(); DomainParticipantFactory.TheParticipantFactory. delete_participant(participant); clean up DomainParticipantFactory.finalize_instance(); Source: RTI DDS Examples

71 File HelloPublisher.java Example 3 public class HelloPublisher { // Maximum consecutive write error after stopping the write process private static final int MAX_CONSECUTIVE_WRITE_ERROR = 5; private DynamicDataWriter private int private int private DynamicData _thedatawriter; _theverbose; _thesamplecount; _theinstance; Reference to dynamic classes // ************************************************************************ /** * Builds a new HelloPublisher object and initialize the inner DDS * entities. * This method only creates the entities, but it does not actually write * the data. * To write the data, use the method run(). * participant the DDS Domain participant topic the DDS topic verbose an integer to control the output verbosity datasize the size of the payload data */ public HelloPublisher(DomainParticipant participant, Topic topic, TypeCode typecode, int verbose, int datasize, int samplecount) { _theverbose = verbose; _thesamplecount = samplecount; Source: RTI DDS Examples

72 File HelloPublisher.java Example 3 just like before... Publisher publisher = participant.create_publisher( DomainParticipant.PUBLISHER_QOS_DEFAULT, null, // listener StatusKind.STATUS_MASK_NONE); if (publisher == null) { System.err.println("! Unable to create DDS Publisher"); throw new RuntimeException("HelloPublisher creation failed"); _thedatawriter = (DynamicDataWriter) publisher.create_datawriter(topic, Publisher.DATAWRITER_QOS_DEFAULT, null, // listener StatusKind.STATUS_MASK_NONE); reference to dynamic writer Source: RTI DDS Examples

73 File HelloPublisher.java Example 3 _theinstance = new DynamicData(typeCode, DynamicData.PROPERTY_DEFAULT); /* The DynamicDataType has been defined (in HelloWorldType.cxx) to hold * a structure like the following one: * struct HelloWorld { * string<64> prefix; * long sampleid; * sequence<octet, 8192> payload; * ; */ _theinstance.set_string("prefix", DynamicData.MEMBER_ID_UNSPECIFIED, "Hello World!"); _theinstance.set_int("sampleid", DynamicData.MEMBER_ID_UNSPECIFIED, 0); byte [] payload = new byte[datasize]; for (int i = 0; i < datasize; ++i) { payload[i] = (byte)(i % 0xff); ByteSeq byteseq = new ByteSeq(payload); _theinstance.set_byte_seq("payload", DynamicData.MEMBER_ID_UNSPECIFIED, byteseq); write one field of the data write one field of the data write one field of the data write one field of the data Source: RTI DDS Examples

74 File HelloPublisher.java Example 3 void writesamples() { InstanceHandle_t instance_handle = InstanceHandle_t.HANDLE_NIL; try { _thedatawriter.write(_theinstance, instance_handle); send data catch(retcode_error e) { System.err.println("! Write error " + e.getclass().tostring() + ": " + e.getmessage()); if (++consecutiveerrors > MAX_CONSECUTIVE_WRITE_ERROR) { System.out.println("! Reached maximum number of failure, " + "stopping writer..."); return; Source: RTI DDS Examples

75 File HelloSubscriber.java public class HelloSubscriber implements DataReaderListener { public HelloSubscriber(DomainParticipant participant, Topic topic, int verbose, int samplecount) { for the callbacks... Example 3 Subscriber subscriber = participant.create_subscriber( DomainParticipant.SUBSCRIBER_QOS_DEFAULT, null, // listener StatusKind.STATUS_MASK_NONE); _reader = (DynamicDataReader) subscriber.create_datareader( topic, Subscriber.DATAREADER_QOS_DEFAULT, this, StatusKind.STATUS_MASK_ALL); dynamic class definition Source: RTI DDS Examples

76 File HelloSubscriber.java public void waitfortermination() { waits for end of transmission Example 3 for (;;) { try { Thread.sleep(POLL_PERIOD_MILLISEC); // If this is the first sample received, mark the sample ID and // get the time /* Then calculate the statistics */ catch (InterruptedException e) { /*ignore*/ Source: RTI DDS Examples

77 File HelloSubscriber.java Example 3 public void on_data_available(datareader reader) { DynamicDataReader HelloWorldReader = (DynamicDataReader)reader; if (_thesamplercvdmax!= 0 && (_thesamplercvdcount >= _thesamplercvdmax)) { return; try { HelloWorldReader.take( _dataseq, _infoseq, get data the callback function ResourceLimitsQosPolicy.LENGTH_UNLIMITED, SampleStateKind.ANY_SAMPLE_STATE, ViewStateKind.ANY_VIEW_STATE, InstanceStateKind.ANY_INSTANCE_STATE); dynamic reader for (int i = 0; i < _dataseq.size(); ++i) { SampleInfo info = (SampleInfo)_infoSeq.get(i); access one field of the structure if (info.valid_data) { _processdata((dynamicdata)_dataseq.get(i)); catch (RETCODE_NO_DATA nodata) { // No data to process finally { HelloWorldReader.return_loan(_dataSeq, _infoseq); Source: RTI DDS Examples

78 File HelloSubscriber.java public void on_sample_lost(datareader reader, SampleLostStatus status) { ++_thesamplelost; if (_theverbose > 0) { System.out.println("->Callback: sample lost."); public void on_requested_deadline_missed (DataReader reader, RequestedDeadlineMissedStatus status) { if (_theverbose > 0) { System.out.println("->Callback: requested deadline missed."); public void on_requested_incompatible_qos (DataReader reader, RequestedIncompatibleQosStatus status) { if (_theverbose > 0) { System.out.println("->Callback: requested incompatible QoS."); public void on_sample_rejected (DataReader reader, SampleRejectedStatus status) { if (_theverbose > 0) { System.out.println("->Callback: sample rejected."); public void on_liveliness_changed (DataReader reader, LivelinessChangedStatus status) { if (_theverbose > 0) { System.out.println("->Callback: liveliness changed."); Example 3 the callback function for lost samples the callback function for missed deadlines the callback function incompatible QoS the callback function used if the receiver does not want a sample the callback function called if the data turns dead public void on_subscription_matched (DataReader reader, SubscriptionMatchedStatus status) { if (_theverbose > 0) { System.out.println("->Callback: subscription matched."); Source: RTI DDS Examples

RTI Monitoring Library Getting Started Guide

RTI Monitoring Library Getting Started Guide RTI Monitoring Library Getting Started Guide Version 5.1.0 2011-2013 Real-Time Innovations, Inc. All rights reserved. Printed in U.S.A. First printing. December 2013. Trademarks Real-Time Innovations,

More information

First Java Programs. V. Paúl Pauca. CSC 111D Fall, 2015. Department of Computer Science Wake Forest University. Introduction to Computer Science

First Java Programs. V. Paúl Pauca. CSC 111D Fall, 2015. Department of Computer Science Wake Forest University. Introduction to Computer Science First Java Programs V. Paúl Pauca Department of Computer Science Wake Forest University CSC 111D Fall, 2015 Hello World revisited / 8/23/15 The f i r s t o b l i g a t o r y Java program @author Paul Pauca

More information

Repeat Success, Not Mistakes; Use DDS Best Practices to Design Your Complex Distributed Systems

Repeat Success, Not Mistakes; Use DDS Best Practices to Design Your Complex Distributed Systems WHITEPAPER Repeat Success, Not Mistakes; Use DDS Best Practices to Design Your Complex Distributed Systems Abstract RTI Connext DDS (Data Distribution Service) is a powerful tool that lets you efficiently

More information

Resource Utilization of Middleware Components in Embedded Systems

Resource Utilization of Middleware Components in Embedded Systems Resource Utilization of Middleware Components in Embedded Systems 3 Introduction System memory, CPU, and network resources are critical to the operation and performance of any software system. These system

More information

UML Profile for DDS. a tutorial for OMG Specification in Government Workshop (Real-Time & Embedded Systems) July 13, 2009

UML Profile for DDS. a tutorial for OMG Specification in Government Workshop (Real-Time & Embedded Systems) July 13, 2009 UML Profile for DDS a tutorial for OMG Specification in Government Workshop (Real-Time & Embedded Systems) July 13, 2009 Prepared by: Sam Mancarella (Sparx Systems) Presented by: Angelo Corsaro (PrismTech)

More information

Java Cheatsheet. http://introcs.cs.princeton.edu/java/11cheatsheet/ Tim Coppieters Laure Philips Elisa Gonzalez Boix

Java Cheatsheet. http://introcs.cs.princeton.edu/java/11cheatsheet/ Tim Coppieters Laure Philips Elisa Gonzalez Boix Java Cheatsheet http://introcs.cs.princeton.edu/java/11cheatsheet/ Tim Coppieters Laure Philips Elisa Gonzalez Boix Hello World bestand genaamd HelloWorld.java naam klasse main methode public class HelloWorld

More information

DATA SHARING AND ACCESS WITH A CORBA DATA DISTRIBUTION SERVICE IMPLEMENTATION

DATA SHARING AND ACCESS WITH A CORBA DATA DISTRIBUTION SERVICE IMPLEMENTATION DATA SHARING AND ACCESS WITH A CORBA DATA DISTRIBUTION SERVICE IMPLEMENTATION A THESIS SUBMITTED TO THE GRADUATE SCHOOL OF NATURAL AND APPLIED SCIENCES OF THE MIDDLE EAST TECHNICAL UNIVERSITY BY MUSTAFA

More information

Unifying the Global Data Space using DDS and SQL

Unifying the Global Data Space using DDS and SQL Unifying the Global Data Space using and SQL OMG RT Embedded Systems Workshop 13 July 2006 Gerardo Pardo-Castellote, Ph.D. CTO gerardo.pardo@rti.com www.rti.com Fernando Crespo Sanchez fernando.crespo@rti.com

More information

public static void main(string[] args) { System.out.println("hello, world"); } }

public static void main(string[] args) { System.out.println(hello, world); } } Java in 21 minutes hello world basic data types classes & objects program structure constructors garbage collection I/O exceptions Strings Hello world import java.io.*; public class hello { public static

More information

The BSN Hardware and Software Platform: Enabling Easy Development of Body Sensor Network Applications

The BSN Hardware and Software Platform: Enabling Easy Development of Body Sensor Network Applications The BSN Hardware and Software Platform: Enabling Easy Development of Body Sensor Network Applications Joshua Ellul jellul@imperial.ac.uk Overview Brief introduction to Body Sensor Networks BSN Hardware

More information

Using DDS to Enable The Real-Time Enterprise Service Bus (RT-ESB)

Using DDS to Enable The Real-Time Enterprise Service Bus (RT-ESB) Using DDS to Enable The Real-Time Enterprise Service Bus (RT-ESB) Rajive Joshi, Ph. D. Gerardo Pardo-Castellote, Ph.D. Real-Time Innovations, Inc OMG Real-time and Embedded Systems Workshop Arlington,

More information

Distributed Embedded Systems

Distributed Embedded Systems Distributed Embedded Systems Computer Architecture and Operating Systems 2 Literature 1) George Coulouris, Jean Dollimore, Tim Kindberg: Distributed Systems: Concepts and Design. Addison-Wesley Longman,

More information

Introduction to Java

Introduction to Java Introduction to Java The HelloWorld program Primitive data types Assignment and arithmetic operations User input Conditional statements Looping Arrays CSA0011 Matthew Xuereb 2008 1 Java Overview A high

More information

RTI Routing Service. Release Notes

RTI Routing Service. Release Notes RTI Routing Service Release Notes Version 5.0.0 2012 Real-Time Innovations, Inc. All rights reserved. Printed in U.S.A. First printing. August 2012. Trademarks Real-Time Innovations, RTI, and Connext are

More information

A Comparison and Mapping of Data Distribution Service and High-Level Architecture

A Comparison and Mapping of Data Distribution Service and High-Level Architecture WHITEPAPER A Comparison and Mapping of Data Distribution Service and High-Level Architecture Abstract The OMG Data-Distribution Service (DDS) is an emerging specification for publish-subscribe datadistribution

More information

RTI Real-Time Connect. Release Notes

RTI Real-Time Connect. Release Notes RTI Real-Time Connect Release Notes Version 4.5f 2012 Real-Time Innovations, Inc. All rights reserved. Printed in U.S.A. First printing. March 2012. Trademarks Real-Time Innovations, RTI, and Connext are

More information

Java Crash Course Part I

Java Crash Course Part I Java Crash Course Part I School of Business and Economics Institute of Information Systems HU-Berlin WS 2005 Sebastian Kolbe skolbe@wiwi.hu-berlin.de Overview (Short) introduction to the environment Linux

More information

Communicating with a Barco projector over network. Technical note

Communicating with a Barco projector over network. Technical note Communicating with a Barco projector over network Technical note MED20080612/00 12/06/2008 Barco nv Media & Entertainment Division Noordlaan 5, B-8520 Kuurne Phone: +32 56.36.89.70 Fax: +32 56.36.883.86

More information

Getting Started with the Internet Communications Engine

Getting Started with the Internet Communications Engine Getting Started with the Internet Communications Engine David Vriezen April 7, 2014 Contents 1 Introduction 2 2 About Ice 2 2.1 Proxies................................. 2 3 Setting Up ICE 2 4 Slices 2

More information

OMG Data-Distribution Service: Architectural Overview

OMG Data-Distribution Service: Architectural Overview OMG Data-Distribution Service: Architectural Overview Gerardo Pardo-Castellote, Ph.D. Real-Time Innovations, Inc. gerardo@rti.com Abstract The OMG Data-Distribution Service (DDS) is an emerging specification

More information

RTI Data Distribution Service

RTI Data Distribution Service RTI Data Distribution Service The Real-Time Publish-Subscribe Middleware Getting Started Guide Version 4.5c This Guide describes how to download and install RTI Data Distribution Service. It also lays

More information

DDS and SOA Interfaces to ESB

DDS and SOA Interfaces to ESB DDS and SOA Interfaces to ESB NCOIC Plenary, VA Beach 29 Mar 2007 Joe Schlesselman NCOIC OS&P WG Chair joe.schlesselman@rti.com www.rti.com Gerardo Pardo-Castellote CTO & Co-Author DDS Specification gerardo.pardo@rti.com

More information

A Fully Standards-Based Approach to Logging High-Throughput Distributed Real-Time Data. Leveraging the DDS and SQL Standards

A Fully Standards-Based Approach to Logging High-Throughput Distributed Real-Time Data. Leveraging the DDS and SQL Standards A Fully Standards-Based Approach to Logging High-Throughput Distributed Real-Time Data Leveraging the and SQL Standards Mark A. Hamilton And Edwin de Jong Real-Time Innovations 3975 Freedom Circle Santa

More information

Tutorial: Getting Started

Tutorial: Getting Started 9 Tutorial: Getting Started INFRASTRUCTURE A MAKEFILE PLAIN HELLO WORLD APERIODIC HELLO WORLD PERIODIC HELLO WORLD WATCH THOSE REAL-TIME PRIORITIES THEY ARE SERIOUS SUMMARY Getting started with a new platform

More information

A Comparison and Mapping of. Data Distribution Service and High-Level Architecture

A Comparison and Mapping of. Data Distribution Service and High-Level Architecture A Comparison and Mapping of Data Distribution Service and High-Level Architecture Rajive Joshi, Ph.D. Gerardo-Pardo Castellote, Ph.D. Real-Time Innovations, Inc. 3975 Freedom Circle, Santa Clara, CA 95054

More information

RTI Database Integration Service. Release Notes

RTI Database Integration Service. Release Notes RTI Database Integration Service Release Notes Version 5.2.0 2015 Real-Time Innovations, Inc. All rights reserved. Printed in U.S.A. First printing. June 2015. Trademarks Real-Time Innovations, RTI, NDDS,

More information

What can DDS do for You? Learn how dynamic publish-subscribe messaging can improve the flexibility and scalability of your applications.

What can DDS do for You? Learn how dynamic publish-subscribe messaging can improve the flexibility and scalability of your applications. What can DDS do for You? Learn how dynamic publish-subscribe messaging can improve the flexibility and scalability of your applications. 2 Contents: Abstract 3 What does DDS do 3 The Strengths of DDS 4

More information

ECE 122. Engineering Problem Solving with Java

ECE 122. Engineering Problem Solving with Java ECE 122 Engineering Problem Solving with Java Introduction to Electrical and Computer Engineering II Lecture 1 Course Overview Welcome! What is this class about? Java programming somewhat software somewhat

More information

Scanner. It takes input and splits it into a sequence of tokens. A token is a group of characters which form some unit.

Scanner. It takes input and splits it into a sequence of tokens. A token is a group of characters which form some unit. Scanner The Scanner class is intended to be used for input. It takes input and splits it into a sequence of tokens. A token is a group of characters which form some unit. For example, suppose the input

More information

Coding Standard for Java

Coding Standard for Java Coding Standard for Java 1. Content 1. Content 1 2. Introduction 1 3. Naming convention for Files/Packages 1 4. Naming convention for Classes, Interfaces, Members and Variables 2 5. File Layout (.java)

More information

CS 106 Introduction to Computer Science I

CS 106 Introduction to Computer Science I CS 106 Introduction to Computer Science I 01 / 21 / 2014 Instructor: Michael Eckmann Today s Topics Introduction Homework assignment Review the syllabus Review the policies on academic dishonesty and improper

More information

Pemrograman Dasar. Basic Elements Of Java

Pemrograman Dasar. Basic Elements Of Java Pemrograman Dasar Basic Elements Of Java Compiling and Running a Java Application 2 Portable Java Application 3 Java Platform Platform: hardware or software environment in which a program runs. Oracle

More information

OMG Data-Distribution Service (DDS): Architectural Overview

OMG Data-Distribution Service (DDS): Architectural Overview OMG -Distribution Service (DDS): Architectural Overview Gerardo Pardo-Castellote Real-Time Innovations, Inc. (RTI) Phone: 1-408-734-4200, x106 Email: pardo@rti.com Topic Areas Software Architectures, Reusability,

More information

Intel EP80579 Software for Security Applications on Intel QuickAssist Technology Cryptographic API Reference

Intel EP80579 Software for Security Applications on Intel QuickAssist Technology Cryptographic API Reference Intel EP80579 Software for Security Applications on Intel QuickAssist Technology Cryptographic API Reference Automatically generated from sources, May 19, 2009. Reference Number: 320184, Revision -003

More information

Manual. Programmer's Guide for Java API

Manual. Programmer's Guide for Java API 2013-02-01 1 (15) Programmer's Guide for Java API Description This document describes how to develop Content Gateway services with Java API. TS1209243890 1.0 Company information TeliaSonera Finland Oyj

More information

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive

More information

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Handout 1 CS603 Object-Oriented Programming Fall 15 Page 1 of 11 Handout 1 Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Java

More information

Java from a C perspective. Plan

Java from a C perspective. Plan Java from a C perspective Cristian Bogdan 2D2052/ingint04 Plan Objectives and Book Packages and Classes Types and memory allocation Syntax and C-like Statements Object Orientation (minimal intro) Exceptions,

More information

RTI Analyzer. Getting Started Guide

RTI Analyzer. Getting Started Guide RTI Analyzer Getting Started Guide Version 5.1.0 2006-2013 Real-Time Innovations, Inc. All rights reserved. Printed in U.S.A. First printing. December 2013. Trademarks Real-Time Innovations, RTI, and Connext

More information

The Data Distribution Service [Universal Standard for Real-Time Data Sharing]

The Data Distribution Service [Universal Standard for Real-Time Data Sharing] The Data Distribution Service [Universal Standard for Real-Time Data Sharing] Angelo CORSARO, Ph.D. Chief Technology Officer OMG DDS Sig Co-Chair PrismTech angelo.corsaro@prismtech.com Speaker Short Bio

More information

OPC UA OPC Unified Architecture

OPC UA OPC Unified Architecture OPC Unified Architecture Content 1. Motivation 2. An Overview of Distributed Software Architecture Approaches 2.1 Pro & Contra Middleware 2.2 Message-Based Architectures 2.3 Service-Based Architectures

More information

Building a Multi-Threaded Web Server

Building a Multi-Threaded Web Server Building a Multi-Threaded Web Server In this lab we will develop a Web server in two steps. In the end, you will have built a multi-threaded Web server that is capable of processing multiple simultaneous

More information

Network Communication

Network Communication Network Communication Outline Sockets Datagrams TCP/IP Client-Server model OSI Model Sockets Endpoint for bidirectional communication between two machines. To connect with each other, each of the client

More information

Topics. Parts of a Java Program. Topics (2) CS 146. Introduction To Computers And Java Chapter Objectives To understand:

Topics. Parts of a Java Program. Topics (2) CS 146. Introduction To Computers And Java Chapter Objectives To understand: Introduction to Programming and Algorithms Module 2 CS 146 Sam Houston State University Dr. Tim McGuire Introduction To Computers And Java Chapter Objectives To understand: the meaning and placement of

More information

Chapter 1 Java Program Design and Development

Chapter 1 Java Program Design and Development presentation slides for JAVA, JAVA, JAVA Object-Oriented Problem Solving Third Edition Ralph Morelli Ralph Walde Trinity College Hartford, CT published by Prentice Hall Java, Java, Java Object Oriented

More information

Java Interview Questions and Answers

Java Interview Questions and Answers 1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java

More information

3.5. cmsg Developer s Guide. Data Acquisition Group JEFFERSON LAB. Version

3.5. cmsg Developer s Guide. Data Acquisition Group JEFFERSON LAB. Version Version 3.5 JEFFERSON LAB Data Acquisition Group cmsg Developer s Guide J E F F E R S O N L A B D A T A A C Q U I S I T I O N G R O U P cmsg Developer s Guide Elliott Wolin wolin@jlab.org Carl Timmer timmer@jlab.org

More information

WRITING DATA TO A BINARY FILE

WRITING DATA TO A BINARY FILE WRITING DATA TO A BINARY FILE TEXT FILES VS. BINARY FILES Up to now, we have looked at how to write and read characters to and from a text file. Text files are files that contain sequences of characters.

More information

Real-time Sensor Data Analysis Processing of a Soccer Game Using OMG DDS Publish/Subscribe Middleware

Real-time Sensor Data Analysis Processing of a Soccer Game Using OMG DDS Publish/Subscribe Middleware Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, 37212 Real-time Sensor Data Analysis Processing of a Soccer Game Using OMG DDS Publish/Subscribe Middleware Kyoungho

More information

Introduction to Object-Oriented Programming

Introduction to Object-Oriented Programming Introduction to Object-Oriented Programming Programs and Methods Christopher Simpkins chris.simpkins@gatech.edu CS 1331 (Georgia Tech) Programs and Methods 1 / 8 The Anatomy of a Java Program It is customary

More information

Java Memory Model: Content

Java Memory Model: Content Java Memory Model: Content Memory Models Double Checked Locking Problem Java Memory Model: Happens Before Relation Volatile: in depth 16 March 2012 1 Java Memory Model JMM specifies guarantees given by

More information

Creating a Simple, Multithreaded Chat System with Java

Creating a Simple, Multithreaded Chat System with Java Creating a Simple, Multithreaded Chat System with Java Introduction by George Crawford III In this edition of Objective Viewpoint, you will learn how to develop a simple chat system. The program will demonstrate

More information

Sophos Mobile Control Web service guide

Sophos Mobile Control Web service guide Sophos Mobile Control Web service guide Product version: 3.5 Document date: July 2013 Contents 1 About Sophos Mobile Control... 3 2 Prerequisites... 4 3 Server-side implementation... 5 4 Client-side implementation...

More information

Basic Java Constructs and Data Types Nuts and Bolts. Looking into Specific Differences and Enhancements in Java compared to C

Basic Java Constructs and Data Types Nuts and Bolts. Looking into Specific Differences and Enhancements in Java compared to C Basic Java Constructs and Data Types Nuts and Bolts Looking into Specific Differences and Enhancements in Java compared to C 1 Contents Hello World Program Statements Explained Java Program Structure in

More information

A Data Centric Approach for Modular Assurance. Workshop on Real-time, Embedded and Enterprise-Scale Time-Critical Systems 23 March 2011

A Data Centric Approach for Modular Assurance. Workshop on Real-time, Embedded and Enterprise-Scale Time-Critical Systems 23 March 2011 A Data Centric Approach for Modular Assurance The Real-Time Middleware Experts Workshop on Real-time, Embedded and Enterprise-Scale Time-Critical Systems 23 March 2011 Gabriela F. Ciocarlie Heidi Schubert

More information

J a v a Quiz (Unit 3, Test 0 Practice)

J a v a Quiz (Unit 3, Test 0 Practice) Computer Science S-111a: Intensive Introduction to Computer Science Using Java Handout #11 Your Name Teaching Fellow J a v a Quiz (Unit 3, Test 0 Practice) Multiple-choice questions are worth 2 points

More information

Crash Course in Java

Crash Course in Java Crash Course in Java Based on notes from D. Hollinger Based in part on notes from J.J. Johns also: Java in a Nutshell Java Network Programming and Distributed Computing Netprog 2002 Java Intro 1 What is

More information

Introduction to Programming

Introduction to Programming Introduction to Programming Lecturer: Steve Maybank Department of Computer Science and Information Systems sjmaybank@dcs.bbk.ac.uk Spring 2015 Week 2b: Review of Week 1, Variables 16 January 2015 Birkbeck

More information

Programming Languages CIS 443

Programming Languages CIS 443 Course Objectives Programming Languages CIS 443 0.1 Lexical analysis Syntax Semantics Functional programming Variable lifetime and scoping Parameter passing Object-oriented programming Continuations Exception

More information

Java Programming Fundamentals

Java Programming Fundamentals Lecture 1 Part I Java Programming Fundamentals Topics in Quantitative Finance: Numerical Solutions of Partial Differential Equations Instructor: Iraj Kani Introduction to Java We start by making a few

More information

CORBA Programming with TAOX11. The C++11 CORBA Implementation

CORBA Programming with TAOX11. The C++11 CORBA Implementation CORBA Programming with TAOX11 The C++11 CORBA Implementation TAOX11: the CORBA Implementation by Remedy IT TAOX11 simplifies development of CORBA based applications IDL to C++11 language mapping is easy

More information

Introduction Object-Oriented Network Programming CORBA addresses two challenges of developing distributed systems: 1. Making distributed application development no more dicult than developing centralized

More information

www.virtualians.pk CS506 Web Design and Development Solved Online Quiz No. 01 www.virtualians.pk

www.virtualians.pk CS506 Web Design and Development Solved Online Quiz No. 01 www.virtualians.pk CS506 Web Design and Development Solved Online Quiz No. 01 Which of the following is a general purpose container? JFrame Dialog JPanel JApplet Which of the following package needs to be import while handling

More information

JAVA - QUICK GUIDE. Java SE is freely available from the link Download Java. So you download a version based on your operating system.

JAVA - QUICK GUIDE. Java SE is freely available from the link Download Java. So you download a version based on your operating system. http://www.tutorialspoint.com/java/java_quick_guide.htm JAVA - QUICK GUIDE Copyright tutorialspoint.com What is Java? Java is: Object Oriented Platform independent: Simple Secure Architectural- neutral

More information

Operating System Manual. Realtime Communication System for netx. Kernel API Function Reference. www.hilscher.com.

Operating System Manual. Realtime Communication System for netx. Kernel API Function Reference. www.hilscher.com. Operating System Manual Realtime Communication System for netx Kernel API Function Reference Language: English www.hilscher.com rcx - Kernel API Function Reference 2 Copyright Information Copyright 2005-2007

More information

A NOVEL RESOURCE EFFICIENT DMMS APPROACH

A NOVEL RESOURCE EFFICIENT DMMS APPROACH A NOVEL RESOURCE EFFICIENT DMMS APPROACH FOR NETWORK MONITORING AND CONTROLLING FUNCTIONS Golam R. Khan 1, Sharmistha Khan 2, Dhadesugoor R. Vaman 3, and Suxia Cui 4 Department of Electrical and Computer

More information

Addressing the Challenge of Distributed Interactive Simulation With Data Distribution Service

Addressing the Challenge of Distributed Interactive Simulation With Data Distribution Service Addressing the Challenge of Distributed Interactive Simulation With Data Distribution Service Akram HAKIRI 1, 2, Pascal BERTHOU 1, 2, Thierry GAYRAUD 1,2 1 CNRS ; LAAS, 7, avenue du Colonel Roche, 31077

More information

Binary storage of graphs and related data

Binary storage of graphs and related data EÖTVÖS LORÁND UNIVERSITY Faculty of Informatics Department of Algorithms and their Applications Binary storage of graphs and related data BSc thesis Author: Frantisek Csajka full-time student Informatics

More information

Exam 1 Review Questions

Exam 1 Review Questions CSE 473 Introduction to Computer Networks Exam 1 Review Questions Jon Turner 10/2013 1. A user in St. Louis, connected to the internet via a 20 Mb/s (b=bits) connection retrieves a 250 KB (B=bytes) web

More information

UG102 EMBER APPLICATION FRAMEWORK DEVELOPER GUIDE

UG102 EMBER APPLICATION FRAMEWORK DEVELOPER GUIDE EMBER APPLICATION FRAMEWORK DEVELOPER GUIDE The Ember application framework is a body of embedded C code that can be configured by Ember AppBuilder to implement any ZigBee Cluster Library (ZCL) application.

More information

matsimj An Overview of the new MATSim Implementation in Java Marcel Rieser VSP, TU Berlin 2.10.2006 rieser@vsp.tu-berlin.de

matsimj An Overview of the new MATSim Implementation in Java Marcel Rieser VSP, TU Berlin 2.10.2006 rieser@vsp.tu-berlin.de matsimj An Overview of the new MATSim Implementation in Java Marcel Rieser VSP, TU Berlin rieser@vsp.tu-berlin.de 2.10.2006 MATSim Seminar 2006 Villa Garbald 1. 6.10.2006 What we will talk about 2 Overview

More information

An Overview of Java. overview-1

An Overview of Java. overview-1 An Overview of Java overview-1 Contents What is Java Major Java features Java virtual machine Java programming language Java class libraries (API) GUI Support in Java Networking and Threads in Java overview-2

More information

1.00 Lecture 1. Course information Course staff (TA, instructor names on syllabus/faq): 2 instructors, 4 TAs, 2 Lab TAs, graders

1.00 Lecture 1. Course information Course staff (TA, instructor names on syllabus/faq): 2 instructors, 4 TAs, 2 Lab TAs, graders 1.00 Lecture 1 Course Overview Introduction to Java Reading for next time: Big Java: 1.1-1.7 Course information Course staff (TA, instructor names on syllabus/faq): 2 instructors, 4 TAs, 2 Lab TAs, graders

More information

CS 111 Classes I 1. Software Organization View to this point:

CS 111 Classes I 1. Software Organization View to this point: CS 111 Classes I 1 Software Organization View to this point: Data Objects and primitive types Primitive types operators (+, /,,*, %). int, float, double, char, boolean Memory location holds the data Objects

More information

Realizing Enterprise Integration Patterns in WebSphere

Realizing Enterprise Integration Patterns in WebSphere Universität Stuttgart Fakultät Informatik, Elektrotechnik und Informationstechnik Realizing Enterprise Integration Patterns in WebSphere Thorsten Scheibler, Frank Leymann Report 2005/09 October 20, 2005

More information

CS 378 Big Data Programming. Lecture 9 Complex Writable Types

CS 378 Big Data Programming. Lecture 9 Complex Writable Types CS 378 Big Data Programming Lecture 9 Complex Writable Types Review Assignment 4 - CustomWritable QuesIons/issues? Hadoop Provided Writables We ve used several Hadoop Writable classes Text LongWritable

More information

! "# $%&'( ) * ).) "%&' 1* ( %&' ! "%&'2 (! ""$ 1! ""3($

! # $%&'( ) * ).) %&' 1* ( %&' ! %&'2 (! $ 1! 3($ ! "# $%&'( ) * +,'-( ).) /"0'" 1 %&' 1* ( %&' "%&'! "%&'2 (! ""$ 1! ""3($ 2 ', '%&' 2 , 3, 4( 4 %&'( 2(! ""$ -5%&'* -2%&'(* ) * %&' 2! ""$ -*! " 4 , - %&' 3( #5! " 5, '56! "* * 4(%&'(! ""$ 3(#! " 42/7'89.:&!

More information

Channel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG

Channel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG Channel Access Client Programming Andrew Johnson Computer Scientist, AES-SSG Channel Access The main programming interface for writing Channel Access clients is the library that comes with EPICS base Written

More information

Services. Relational. Databases & JDBC. Today. Relational. Databases SQL JDBC. Next Time. Services. Relational. Databases & JDBC. Today.

Services. Relational. Databases & JDBC. Today. Relational. Databases SQL JDBC. Next Time. Services. Relational. Databases & JDBC. Today. & & 1 & 2 Lecture #7 2008 3 Terminology Structure & & Database server software referred to as Database Management Systems (DBMS) Database schemas describe database structure Data ordered in tables, rows

More information

How To Write A Program In Java (Programming) On A Microsoft Macbook Or Ipad (For Pc) Or Ipa (For Mac) (For Microsoft) (Programmer) (Or Mac) Or Macbook (For

How To Write A Program In Java (Programming) On A Microsoft Macbook Or Ipad (For Pc) Or Ipa (For Mac) (For Microsoft) (Programmer) (Or Mac) Or Macbook (For Projet Java Responsables: Ocan Sankur, Guillaume Scerri (LSV, ENS Cachan) Objectives - Apprendre à programmer en Java - Travailler à plusieurs sur un gros projet qui a plusieurs aspects: graphisme, interface

More information

Universal Event Monitor for SOA 5.2.0 Reference Guide

Universal Event Monitor for SOA 5.2.0 Reference Guide Universal Event Monitor for SOA 5.2.0 Reference Guide 2015 by Stonebranch, Inc. All Rights Reserved. 1. Universal Event Monitor for SOA 5.2.0 Reference Guide.............................................................

More information

java Features Version April 19, 2013 by Thorsten Kracht

java Features Version April 19, 2013 by Thorsten Kracht java Features Version April 19, 2013 by Thorsten Kracht Contents 1 Introduction 2 1.1 Hello World................................................ 2 2 Variables, Types 3 3 Input/Output 4 3.1 Standard I/O................................................

More information

I. INTRODUCTION. International Journal of Computer Science Trends and Technology (IJCST) Volume 3 Issue 2, Mar-Apr 2015

I. INTRODUCTION. International Journal of Computer Science Trends and Technology (IJCST) Volume 3 Issue 2, Mar-Apr 2015 RESEARCH ARTICLE An Exception Monitoring Using Java Jyoti Kumari, Sanjula Singh, Ankur Saxena Amity University Sector 125 Noida Uttar Pradesh India OPEN ACCESS ABSTRACT Many programmers do not check for

More information

RTI Data Distribution Service

RTI Data Distribution Service RTI Data Distribution Service The Real-Time Publish-Subscribe Middleware Release Notes Version 4.4d 2009 Real-Time Innovations, Inc. All rights reserved. Printed in U.S.A. First printing. May 2009. Trademarks

More information

Persistent, Reliable JMS Messaging Integrated Into Voyager s Distributed Application Platform

Persistent, Reliable JMS Messaging Integrated Into Voyager s Distributed Application Platform Persistent, Reliable JMS Messaging Integrated Into Voyager s Distributed Application Platform By Ron Hough Abstract Voyager Messaging is an implementation of the Sun JMS 1.0.2b specification, based on

More information

Using Files as Input/Output in Java 5.0 Applications

Using Files as Input/Output in Java 5.0 Applications Using Files as Input/Output in Java 5.0 Applications The goal of this module is to present enough information about files to allow you to write applications in Java that fetch their input from a file instead

More information

Chapter 2 Introduction to Java programming

Chapter 2 Introduction to Java programming Chapter 2 Introduction to Java programming 1 Keywords boolean if interface class true char else package volatile false byte final switch while throws float private case return native void protected break

More information

The Java Virtual Machine and Mobile Devices. John Buford, Ph.D. buford@alum.mit.edu Oct 2003 Presented to Gordon College CS 311

The Java Virtual Machine and Mobile Devices. John Buford, Ph.D. buford@alum.mit.edu Oct 2003 Presented to Gordon College CS 311 The Java Virtual Machine and Mobile Devices John Buford, Ph.D. buford@alum.mit.edu Oct 2003 Presented to Gordon College CS 311 Objectives Review virtual machine concept Introduce stack machine architecture

More information

Some Aspects of the Quality of Service Support Used in Multi Agent Systems on Middleware- Based Distributed Messaging

Some Aspects of the Quality of Service Support Used in Multi Agent Systems on Middleware- Based Distributed Messaging Some Aspects of the Quality of Service Support Used in Multi Agent Systems on Middleware- Based Distributed Messaging Jose-Luis Poza-Luján, Raúl Simarro-Fernández, Juan-Luis Posadas-Yagüe and José-Enrique

More information

FAQs. This material is built based on. Lambda Architecture. Scaling with a queue. 8/27/2015 Sangmi Pallickara

FAQs. This material is built based on. Lambda Architecture. Scaling with a queue. 8/27/2015 Sangmi Pallickara CS535 Big Data - Fall 2015 W1.B.1 CS535 Big Data - Fall 2015 W1.B.2 CS535 BIG DATA FAQs Wait list Term project topics PART 0. INTRODUCTION 2. A PARADIGM FOR BIG DATA Sangmi Lee Pallickara Computer Science,

More information

Infrastructure that supports (distributed) componentbased application development

Infrastructure that supports (distributed) componentbased application development Middleware Technologies 1 What is Middleware? Infrastructure that supports (distributed) componentbased application development a.k.a. distributed component platforms mechanisms to enable component communication

More information

CSE 308. Coding Conventions. Reference

CSE 308. Coding Conventions. Reference CSE 308 Coding Conventions Reference Java Coding Conventions googlestyleguide.googlecode.com/svn/trunk/javaguide.html Java Naming Conventions www.ibm.com/developerworks/library/ws-tipnamingconv.html 2

More information

CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013

CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013 Oct 4, 2013, p 1 Name: CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013 1. (max 18) 4. (max 16) 2. (max 12) 5. (max 12) 3. (max 24) 6. (max 18) Total: (max 100)

More information

1) Which of the following is a constant, according to Java naming conventions? a. PI b. Test c. x d. radius

1) Which of the following is a constant, according to Java naming conventions? a. PI b. Test c. x d. radius Programming Concepts Practice Test 1 1) Which of the following is a constant, according to Java naming conventions? a. PI b. Test c. x d. radius 2) Consider the following statement: System.out.println("1

More information

RPDO 1 TPDO 1 TPDO 5 TPDO 6 TPDO 7 TPDO 8

RPDO 1 TPDO 1 TPDO 5 TPDO 6 TPDO 7 TPDO 8 EN ZC - 6DI8DO CANopen I/O Module 6 Digital Input 8 Digital Output Or 8 Counters (3 bit) 8 Digital input 8 Digital output User Manual Contents: Features PDOs PDO Type Emergency Message Functional Diagrams

More information

How to Install Java onto your system

How to Install Java onto your system How to Install Java onto your system 1. In your browser enter the URL: Java SE 2. Choose: Java SE Downloads Java Platform (JDK) 7 jdk-7- windows-i586.exe. 3. Accept the License Agreement and choose the

More information

Middleware Lou Somers

Middleware Lou Somers Middleware Lou Somers April 18, 2002 1 Contents Overview Definition, goals, requirements Four categories of middleware Transactional, message oriented, procedural, object Middleware examples XML-RPC, SOAP,

More information

sveltest: A testing language

sveltest: A testing language Look familiar? sveltest: A testing language Kaitlin Huben (Project Manager) Emily Hsia (Language Guru) Josh Lieberman (System Architect) Chris So (System Integrator) Mandy Swinton (Verifier and Validator)

More information

What is ODBC? Database Connectivity ODBC, JDBC and SQLJ. ODBC Architecture. More on ODBC. JDBC vs ODBC. What is JDBC?

What is ODBC? Database Connectivity ODBC, JDBC and SQLJ. ODBC Architecture. More on ODBC. JDBC vs ODBC. What is JDBC? What is ODBC? Database Connectivity ODBC, JDBC and SQLJ CS2312 ODBC is (Open Database Connectivity): A standard or open application programming interface (API) for accessing a database. SQL Access Group,

More information

Jorix kernel: real-time scheduling

Jorix kernel: real-time scheduling Jorix kernel: real-time scheduling Joris Huizer Kwie Min Wong May 16, 2007 1 Introduction As a specialized part of the kernel, we implemented two real-time scheduling algorithms: RM (rate monotonic) and

More information