<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=CorbaScript</id>
	<title>CorbaScript - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=CorbaScript"/>
	<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=CorbaScript&amp;action=history"/>
	<updated>2026-04-11T09:21:40Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.sarg.dev/index.php?title=CorbaScript&amp;diff=314290&amp;oldid=prev</id>
		<title>imported&gt;Boleyn: has ref</title>
		<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=CorbaScript&amp;diff=314290&amp;oldid=prev"/>
		<updated>2025-10-10T08:56:10Z</updated>

		<summary type="html">&lt;p&gt;has ref&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Object-oriented scripting language}}&lt;br /&gt;
{{notability|date=October 2011}}&lt;br /&gt;
{{primarysources|date=April 2024}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorbaScript&amp;#039;&amp;#039;&amp;#039; is an [[object-oriented programming|object-oriented]] [[scripting language]] designed to support interaction with [[Common Object Request Broker Architecture]] ([[CORBA]]) objects. It was developed to provide a flexible scripting environment for both client- and server-side CORBA application development, leveraging dynamic invocation and interface reflection capabilities.&lt;br /&gt;
&lt;br /&gt;
CorbaScript is a dynamic, interpreted language whose syntax resembles that of [[C++]] and [[Java]]. However, it integrates several design elements from dynamic languages such as [[Python (programming language)|Python]] and [[Smalltalk]]. Like those languages, CorbaScript treats all values as objects and supports [[dynamic type checking]] at runtime. Source code is translated into pseudocode executed by a dedicated Virtual Object-Oriented Machine that includes a simple [[garbage collection (computer science)|reference-counting garbage collector]].&amp;lt;ref&amp;gt;[https://web.archive.org/web/20050422083703/http://corbaweb.lifl.fr/CorbaScript/#Features CorbaScript Features], corbaweb.lifl.fr (archived April 22, 2005)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
&lt;br /&gt;
===Basic scripting===&lt;br /&gt;
CorbaScript includes typical scripting features:&lt;br /&gt;
* Interpreted execution, suitable for both interactive mode and batch modes.&lt;br /&gt;
* Runtime type checking.&lt;br /&gt;
* Basic types including [[integer (computer science)|long]], [[double-precision floating-point format|double]], [[boolean]], [[character (computing)|char]], [[string (computer science)|string]], [[array data structure|array]], and [[associative array|dictionary]].&lt;br /&gt;
* Control structures such as [[If-then-else|if-else]], [[while loop|while]], do-while, and for-in.&lt;br /&gt;
* [[Exception handling]] using throw, try-catch-finally.&lt;br /&gt;
* User-defined procedures and modules (reusable script files).&lt;br /&gt;
* [[Object-oriented programming]] constructs, including [[class (computer programming)|classes]], [[multiple inheritance]], and [[polymorphism (computer science)|polymorphism]].&lt;br /&gt;
&lt;br /&gt;
The runtime includes a simple garbage collector based on [[reference counting]].&lt;br /&gt;
&lt;br /&gt;
===CORBA integration===&lt;br /&gt;
CorbaScript is tightly integrated with [[CORBA]] middleware and provides full access to both the [[Dynamic Invocation Interface]] (DII) and [[Dynamic Skeleton Interface]] (DSI):&lt;br /&gt;
* Invocation of any CORBA object via DII, enabling scripting of CORBA clients.&lt;br /&gt;
* Implementation of CORBA objects via DSI, allowing servers to be written in CorbaScript.&lt;br /&gt;
* Full support for [[Object Management Group|OMG]] [[Interface Definition Language]] (IDL)-defined data types, including complex types such as [[struct (C programming language)|struct]], [[union (computer science)|union]], [[sequence]] and [[array data structure|array]].&lt;br /&gt;
* Access to in, out, and inout parameters using the CORBA [[Dynamic Any|DynAny API]].&lt;br /&gt;
* Type checking supported via the [[Interface Repository]], with optional caching to improve performance.&lt;br /&gt;
* Scripting access to the structure of IDL interfaces for dynamic discovery and [[reflection (computer programming)|reflection]].&lt;br /&gt;
&lt;br /&gt;
===Advanced integration===&lt;br /&gt;
CorbaScript also includes additional capabilities beyond basic scripting:&lt;br /&gt;
* Dynamic loading of [[C (programming language)|C]] libraries for native code integration.&lt;br /&gt;
* Experimental support for interaction with a [[Java virtual machine|Java Virtual Machine]].&lt;br /&gt;
* Extensible runtime that allows embedding new functionality in [[C++]].&lt;br /&gt;
&lt;br /&gt;
==Modules==&lt;br /&gt;
CorbaScript allows any script to function as an importable module. Some standard modules include:&lt;br /&gt;
* LIBC: dynamic access to standard C library functions.&lt;br /&gt;
* IO: support for reading/writing binary and text files.&lt;br /&gt;
* [[Mathematics|math]]: standard math operations.&lt;br /&gt;
* [[POSIX]]: POSIX system calls like system() and fork().&lt;br /&gt;
* [[Network socket|socket]]: TCP/IP networking support.&lt;br /&gt;
* IOR: simplified storage/retrieval of CORBA object references (IORs).&lt;br /&gt;
* NSTools and CosNamingImpl: tools and implementation for managing the CORBA [[Naming service]].&lt;br /&gt;
* shell: base class for creating shell programs.&lt;br /&gt;
* [[Simple Mail Transfer Protocol|SMTP]]: a basic SMTP implementation.&lt;br /&gt;
* [[Unix time|time]]: date and time utilities.&lt;br /&gt;
&lt;br /&gt;
==Demonstrations==&lt;br /&gt;
A number of example applications and tools are included in the CorbaScript distribution:&lt;br /&gt;
* hello: a basic CORBA client/server &amp;quot;Hello World&amp;quot; application.&lt;br /&gt;
* calc: a simple calculator service.&lt;br /&gt;
* chat: a chat system implementing [[factory method pattern|factory]] and [[observer pattern|observer design patterns]].&lt;br /&gt;
* component: client callback components using implicit connections.&lt;br /&gt;
* computer: a distributed prime number service.&lt;br /&gt;
* event: [[event-driven programming|event channel]] implementation using the OMG Event Service.&lt;br /&gt;
* grid: factory pattern for grid objects.&lt;br /&gt;
* ir: navigation through the CORBA Interface Repository.&lt;br /&gt;
* linked: demonstration of recursive object invocation.&lt;br /&gt;
* naming: integration with the CORBA Naming Service.&lt;br /&gt;
* test: argument type and passing mode demonstrations.&lt;br /&gt;
* worker: client-server example using [[asynchronous procedure call|deferred (asynchronous) invocations]].&lt;br /&gt;
* remote_cssh: scripting engine interface using OMG IDL and shell-based remote invocation.&lt;br /&gt;
* process: CORBA object access and factory pattern using [[Uniform Resource Locator|URLs]].&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===Hello Example===&lt;br /&gt;
&lt;br /&gt;
The following illustrates how CorbaScript can be used to interact with a CORBA object defined by the following OMG IDL interface:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;omg-idl&amp;quot;&amp;gt;&lt;br /&gt;
interface Hello {&lt;br /&gt;
  void hello ();&lt;br /&gt;
  void display (in string message);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using CorbaScript, you can invoke operations on a CORBA object implementing this interface:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pycon&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # the `hello` variable refers to a CORBA `Hello` object.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; hello = Hello(&amp;quot;IOR:....&amp;quot;)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # invoking the &amp;#039;hello&amp;#039; operation&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; hello.hello()&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # invoking the &amp;#039;display&amp;#039; operation&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; hello.display(&amp;quot;Hello World!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # obtain the CORBA Naming Service&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; NS = CORBA.ORB.resolve_initial_references (&amp;quot;NameService&amp;quot;)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # resolve a name in the CORBA Naming Service&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; object = NS.resolve(CosNaming.Name(CosNaming.NameComponent(&amp;quot;anHelloObject&amp;quot;,&amp;quot;&amp;quot;)))&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # easier syntax with automatic sequence conversion&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; object = NS.resolve ([[&amp;quot;anHelloObject&amp;quot;,&amp;quot;&amp;quot;]])&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # invoke operations on the resolved object&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; object.display(&amp;quot;Hello World!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CorbaScript allows for easy and intuitive invocation of CORBA objects.&lt;br /&gt;
&lt;br /&gt;
===Implementing CORBA objects in CorbaScript===&lt;br /&gt;
&lt;br /&gt;
The following example demonstrates implementing the `Hello` interface in CorbaScript:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    # define a script class implementing the Hello interface&lt;br /&gt;
    class HelloImpl&lt;br /&gt;
    {&lt;br /&gt;
      # constructor&lt;br /&gt;
      proc __HelloImpl__(self) {}&lt;br /&gt;
&lt;br /&gt;
      # implementation of the `hello` operation&lt;br /&gt;
      proc hello (self) {&lt;br /&gt;
        println (&amp;quot;The OMG IDL `hello` operation is invoked.&amp;quot;)&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      # implementation of the `display` operation&lt;br /&gt;
      proc display (self, message) {&lt;br /&gt;
        println (message)&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pycon&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # create an instance&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; hello = HelloImpl()&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # local invocation&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; hello.hello()&lt;br /&gt;
The OMG IDL `hello` operation is invoked.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; hello.display(&amp;quot;Hello World!&amp;quot;)&lt;br /&gt;
Hello World!&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # connect to CORBA and specify implemented interface&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; CORBA.ORB.connect(hello, Hello)&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # register the object in the CORBA Naming Service&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; NS = CORBA.ORB.resolve_initial_references (&amp;quot;NameService&amp;quot;)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; NS.bind ([[&amp;quot;anHelloObject&amp;quot;,&amp;quot;&amp;quot;]], hello._this)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how CorbaScript simplifies both the invocation and implementation of CORBA objects. Additional examples, such as a CORBA Naming Service shell and a CORBA CosNaming implementation, are provided in the CorbaScript distribution.&lt;br /&gt;
&lt;br /&gt;
==Availability==&lt;br /&gt;
The CorbaScript interpreter is implemented in [[C++]] and is available on most major [[Unix]]-based systems as well as on [[Microsoft Windows|Windows]].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://web.archive.org/web/20050422083703/http://corbaweb.lifl.fr/CorbaScript/ The CorbaScript Language (archived)]&lt;br /&gt;
* [http://www.omg.org/cgi-bin/doc?orbos/98-12-08 CORBA Scripting joint revised submission]&lt;br /&gt;
* [https://web.archive.org/web/20010512143952/http://www.itworld.com/AppDev/4061/UIR010502regex1/pfindex.html Regular Expressions: Manage CORBA with scripting] – ITworld&lt;br /&gt;
* [https://web.archive.org/web/20040108071216/http://corbaweb.lifl.fr/papers/ebi.pdf IDLScript/CorbaScript Tutorial] by [[Christophe Gransart]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Object-oriented programming languages]]&lt;br /&gt;
[[Category:Scripting languages]]&lt;br /&gt;
[[Category:Common Object Request Broker Architecture]]&lt;br /&gt;
[[Category:Programming languages]]&lt;br /&gt;
&lt;br /&gt;
{{Compu-lang-stub}}&lt;/div&gt;</summary>
		<author><name>imported&gt;Boleyn</name></author>
	</entry>
</feed>