Java IoT Authors: Elizabeth White, Yeshim Deniz, Tim Hinds, Douglas Lyon, Stackify Blog

Related Topics: Java IoT

Java IoT: Article

What's Coming in CORBA 3?

What's Coming in CORBA 3?

The next release of the CORBA specification will be a major one, CORBA 3.0. The last time the major release number was incremented - to CORBA 2.0 - it signified the standardization of interoperability. What's new and different enough in this version for OMG to increment the major release number this time?

Despite its compact designation, CORBA 3 isn't a single specification - instead, it's the collection of specifications, adopted individually, that will be added to the current CORBA 2.3 to form the CORBA 3.0 release. Although we use "CORBA 3" as shorthand to refer only to the new parts, the official designation CORBA 3.0 refers, formally, to the entire CORBA specification book. With the posting of final submissions for the CORBA Component Model (CCM), Scripting and the Persistent State Service (PSS) on the OMG Web site in early August, all parts of CORBA 3 are finally available. Votes on these last few parts will be underway when you read this, and are expected to be completed by the end of 1999; check OMG's Web site for the latest word.

There are about 10 new specifications in CORBA 3, and I'll touch on all of them here. Java programmers will be particularly interested in the reverse Java-to-IDL mapping and the CCM's embracing of Enterprise JavaBeans (EJBs), so I'll put some extra detail into these sections.

I'll give you the URL for every specification we discuss here. Documents under consideration for all of OMG's works in progress are available to members and nonmembers alike at

www.omg.org/schedule. Find the process or future specification you're interested in and click on it. This will bring up a new page with URLs for all related documents. For specifications, go to www.omg.org and look down the left-hand side of the page for "The OMA"; all specifications are available under that heading. You can download any of these OMG documents, specifications, or works in progress without charge.

Introduction to CORBA 3
The specifications included in the designation CORBA 3 divide neatly into three major categories that we'll cover in the following order:

  • Java and Internet integration
  • Quality of service control
  • CORBA component architecture
Java and Internet Integration
The three specifications discussed below enhance CORBA integration with Java and the Internet.

Java-to-IDL Mapping
CORBA 3 adds a Java-to-IDL mapping to the "normal" IDL-to-Java mapping you're familiar with if you've done any Java/CORBA programming. To use it, you start out by writing RMI objects in what the specification refers to as the "RMI/IDL subset of Java." It's a pretty full subset; restrictions affect things such as multipath inheritance of overloaded methods, name case collisions, and private types in interfaces. (Java allows private types in distributed interfaces. CORBA can't seem to figure out why anyone would want to keep a distributed variable private.) Objects must extend java.rmi.Remote, and exceptions must inherit from java.lang.Exception. Obviously, CORBA objects passable by value play a large role in the CORBA-side implementation of this specification.

Once you've written the objects, two things happen: first, by compiling through rmic with the proper options set, your objects generate CORBA stubs and use IIOP instead of RMI protocol. Second, the RMI compiler will output the IDL for your object into a file that you can then compile in any programming language, on any ORB, allowing you (or your friends) to write CORBA clients in any language, on any IIOP-speaking ORB, that can invoke your Java object.

This does a number of things. It turns Java object programmers into CORBA object programmers, and lets Java objects play in CORBA's multilanguage environment. (Unfortunately, it doesn't do anything for Java client programmers!) According to the first draft of EJB 1.1, it's a future requirement for Enterprise JavaBeans interoperability and will ensure that EJBs can play in this multilanguage environment as well.

It's not a round-trip mapping, quite intentionally. Since out and inout parameters don't occur in Java, the reverse mapping has no element that corresponds to the Holder classes in the IDL-to-Java mapping, and some IDL types will never occur in the IDL output from rmic. In some ways, though, the mapping is pretty clever: variables that appear only in Java set-and-get operations will be mapped to an IDL Attribute.

This specification is available from the Web at cgi.omg.org/corba/clchpter.html#jilm.

Firewall Specification
The CORBA 3 firewall specification defines transport-level firewalls, application-level firewalls and (perhaps most interesting) a bidirectional GIOP connection useful for callbacks and event notifications.

Transport-level firewalls work at the TCP level. By defining (courtesy of IANA) well-known ports 683 for IIOP and 684 for IIOP over SSL, the specification allows administrators to configure firewalls to cope with CORBA traffic over the IIOP protocol. There is also a specification for CORBA over SOCKS.

