CorbaScript fully hides these complex CORBA mechanisms via a simple, attractive and powerful scripting language. Finally CorbaScript is the first implementation of the OMG's IDL Script specification.
Some other documents:
Commercial CorbaScript distributor sites:
CorbaScript can be compiled on the following ORBs:
The 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.0.8, 2.1.0,
2.2.0, 2.2.1, 2.2.3, 2.2.4, 2.2.5, 2.2.6, 2.2.7,
2.3.0, 2.3.1, 2.3.3, 2.3.4, 2.3.5, and 2.3.6 releases.
For the 2.2.7, 2.3.1, and 2.3.3 releases, see patches into the
FAQ/MICO file.
The 5.2.7, 5.2.8, 5.2.9 and 5.3.4 releases.
The 2.0.2, 2.0.3 and 2.0.4 releases.
The 2.8.0, 3.0.3, and 3.0.4 releases.
Require the omniifr package available at
http://www.factoriax.com/projects/omniifr/
or a lastest ORBacus 3.x Interface Repository.
The 3.0, 3.0.1, 3.1, 3.1.1, 3.1.2, 3.1.3, 3.2, 3.2.1, 3.3, 3.3.1, 3.3.2, 3.3.3, 3.3.4,
4.0, 4.0.1, 4.0.2, 4.0.3, 4.0.4, 4.0.5, and 4.1.0 releases.
For the 3.3 release, see patches into the
FAQ/ORBacus file.
The 1.2, 1.2.1, and 2.0 releases.
The 1.0.9, 1.0.10, 1.0.11, 1.0.12, 1.0.13, 1.1,
1.1.17, 1.1.18, 1.1.19, and 1.2 releases.
Releases between 1.1.1 and 1.1.16 can not be supported due to some
important changes around the TAO's Interface Repository stubs.
Before release 1.1, it is needed to use a lastest ORBacus 3.x Interface Repository.
For the 1.1.17 and 1.1.19 releases, see patches into the
FAQ/TAO file.
For the 1.1.18 release, no patches are required!
The 3.2, 3.3 and 4.5 releases.
Warning, releases 4.0 and 4.1 are not supported!
CorbaScript can be compiled on the following C++ compilers:
Currently, CorbaScript has been successfully tested on the following configurations:
ORB OS C++ Compiler NAME ------------------------------------------------------------------------------ MICO any any MICO_GENERIC MICO_GENERIC_shared_libs MICO AIX GNU C++ Compiler 2.7.2 MICO_AIX_GCC MICO AIX egcs 1.0.1 MICO_GENERIC MICO HP-UX egcs 1.0.1 MICO_GENERIC MICO Linux egcs 1.0.2 MICO_GENERIC MICO Linux GNU C++ Compiler 2.7.2 MICO_LINUX_GCC MICO Solaris egcs 1.0.1 MICO_GENERIC MICO Solaris GNU C++ Compiler 2.7.2 MICO_SUN_GCC MICO Solaris GNU C++ Compiler 2.95.1 MICO_GENERIC MICO Solaris SUN C++ Compiler 4.1 and 4.2 MICO_GENERIC MICO Windows 95/NT Cygnus egcs 1.1 MICO_GENERIC MICO Windows 95/NT MS Visual C++ 5.0/6.0 MICO_WIN_MSVC OAK Linux egcs OAK_LINUX_EGCS OAK Solaris GNU C++ Compiler 2.8.1 OAK_SUN_GCC OAK Solaris SUN C++ Compiler 4.1 and 4.2 OAK_SUN_CC OAK Windows NT MS Visual C++ 5.0/6.0 OAK_WIN_MSVC OmniBroker AIX 4.2 AIX C Set ++ (xlC 3.1.4.6) OB_AIX_xlC OmniBroker HP-UX aC++ A.01.00 and A.01.03 OB_HP_aCC OmniBroker Linux GNU C++ Compiler 2.7.2 OB_LINUX_GCC OmniBroker Solaris GNU C++ Compiler 2.7.2 OB_SUN_GCC272 OmniBroker Solaris GNU C++ Compiler 2.8.1 OB_SUN_GCC281 OmniBroker Solaris SUN C++ Compiler 4.1 and 4.2 OB_SUN_CC OmniBroker IRIX SGI SGI C++ Compiler 7.0.1 and 7.1 OB_SGI_CC OmniBroker Windows 95/NT MS Visual C++ 5.0/6.0 OB_WIN_MSVC omniORB 2.8.0 Linux egcs 1.0.2/1.1 omniORB2_LINUX_EGCS omniORB 2.8.0 Solaris SUN C++ Compiler 4.1 and 4.2 omniORB2_SUN_CC omniORB 2.8.0 Windows 95/NT MS Visual C++ 5.0/6.0 omniORB2_WIN_MSVC omniORB 3.0.3 Linux GNU C++ Compiler 2.95.x omniORB3_LINUX_GCC295 omniORB3_LINUX_GCC295_shared_libs omniORB 3.0.3 Solaris GNU C++ Compiler 2.95.x omniORB3_SUN55_GCC295 omniORB3_SUN55_GCC295_shared_libs omniORB3_SUN57_GCC295 omniORB3_SUN57_GCC295_shared_libs omniORB 3.0.3 Solaris SUN C++ Compiler 4.2 omniORB3_SUN_CC omniORB 3.0.3 Windows 95/NT MS Visual C++ 5.0/6.0 omniORB3_WIN_MSVC ORBacus 3.x HP-UX aC++ A.01.xx OB3_HP_aCC ORBacus 3.x Linux egcs 1.0.2/1.1 OB3_LINUX_EGCS OB3_LINUX_EGCS_shared_libs ORBacus 3.x Linux GNU C++ Compiler 2.95.x OB3_LINUX_GCC295 OB3_LINUX_GCC295_shared_libs ORBacus 3.x OSF1 V4.0 GNU C++ Compiler 2.7.2 OB3_OSF_GCC ORBacus 3.x Solaris GNU C++ Compiler 2.7.2 OB3_SUN_GCC ORBacus 3.x Solaris GNU C++ Compiler 2.8.1 OB3_SUN_GCC281 ORBacus 3.x Solaris GNU C++ Compiler 2.95.1 OB3_SUN_GCC295 OB3_SUN_GCC295_shared_libs ORBacus 3.x Solaris SUN C++ Compiler 4.1 and 4.2 OB3_SUN_CC ORBacus 3.x Windows 95/NT MS Visual C++ 5.0/6.0 OB3_WIN_MSVC ORBacus 4.x HP-UX aC++ A.01.xx OB4_HP_aCC ORBacus 4.x Linux GNU C++ Compiler 2.95.x OB4_LINUX_GCC295 OB4_LINUX_GCC295_shared_libs ORBacus 4.x OSF1 V4.0 DEC C++ 6.2-024 OB4_OSF_cxx ORBacus 4.x Solaris GNU C++ Compiler 2.95.1 OB4_SUN_GCC295 OB4_SUN_GCC295_shared_libs ORBacus 4.x Solaris SUN C++ Compiler 5.x OB4_SUN_CC ORBacus 4.x Windows 95/NT MS Visual C++ 5.0/6.0 OB4_WIN_MSVC Orbix2000 Linux GNU C++ Compiler 2.95.x Orbix2000_LINUX_GCC295 Orbix2000 Solaris SUN C++ Compiler 4.1 and 4.2 Orbix2000_SUN_CC Orbix2000 Solaris GNU C++ Compiler 2.95.x Orbix2000_SUN_GCC295 Orbix2000 Windows 95/NT MS Visual C++ 5.0/6.0 Orbix2000_WIN_MSVC TAO 1.1 Solaris GNU C++ Compiler 2.95.1 TAO_1_1_SUN_GCC295 TAO 1.1 Solaris SUN C++ Compiler 4.1 and 4.2 TAO_1_1_SUN_CC TAO 1.1 Windows 95/NT MS Visual C++ 5.0/6.0 TAO_1_1_WIN_MSVC TAO 1.2 Linux GNU C++ Compiler 2.95.x TAO_1_2_LINUX_GCC295 TAO_1_2_LINUX_GCC295_shared_libs TAO 1.2 Solaris GNU C++ Compiler 2.95.1 TAO_1_2_SUN_GCC295 TAO_1_2_SUN_GCC295_shared_libs TAO 1.2 Solaris SUN C++ Compiler 4.2 TAO_1_2_SUN_CC TAO 1.2 Windows 95/NT MS Visual C++ 5.0/6.0 TAO_1_2_WIN_MSVC VisiBroker 3.3.x HP-UX aC++ A.01.15 VB3_HP_aCC VisiBroker 3.3 Solaris GNU C++ Compiler 2.95.1 VB3_SUN_GCC295 VisiBroker 3.3 Solaris SUN C++ Compiler 4.1 and 4.2 VB3_SUN_CC VisiBroker 3.3 Windows 95/NT MS Visual C++ 5.0/6.0 VB3_WIN_MSVC VisiBroker 4.5 Linux GNU C++ Compiler 2.95.x VB4_LINUX_GCC295 VisiBroker 4.5 Solaris SUN C++ Compiler 5.2 VB4_SUN_CC VisiBroker 4.5 Windows 2000 MS Visual C++ 5.0/6.0 VB4_WIN_MSVC ------------------------------------------------------------------------------
CorbaScript is ported on the following configurations but it does not work correctly.
ORB OS C++ Compiler NAME ------------------------------------------------------------------------------ ORBacus AIX 4.2 AIX C Set ++ (xlC 3.1.4.6) OB3_AIX_xlC ORBacus OSF1 V4.0 DIGITAL C++ V6.0-010 OB3_OSF_cxx VisiBroker 3.2 Solaris SUN C++ Compiler 4.1 and 4.2 VB3_SUN_CC VisiBroker 3.x IRIX SGI SGI C++ Compiler 7.0.1 and 7.1 VB3_SGI_CC VisiBroker 3.x HP-UX aC++ A.01.xx VB3_HP_aCC VisiBroker 3.2 Windows 95/NT MS Visual C++ 5.0 VB3_WIN_MSVC ------------------------------------------------------------------------------
The following ports can be compiled but don't work correctly (perhaps due to the broken exception handling in GNU C++ 2.7.2).
ORB OS C++ Compiler NAME ------------------------------------------------------------------------------ OmniBroker 2.0.3 HP-UX GNU C++ Compiler 2.7.2 OB_HP_GCC OmniBroker 2.0.3 IRIX SGI GNU C++ Compiler 2.7.2 OB_SGI_GCC MICO 2.0.4 IRIX SGI GNU C++ Compiler 2.7.2 MICO_SGI_GCC ------------------------------------------------------------------------------
If you try to compile CorbaScript on other configurations (ORB/OS/C++ compiler), please report us any problem and/or success. In future releases, we plan to port CorbaScript on:
Please contact us for other ports on another ORB, another OS or another C++ compiler.
Note that there is no direct plan to support the Orbix 3.0
product because currently,
it does not provide the DynAny API. However, Orbix servers can be
invoked by a CorbaScript interpreter if they were compiled to support the
Internet Inter-Orb Protocol.
However CorbaScript supports the better Orbix 2000 product;-)
CorbaScript is an academic project available in full source form and
free of charge for any use.
Try it and give us feedback to improve it.
Click here to download CorbaScript 1.3.5 now!
interface Hello {
void hello ();
void display (in string message);
};
With CorbaScript, we can interactively invoke a CORBA object that implements
this OMG IDL interface:
unix_prompt> cssh
CorbaScript 1.3.5 (Jul 20 2001) for ORBacus 4.0.5 for C++
Copyright 1996-2001 LIFL, France
>>> # the `hello' variable refers to a CORBA `Hello' object.
>>> hello = Hello("IOR:....")
>>> # the 'hello' operation is invoked on this CORBA object.
>>> hello.hello()
>>> # the 'display' operation is invoked on this CORBA object.
>>> hello.display("Hello World!")
>>> # we obtain the CORBA Naming Service.
>>> NS = CORBA.ORB.resolve_initial_references ("NameService")
>>> # we resolve a name into the CORBA Naming Service.
>>> object = NS.resolve(CosNaming.Name(CosNaming.NameComponent("anHelloObject","")))
>>> # we can use an easier syntax because CorbaScript can automatically
>>> # convert array values into OMG IDL sequences and structures.
>>> object = NS.resolve ([["anHelloObject",""]])
>>> # Now we can invoke OMG IDL Hello operations on this object.
>>> object.display("Hello World!")
Then invoking CORBA objects becomes very simple and user-friendly with CorbaScript.
But, how could we implement the `Hello' interface with CorbaScript?
unix_prompt> cssh
CorbaScript 1.3.5 (Jul 20 2001) for ORBacus 4.0.5 for C++
Copyright 1996-2001 LIFL, France
>>> # a script class is defined.
>>> class HelloImpl
{
# This is the constructor.
proc __HelloImpl__(self)
{
}
# This is the implementation of the OMG IDL `hello' operation.
proc hello (self)
{
println ("The OMG IDL `hello' operation is invoked.")
}
# This is the implementation of the OMG IDL `display' operation.
proc display (self,message)
{
println (message)
}
}
>>> # we create an HelloImpl instance.
>>> hello = HelloImpl()
>>> # We can locally invoke this instance.
>>> hello.hello()
The OMG IDL `hello' operation is invoked.
>>> hello.display("Hello World!")
Hello World!
>>> # Now we connect it to the CORBA bus and fix what
>>> # OMG IDL interface this instance implements.
>>> CORBA.ORB.connect(hello,Hello)
>>> # we register it into the CORBA Naming Service.
>>> NS = CORBA.ORB.resolve_initial_references ("NameService")
>>> NS.bind ([["anHelloObject",""]],hello._this)
>>> # Now, this instance is an available CORBA object.
What do you think about this small example?
More complex examples are provided in the CorbaScript distribution like a CORBA Naming Service shell and a CORBA CosNaming implementation.
Technically, CorbaWeb is composed of two parts:
Then users access via their browsers to the CorbaWeb servlet running into the HttpServer. Automatically, CorbaWeb generates HTML forms representing OMG IDL operations and attributes of CORBA objects accessed by users. These forms allow users to invoke operations, get and set attributes.
Moreover, the CorbaWeb administrator can provide scripts to specialize the Web representation for each CORBA object type. Some specialization scripts are already provided for the CorbaScript demonstrations. Interesting and reusable scripts allow one to browse:
Currently, we have only tested CorbaWeb on the following configurations:
As the C++ code implementing CorbaScript never manipulates times and dates then CorbaScript is fully Year 2000 compliant.
But as CorbaScript uses an ORB product which uses an operating system then CorbaScript will perfectly work after Year 2000 as long as the used ORB and OS is compliant with the Year 2000 :-)
As CorbaWeb is fully written in CorbaScript then it is also Year 2000 compliant.
Here are listed some CorbaScript users' contributions:
We would also like to thank all the following people who have also contributed to CorbaScript over the years:
You should not have any problems compiling the source, but do not hesitate to send requests for assistance.
Just send an e-mail to goode-support@lifl.fr.
There is also a CorbaScript mailing list. To subscribe, just send an e-mail to listserv@univ-lille1.fr with the command:
SUB goode Your_Real_Name
in the body of your e-mail message.
To unsubscribe, just send an e-mail to listserv@univ-lille1.fr with the command:
SIG goode Your_Email_Address
in the body of your e-mail message.
You could also go to
http://wwsympa.univ-lille1.fr/wws/signoff/goode
to unsubscribe yourself.
To post a message to the mailing list, send your message as an e-mail to goode@univ-lille1.fr.
This public mailing list is also accessible at: http://wwsympa.univ-lille1.fr/wws/info/goode
And public list archives are accessible at: http://wwsympa.univ-lille1.fr/wws/arc/goode
You can find the latest information on CorbaScript on our Web-Site http://corbaweb.lifl.fr.
Some scientific information can be found in papers.