In CORBA, objects frequently need to call back or notify the client that invoked them; for this the objects act as clients and the client-side module instantiates an object that's called back in a reverse-direction invocation. Because standard CORBA connections carry invocations only one way, a callback typically requires a second TCP connection for this traffic heading in the other direction - a no-no to virtually every firewall in existence. Under the new specification, an IIOP connection is allowed to carry invocations in the reverse direction under certain restrictive conditions that don't compromise the security at either end of the connection. The firewall specification comprises two documents: www.omg.org/cgi-bin/doc?orbos/98-05-04 and an erratum, www.omg.org/cgi-bin/doc?orbos/98-07-04.

Interoperable Naming Service
The CORBA object reference is a cornerstone of the architecture. Because the computer-readable IOR was (until this service) the only way to reach an instance and invoke it, there was no way to reach a remote instance - even if you knew its location and that it was up and running - unless you could get access to its object reference. The easiest way to do that was to get a reference to its naming service, but what if you didn't have a reference even for that?

The interoperable naming service defines one URL-format object reference, iioploc, that can be typed into a program to reach defined services at a remote location, including the naming service. A second URL format, iiopname, actually invokes the remote naming service using the name that the user appends to the URL, and retrieves the IOR of the named object.

For example, an iioploc identifier, iioploc://www.omg.org/NameService, would resolve to the CORBA naming service running on the machine whose IP address corresponded to the domain name www.omg.org (if we had a name server running here at OMG). The URL for the interoperable naming service specification is www.omg.org/cgi-bin/doc?orbos/98-10-11.

Quality of Service Control
Asynchronous Messaging and Quality of Service Control
The new messaging specification defines a number of asynchronous and time-independent invocation modes for CORBA, and allows both static and dynamic invocations to use every mode. Results of asynchronous invocations may be retrieved by polling or callback - the choice is made by the form used by the client in the original invocation.

Policies allow control of quality of service of invocations. Clients and objects may control ordering (by time, priority or deadline); set priority, deadlines and time-to-live; set start and end times for time-sensitive invocations; and control routing policy and network routing hop count.

The specification also defines CORBA routers and store-and-forward agents for IIOP invocations. Routers with the highest defined quality of service will pass invocations with a transaction-like handshake and store invocations persistently, providing messaging-like network transmission. The routing specification defines IDL interfaces to the marshaling engine, an interesting piece of work in itself.

The URL for the messaging specification is www.omg.org/cgi-bin/doc?orbos/98-05-05.

Minimum, Fault-Tolerant and Real-Time CORBA
Minimum CORBA is intended primarily for embedded systems. Embedded systems, once they are finalized and burned into chips for production, are fixed, and their interactions with the outside network are predictable - they have no need for the dynamic aspects of CORBA, such as the DII or the IR that supports it, which is why these features are not included in minimum CORBA. The URL for the minimum CORBA specification is www.omg.org/cgi-bin/doc?orbos/98-08-04.

Real-time CORBA standardizes resource control - threads, protocols, connections and so on - using priority models to achieve predictable behavior for both hard and statistical realtime environments. Dynamic scheduling, not a part of the current specification, is being added via a separate RFP. The URL for the real-time CORBA specification is cgi.omg.org/cgi bin/doc?orbos/99-02-12; an erratum is www.omg.org/cgi-bin/doc?orbos/99-03-29.

Fault tolerance for CORBA is being addressed by an RFP, also in process, for a standard based on entity redundancy and fault management control. The URL for all information on this RFP is www.omg.org/techprocess/meetings/schedule/Fault_Tolerance_RFP.html.

Corba Components Package
CORBA Objects Passable by Value
Termed valuetypes, objects passable by value add a new dimension to the CORBA architecture that previously supported passing (and invocation) only by reference. Like conventional CORBA objects, these entities have state and methods; unlike CORBA objects, they don't (typically) have object references and are invoked in-process as programming language objects. It's only when they're included in parameter lists of CORBA invocations that they show their talent by packaging up their state in the sending context, sending it over the wire to the receiving context, creating a running instance of the object there and populating it with the transmitted state. Frequently used to represent nodes in binary trees or cyclically linked lists, valuetypes have been specified and implemented to faithfully represent these important constructs. This specification gives CORBA the capability of the Java serializable, and is used extensively in both the reverse mapping and component model. The valuetype specification may be downloaded from URLs www.omg.org/cgi-bin/doc?formal/99-07-09 and www.omg.org/cgi-bin/doc?formal/99-07-10. Many aspects of valuetypes show only in the language mappings; for these go to cgi.omg.org/library/clangindx.html.

CORBA Components and CORBA Scripting
The CCM takes the key services you use most regularly - persistence, transactions, security and notification - combines them with the POA's servant-handling capability, and wraps all these tools in higher-level interfaces corresponding to the patterns that experienced programmers use to code enterprise and Internet server applications.

This means that:

  • CCM applications are very compact. They use little code, and the little that's required is devoted almost totally to business programming.
  • Infrastructure functions - storing data, activating and deactivating servants - are done automatically and coded automatically as well.
  • CCM implementations will be built around an industrial-strength infrastructure written by specialists and tuned for optimum performance in stressed environments, including the enterprise and Internet. When this infrastructure runs your CCM application in its tuned environment, you automatically get the benefits - high throughput, great performance, robustness - even though you don't have to write any infrastructure code, or even code to POA and CORBA services interfaces.

The four major parts of the CCM are:

  • A model that presents common functionality - transactions, security, event handling, persistence - to the programmer at a high level using declarative languages and, optionally, visual tool
  • A container environment that packages (at the basic conformance level) transactions and security, adding (at the extended conformance level) persistence and event handling
  • A software distribution format that enables a CORBA component software marketplace
  • Integration with Enterprise JavaBeans
Component model functions are packaged and presented to programmers at a higher level of abstraction than are the bare CORBA services. Component interfaces are declared using newly standardized additions to OMG IDL. Components declare their persistent state using Persistent State Definition Language (PSDL, a superset of OMG IDL), defined in the new PSS (a new CORBA service not presented here). Programmers then use Component Implementation Definition Language (CIDL, an extension of PSDL) to declare some of the component's behavior; CCM products use these declarations to generate code for parts of the implementation. Finally, an XML-based configuration language ties components together in assemblies and configures them for individual installations. Because these new languages work at higher levels of abstraction than CORBA and the CORBA services, business programmers can write enterprise- and Internet-level applications with less help (perhaps no help!) from infrastructure experts. In addition, some of the languages were designed to be generated by visual tools.

One objective of CCM is to allow you to write distributed applications that mix CORBA components running in CORBA component servers with EJBs running in EJB-technology-based servers. This allows programmers to create an application by reusing existing components of either kind. To accommodate EJBs the CCM defines two levels of containers and conformance: the basic level container is transactional and secure, and provides simple persistence; its definition corresponds, almost feature for feature, to EJB 1.1. To this the extended-level container adds container-managed (and -implemented) persistence for multiple segments, event handling, multiple interfaces and navigation. The specification covers all of the various ways that CORBA clients can interact with EJBs and how Java clients can interact with CORBA components. We'll go over details of these CCM/EJB interactions in a future column. Since every container presents its services to components through the same set of standardized interfaces, component applications are portable from any vendor's container to another's. A basic-level container packages up subsets of the CORBA Transaction Service, CORBA security, and simple persistence in a new set of interfaces. At level 2 the container adds more of the PSS and a subset of notification service. It's not necessary for a container implementation to furnish its own persistence service; the specification assumes that CCM products will use any standard PSS and that your site administrator will buy and install one. Of course, vendors are free to package PSS and CCM together if they want. Level 1 containers must include Transaction and Security support, however, and level 2 containers have to add their own event handling capability.

Extended CORBA components support multiple interfaces. The CCM defines interfaces, provided by the container, that allow a component-aware client application to navigate among them. To component-unaware clients - including all clients written in a CORBA 2 environment - each interface appears to be an individual CORBA object; these clients can't take advantage of the implementation's component nature but can invoke it as a normal CORBA object without any trouble.

To help build a market in components, the CCM defines a software distribution format with several notable features. The distribution format contains executables for all of the platforms a vendor wants to support, in a type of zip file. Installer code, built into the container, extracts and installs the proper executable for the platform it's going to run on. Following installation, component executables can be configured. This overcomes another resistance point - that it's rare to find two installations that need exactly the same piece of functionality. By building and selling flexible modules to wider markets, vendors can attain the volumes they need and the component market will build to critical mass.

Configuration files contain information on events emitted and consumed by components, at least at the extended level. Containers construct channels for the events and transmit them at runtime. Since CCM applications typically consist of several component types, the container will also have to connect up an invocation by one type to an interface on another; this also is specified in the configuration file and install-time configuration process. By the way, configuration files use XML format.

There's also a scripting language specification that will map various scripting languages to the CCM. This will add another way to assemble components into applications, in addition to the XML-based assembly tools described in the CCM. We'll devote a column to this sometime in the future too.

The CCM and scripting specifications hadn't completed their final votes when this column was written, but may be a done deal by the time you read it. Check out www.omg.org/techprocess/meetings/schedule/CORBA_Component_Model_RFP.html and cgi.omg.org/techprocess/meetings/schedule/CORBA_Scripting_Language_RFP.html for details, and to download your own copy of the 700-page CCM document.

Summing Up...
CORBA does as much as it can to support every programming language and platform. Because Java's object model aligns closely with CORBA's, and Java's Virtual Machine is platform-portable, CORBA is able to do more with it than with other languages, and this shows in the specifications we've reviewed in this month's column. We think this bodes well for productivity and popularity on both the CORBA and Java sides of the aisle, and I may muse more about it in a future column.

More Stories By Jon Siegel

Jon Siegel, the Object Management Group’s director of technology transfer, was an early practitioner of distributed computing and OO software development. Jon writes articles and presents tutorials and seminars about CORBA.

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
BnkToTheFuture.com is the largest online investment platform for investing in FinTech, Bitcoin and Blockchain companies. We believe the future of finance looks very different from the past and we aim to invest and provide trading opportunities for qualifying investors that want to build a portfolio in the sector in compliance with international financial regulations.
A strange thing is happening along the way to the Internet of Things, namely far too many devices to work with and manage. It has become clear that we'll need much higher efficiency user experiences that can allow us to more easily and scalably work with the thousands of devices that will soon be in each of our lives. Enter the conversational interface revolution, combining bots we can literally talk with, gesture to, and even direct with our thoughts, with embedded artificial intelligence, whic...
Imagine if you will, a retail floor so densely packed with sensors that they can pick up the movements of insects scurrying across a store aisle. Or a component of a piece of factory equipment so well-instrumented that its digital twin provides resolution down to the micrometer.
In his keynote at 18th Cloud Expo, Andrew Keys, Co-Founder of ConsenSys Enterprise, provided an overview of the evolution of the Internet and the Database and the future of their combination – the Blockchain. Andrew Keys is Co-Founder of ConsenSys Enterprise. He comes to ConsenSys Enterprise with capital markets, technology and entrepreneurial experience. Previously, he worked for UBS investment bank in equities analysis. Later, he was responsible for the creation and distribution of life settle...
Product connectivity goes hand and hand these days with increased use of personal data. New IoT devices are becoming more personalized than ever before. In his session at 22nd Cloud Expo | DXWorld Expo, Nicolas Fierro, CEO of MIMIR Blockchain Solutions, will discuss how in order to protect your data and privacy, IoT applications need to embrace Blockchain technology for a new level of product security never before seen - or needed.
Leading companies, from the Global Fortune 500 to the smallest companies, are adopting hybrid cloud as the path to business advantage. Hybrid cloud depends on cloud services and on-premises infrastructure working in unison. Successful implementations require new levels of data mobility, enabled by an automated and seamless flow across on-premises and cloud resources. In his general session at 21st Cloud Expo, Greg Tevis, an IBM Storage Software Technical Strategist and Customer Solution Architec...
Nordstrom is transforming the way that they do business and the cloud is the key to enabling speed and hyper personalized customer experiences. In his session at 21st Cloud Expo, Ken Schow, VP of Engineering at Nordstrom, discussed some of the key learnings and common pitfalls of large enterprises moving to the cloud. This includes strategies around choosing a cloud provider(s), architecture, and lessons learned. In addition, he covered some of the best practices for structured team migration an...
No hype cycles or predictions of a gazillion things here. IoT is here. You get it. You know your business and have great ideas for a business transformation strategy. What comes next? Time to make it happen. In his session at @ThingsExpo, Jay Mason, an Associate Partner of Analytics, IoT & Cybersecurity at M&S Consulting, presented a step-by-step plan to develop your technology implementation strategy. He also discussed the evaluation of communication standards and IoT messaging protocols, data...
Coca-Cola’s Google powered digital signage system lays the groundwork for a more valuable connection between Coke and its customers. Digital signs pair software with high-resolution displays so that a message can be changed instantly based on what the operator wants to communicate or sell. In their Day 3 Keynote at 21st Cloud Expo, Greg Chambers, Global Group Director, Digital Innovation, Coca-Cola, and Vidya Nagarajan, a Senior Product Manager at Google, discussed how from store operations and ...
In his session at 21st Cloud Expo, Raju Shreewastava, founder of Big Data Trunk, provided a fun and simple way to introduce Machine Leaning to anyone and everyone. He solved a machine learning problem and demonstrated an easy way to be able to do machine learning without even coding. Raju Shreewastava is the founder of Big Data Trunk (www.BigDataTrunk.com), a Big Data Training and consulting firm with offices in the United States. He previously led the data warehouse/business intelligence and B...
"IBM is really all in on blockchain. We take a look at sort of the history of blockchain ledger technologies. It started out with bitcoin, Ethereum, and IBM evaluated these particular blockchain technologies and found they were anonymous and permissionless and that many companies were looking for permissioned blockchain," stated René Bostic, Technical VP of the IBM Cloud Unit in North America, in this SYS-CON.tv interview at 21st Cloud Expo, held Oct 31 – Nov 2, 2017, at the Santa Clara Conventi...
When shopping for a new data processing platform for IoT solutions, many development teams want to be able to test-drive options before making a choice. Yet when evaluating an IoT solution, it’s simply not feasible to do so at scale with physical devices. Building a sensor simulator is the next best choice; however, generating a realistic simulation at very high TPS with ease of configurability is a formidable challenge. When dealing with multiple application or transport protocols, you would be...
Smart cities have the potential to change our lives at so many levels for citizens: less pollution, reduced parking obstacles, better health, education and more energy savings. Real-time data streaming and the Internet of Things (IoT) possess the power to turn this vision into a reality. However, most organizations today are building their data infrastructure to focus solely on addressing immediate business needs vs. a platform capable of quickly adapting emerging technologies to address future ...
We are given a desktop platform with Java 8 or Java 9 installed and seek to find a way to deploy high-performance Java applications that use Java 3D and/or Jogl without having to run an installer. We are subject to the constraint that the applications be signed and deployed so that they can be run in a trusted environment (i.e., outside of the sandbox). Further, we seek to do this in a way that does not depend on bundling a JRE with our applications, as this makes downloads and installations rat...
Widespread fragmentation is stalling the growth of the IIoT and making it difficult for partners to work together. The number of software platforms, apps, hardware and connectivity standards is creating paralysis among businesses that are afraid of being locked into a solution. EdgeX Foundry is unifying the community around a common IoT edge framework and an ecosystem of interoperable components.
DX World EXPO, LLC, a Lighthouse Point, Florida-based startup trade show producer and the creator of "DXWorldEXPO® - Digital Transformation Conference & Expo" has announced its executive management team. The team is headed by Levent Selamoglu, who has been named CEO. "Now is the time for a truly global DX event, to bring together the leading minds from the technology world in a conversation about Digital Transformation," he said in making the announcement.
In this strange new world where more and more power is drawn from business technology, companies are effectively straddling two paths on the road to innovation and transformation into digital enterprises. The first path is the heritage trail – with “legacy” technology forming the background. Here, extant technologies are transformed by core IT teams to provide more API-driven approaches. Legacy systems can restrict companies that are transitioning into digital enterprises. To truly become a lead...
Digital Transformation (DX) is not a "one-size-fits all" strategy. Each organization needs to develop its own unique, long-term DX plan. It must do so by realizing that we now live in a data-driven age, and that technologies such as Cloud Computing, Big Data, the IoT, Cognitive Computing, and Blockchain are only tools. In her general session at 21st Cloud Expo, Rebecca Wanta explained how the strategy must focus on DX and include a commitment from top management to create great IT jobs, monitor ...
"Cloud Academy is an enterprise training platform for the cloud, specifically public clouds. We offer guided learning experiences on AWS, Azure, Google Cloud and all the surrounding methodologies and technologies that you need to know and your teams need to know in order to leverage the full benefits of the cloud," explained Alex Brower, VP of Marketing at Cloud Academy, in this SYS-CON.tv interview at 21st Cloud Expo, held Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clar...
The IoT Will Grow: In what might be the most obvious prediction of the decade, the IoT will continue to expand next year, with more and more devices coming online every single day. What isn’t so obvious about this prediction: where that growth will occur. The retail, healthcare, and industrial/supply chain industries will likely see the greatest growth. Forrester Research has predicted the IoT will become “the backbone” of customer value as it continues to grow. It is no surprise that retail is ...